package repository import ( "carrotskin/internal/model" "carrotskin/pkg/database" ) func CreateToken(token *model.Token) error { db := database.MustGetDB() return db.Create(token).Error } func GetTokensByUserId(userId int64) ([]*model.Token, error) { db := database.MustGetDB() tokens := make([]*model.Token, 0) err := db.Where("user_id = ?", userId).Find(&tokens).Error if err != nil { return nil, err } return tokens, nil } func BatchDeleteTokens(tokensToDelete []string) (int64, error) { db := database.MustGetDB() if len(tokensToDelete) == 0 { return 0, nil // 无需要删除的令牌,直接返回 } result := db.Where("access_token IN ?", tokensToDelete).Delete(&model.Token{}) return result.RowsAffected, result.Error } func FindTokenByID(accessToken string) (*model.Token, error) { db := database.MustGetDB() var tokens []*model.Token err := db.Where("_id = ?", accessToken).Find(&tokens).Error if err != nil { return nil, err } return tokens[0], nil } func GetUUIDByAccessToken(accessToken string) (string, error) { db := database.MustGetDB() var token model.Token err := db.Where("access_token = ?", accessToken).First(&token).Error if err != nil { return "", err } return token.ProfileId, nil } func GetUserIDByAccessToken(accessToken string) (int64, error) { db := database.MustGetDB() var token model.Token err := db.Where("access_token = ?", accessToken).First(&token).Error if err != nil { return 0, err } return token.UserID, nil } func GetTokenByAccessToken(accessToken string) (*model.Token, error) { db := database.MustGetDB() var token model.Token err := db.Where("access_token = ?", accessToken).First(&token).Error if err != nil { return nil, err } return &token, nil } func DeleteTokenByAccessToken(accessToken string) error { db := database.MustGetDB() err := db.Where("access_token = ?", accessToken).Delete(&model.Token{}).Error if err != nil { return err } return nil } func DeleteTokenByUserId(userId int64) error { db := database.MustGetDB() err := db.Where("user_id = ?", userId).Delete(&model.Token{}).Error if err != nil { return err } return nil }