Encrypted messaging app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
929 B

  1. package Database
  2. import (
  3. "time"
  4. "github.com/gofrs/uuid"
  5. "gorm.io/gorm/clause"
  6. )
  7. func (s Session) IsExpired() bool {
  8. return s.Expiry.Before(time.Now())
  9. }
  10. type Session struct {
  11. Base
  12. UserID uuid.UUID `gorm:"type:uuid;column:user_id;not null;"`
  13. User User
  14. Expiry time.Time
  15. }
  16. // GetSessionByID Gets session
  17. func GetSessionByID(id string) (Session, error) {
  18. var (
  19. session Session
  20. err error
  21. )
  22. err = DB.Preload(clause.Associations).
  23. First(&session, "id = ?", id).
  24. Error
  25. return session, err
  26. }
  27. // CreateSession creates session
  28. func (session *Session) CreateSession() error {
  29. var (
  30. err error
  31. )
  32. err = DB.Create(session).Error
  33. return err
  34. }
  35. // DeleteSession deletes session
  36. func (session *Session) DeleteSession() error {
  37. return DB.Delete(session).Error
  38. }
  39. // DeleteSessionByID deletes session
  40. func DeleteSessionByID(id string) error {
  41. return DB.Delete(
  42. &Session{},
  43. "id = ?",
  44. id,
  45. ).Error
  46. }