|
- package db
-
- import (
- "time"
-
- cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
- "gorm.io/gorm/clause"
- )
-
- type LoadedAccessTokenDB struct {
- *DB
- }
-
- func (db *DB) LoadedAccessToken() *LoadedAccessTokenDB {
- return &LoadedAccessTokenDB{DB: db}
- }
-
- func (db *LoadedAccessTokenDB) GetByUserIDAndTokenID(ctx SQLContext, userID cortypes.UserID, tokenID cortypes.AccessTokenID) ([]cortypes.LoadedAccessToken, error) {
- var ret []cortypes.LoadedAccessToken
- err := ctx.Table("LoadedAccessToken").Where("UserID = ? AND TokenID = ?", userID, tokenID).Find(&ret).Error
- return ret, err
- }
-
- func (*LoadedAccessTokenDB) CreateOrUpdate(ctx SQLContext, token cortypes.LoadedAccessToken) error {
- return ctx.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "UserID"}, {Name: "TokenID"}, {Name: "HubID"}},
- DoUpdates: clause.AssignmentColumns([]string{"LoadedAt"}),
- }).Create(token).Error
- }
-
- func (*LoadedAccessTokenDB) GetExpired(ctx SQLContext, expireAt time.Time) ([]cortypes.LoadedAccessToken, error) {
- var ret []cortypes.LoadedAccessToken
- err := ctx.Table("LoadedAccessToken").
- Select("LoadedAccessToken.*").
- Joins("join UserAccessToken on UserAccessToken.UserID = LoadedAccessToken.UserID and UserAccessToken.TokenID = LoadedAccessToken.TokenID").
- Where("UserAccessToken.ExpiresAt < ?", expireAt).
- Find(&ret).Error
- return ret, err
- }
-
- func (*LoadedAccessTokenDB) DeleteExpired(ctx SQLContext, expireAt time.Time) error {
- return ctx.Table("LoadedAccessToken").
- Where("UserID in (select UserID from UserAccessToken where ExpiresAt < ?)", expireAt).
- Delete(&cortypes.LoadedAccessToken{}).Error
- }
-
- func (db *LoadedAccessTokenDB) DeleteAllByUserIDAndTokenID(ctx SQLContext, userID cortypes.UserID, tokenID cortypes.AccessTokenID) error {
- return ctx.Table("LoadedAccessToken").Where("UserID = ? AND TokenID = ?", userID, tokenID).Delete(&cortypes.LoadedAccessToken{}).Error
- }
|