package main import ( "path" "gorm.io/driver/sqlite" "gorm.io/gorm" ) // Manages the User Database // // Default location is 'data/users.db' type UserManager struct { db *gorm.DB } func NewUserManager() (*UserManager, error) { var ( um *UserManager = &UserManager{} err error ) um.db, err = gorm.Open(sqlite.Open(path.Join("data", "users.db")), &gorm.Config{}) if err != nil { return nil, err } err = um.db.AutoMigrate(&User{}) if err != nil { return nil, err } return um, err } func (um *UserManager) Close() error { sqldb, err := um.db.DB() if err != nil { return err } return sqldb.Close() } func (um *UserManager) FindByHandle(handle string) (*User, error) { var u *User tx := um.db.First(u, "handle = ?", handle) return u, tx.Error } func (um *UserManager) SaveUser(u *User) error { tx := um.db.Save(u) return tx.Error } func (um *UserManager) DeleteUser(u *User) error { tx := um.db.Delete(u) if tx.Error != nil { return tx.Error } u = nil return nil }