50 lines
1.9 KiB
Go
50 lines
1.9 KiB
Go
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
|
|
}
|