token.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package model
  2. import (
  3. "errors"
  4. _ "gorm.io/driver/sqlite"
  5. )
  6. type Token struct {
  7. Id int `json:"id"`
  8. UserId int `json:"user_id"`
  9. Key string `json:"key"`
  10. Status int `json:"status" gorm:"default:1"`
  11. Name string `json:"name" gorm:"index" `
  12. CreatedTime int64 `json:"created_time" gorm:"bigint"`
  13. AccessedTime int64 `json:"accessed_time" gorm:"bigint"`
  14. }
  15. func GetAllUserTokens(userId int, startIdx int, num int) ([]*Token, error) {
  16. var tokens []*Token
  17. var err error
  18. err = DB.Where("user_id = ?", userId).Order("id desc").Limit(num).Offset(startIdx).Find(&tokens).Error
  19. return tokens, err
  20. }
  21. func SearchUserTokens(userId int, keyword string) (tokens []*Token, err error) {
  22. err = DB.Where("user_id = ?", userId).Where("id = ? or name LIKE ?", keyword, keyword+"%").Find(&tokens).Error
  23. return tokens, err
  24. }
  25. func GetTokenByIds(id int, userId int) (*Token, error) {
  26. if id == 0 || userId == 0 {
  27. return nil, errors.New("id 或 userId 为空!")
  28. }
  29. token := Token{Id: id, UserId: userId}
  30. var err error = nil
  31. err = DB.First(&token, "id = ? and user_id = ?", id, userId).Error
  32. return &token, err
  33. }
  34. func (token *Token) Insert() error {
  35. var err error
  36. err = DB.Create(token).Error
  37. return err
  38. }
  39. func (token *Token) Update() error {
  40. var err error
  41. err = DB.Model(token).Updates(token).Error
  42. return err
  43. }
  44. func (token *Token) Delete() error {
  45. var err error
  46. err = DB.Delete(token).Error
  47. return err
  48. }
  49. func DeleteTokenById(id int, userId int) (err error) {
  50. // Why we need userId here? In case user want to delete other's token.
  51. if id == 0 || userId == 0 {
  52. return errors.New("id 或 userId 为空!")
  53. }
  54. token := Token{Id: id, UserId: userId}
  55. err = DB.Where(token).First(&token).Error
  56. if err != nil {
  57. return err
  58. }
  59. return token.Delete()
  60. }