45 lines
1.2 KiB
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
|
|
}
|