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

package Database
import (
"time"
"github.com/gofrs/uuid"
"gorm.io/gorm/clause"
)
func (s Session) IsExpired() bool {
return s.Expiry.Before(time.Now())
}
type Session struct {
Base
UserID uuid.UUID `gorm:"type:uuid;column:user_id;not null;"`
User User
Expiry time.Time
}
// GetSessionByID Gets session
func GetSessionByID(id string) (Session, error) {
var (
session Session
err error
)
err = DB.Preload(clause.Associations).
First(&session, "id = ?", id).
Error
return session, err
}
// CreateSession creates session
func (session *Session) CreateSession() error {
var (
err error
)
err = DB.Create(session).Error
return err
}
// DeleteSession deletes session
func (session *Session) DeleteSession() error {
return DB.Delete(session).Error
}
// DeleteSessionByID deletes session
func DeleteSessionByID(id string) error {
return DB.Delete(
&Session{},
"id = ?",
id,
).Error
}