You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

133 lines
3.2 KiB

package model
import (
"context"
"gorm.io/gorm"
)
type (
accountModel interface {
Insert(ctx context.Context, data *Account) error
Update(ctx context.Context, id int64, updates map[string]any) error
Delete(ctx context.Context, id int64) error
FindOne(ctx context.Context, id int64) (*Account, error)
FindUserId(ctx context.Context, userId int32, userType int32) (*Account, error)
}
Account struct {
updates map[string]any
Ac string `gorm:"column:ac"`
Id int64 `gorm:"column:id"`
UserId int32 `gorm:"column:user_id"`
UserType int32 `gorm:"column:user_type"` //1 user 2 employer
Name string `gorm:"column:name"`
Email string `gorm:"column:email"`
Password string `gorm:"column:password"`
Phone string `gorm:"column:phone"` //+80-18010489927
WechatUniqueId string `gorm:"column:wechat_unique_id"`
}
defaultAccountModel struct {
db *gorm.DB
}
)
func (s *Account) TableName() string {
return "account"
}
func NewAccount() *Account {
return &Account{
updates: make(map[string]any),
}
}
func (s *Account) SetAc(ac string) *Account {
s.Ac = ac
s.set("ac", ac)
return s
}
func (s *Account) SetId(id int64) *Account {
s.Id = id
s.set("id", id)
return s
}
func (s *Account) SetUserId(userId int32) *Account {
s.UserId = userId
s.set("user_id", userId)
return s
}
func (s *Account) SetUserType(userType int32) *Account {
s.UserType = userType
s.set("user_type", userType)
return s
}
func (s *Account) SetName(name string) *Account {
s.Name = name
s.set("name", name)
return s
}
func (s *Account) SetEmail(email string) *Account {
s.Email = email
s.set("email", email)
return s
}
func (s *Account) SetPassword(password string) *Account {
s.Password = password
s.set("password", password)
return s
}
func (s *Account) SetPhone(phone string) *Account {
s.Phone = phone
s.set("phone", phone)
return s
}
func (s *Account) SetWechatUniqueId(wechatUniqueId string) *Account {
s.WechatUniqueId = wechatUniqueId
s.set("wechat_unique_id", wechatUniqueId)
return s
}
func (s *Account) set(key string, val any) {
s.updates[key] = val
}
func (s *Account) UpdateColumn() map[string]any {
return s.updates
}
func newAccountDAO(db *gorm.DB) *defaultAccountModel {
return &defaultAccountModel{
db: db,
}
}
func (s *defaultAccountModel) Insert(ctx context.Context, data *Account) error {
return s.db.Create(data).Error
}
func (s *defaultAccountModel) Update(ctx context.Context, id int64, updates map[string]any) error {
return s.db.Model(Account{}).Where("id=?", id).Updates(updates).Error
}
func (s *defaultAccountModel) Delete(ctx context.Context, id int64) error {
return s.db.Where("id=?", id).Delete(&Account{}).Error
}
func (s *defaultAccountModel) FindOne(ctx context.Context, id int64) (*Account, error) {
row := Account{}
err := s.db.Where("id=?", id).Find(&row).Error
return findResultWithError(&row, err)
}
func (s *defaultAccountModel) FindUserId(ctx context.Context, userId int32, userType int32) (*Account, error) {
row := Account{}
err := s.db.Where("user_id=? and user_type=?", userId, userType).Find(&row).Error
return findResultWithError(&row, err)
}