user_db.go 1007 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "path"
  4. "gorm.io/driver/sqlite"
  5. "gorm.io/gorm"
  6. )
  7. // Manages the User Database
  8. //
  9. // Default location is 'data/users.db'
  10. type UserManager struct {
  11. db *gorm.DB
  12. }
  13. func NewUserManager() (*UserManager, error) {
  14. var (
  15. um *UserManager = &UserManager{}
  16. err error
  17. )
  18. um.db, err = gorm.Open(sqlite.Open(path.Join("data", "users.db")), &gorm.Config{})
  19. if err != nil {
  20. return nil, err
  21. }
  22. err = um.db.AutoMigrate(&User{})
  23. if err != nil {
  24. return nil, err
  25. }
  26. return um, err
  27. }
  28. func (um *UserManager) Close() error {
  29. sqldb, err := um.db.DB()
  30. if err != nil {
  31. return err
  32. }
  33. return sqldb.Close()
  34. }
  35. func (um *UserManager) FindByHandle(handle string) (*User, error) {
  36. var u *User
  37. tx := um.db.First(u, "handle = ?", handle)
  38. return u, tx.Error
  39. }
  40. func (um *UserManager) SaveUser(u *User) error {
  41. tx := um.db.Save(u)
  42. return tx.Error
  43. }
  44. func (um *UserManager) DeleteUser(u *User) error {
  45. tx := um.db.Delete(u)
  46. if tx.Error != nil {
  47. return tx.Error
  48. }
  49. u = nil
  50. return nil
  51. }