JCS-pub/coordinator/internal/db/user.go

45 lines
1.2 KiB
Go

package db
import (
cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
"gorm.io/gorm"
)
type UserDB struct {
*DB
}
func (db *DB) User() *UserDB {
return &UserDB{DB: db}
}
func (db *UserDB) GetByID(ctx SQLContext, userID cortypes.UserID) (cortypes.User, error) {
var ret cortypes.User
err := ctx.Table("User").Where("UserID = ?", userID).First(&ret).Error
return ret, err
}
func (db *UserDB) GetByAccount(ctx SQLContext, account string) (cortypes.User, error) {
var ret cortypes.User
err := ctx.Table("User").Where("Account = ?", account).First(&ret).Error
return ret, err
}
func (db *UserDB) Create(ctx SQLContext, account string, password string, nickName string) (cortypes.User, error) {
_, err := db.GetByAccount(ctx, account)
if err == nil {
return cortypes.User{}, gorm.ErrDuplicatedKey
}
if err != gorm.ErrRecordNotFound {
return cortypes.User{}, err
}
user := cortypes.User{NickName: nickName, Account: account, Password: password}
err = ctx.Table("User").Create(&user).Error
return user, err
}
func (*UserDB) Delete(ctx SQLContext, userID cortypes.UserID) error {
return ctx.Table("User").Delete(&cortypes.User{UserID: userID}).Error
}