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.
182 lines
4.3 KiB
182 lines
4.3 KiB
package model |
|
|
|
import ( |
|
"context" |
|
"gorm.io/gorm" |
|
) |
|
|
|
type ( |
|
userModel interface { |
|
Insert(ctx context.Context, data *User) 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) (*User, error) |
|
} |
|
User struct { |
|
updates map[string]any |
|
Id int64 `gorm:"column:id"` |
|
Name string `gorm:"column:name"` |
|
Email string `gorm:"column:email"` |
|
Password string `gorm:"column:password"` |
|
Phone string `gorm:"column:phone"` //+80-18010489927 |
|
Wechat string `gorm:"column:wechat"` |
|
FirstName string `gorm:"column:first_name"` |
|
LastName string `gorm:"column:last_name"` |
|
Gender int32 `gorm:"column:gender"` |
|
Skype string `gorm:"column:skype"` |
|
Birthday int32 `gorm:"column:birthday"` |
|
CurrentLocation int32 `gorm:"column:current_location"` |
|
CurrentLocationOther string `gorm:"column:current_location_other"` |
|
WorkExperience int32 `gorm:"column:work_experience"` |
|
Country int32 `gorm:"column:country"` |
|
CountryOther string `gorm:"column:country_other"` |
|
AboutMe string `gorm:"column:about_me"` |
|
} |
|
defaultUserModel struct { |
|
db *gorm.DB |
|
} |
|
) |
|
|
|
func (s *User) TableName() string { |
|
return "user" |
|
} |
|
|
|
func NewUser() *User { |
|
return &User{ |
|
updates: make(map[string]any), |
|
} |
|
} |
|
|
|
func (s *User) SetId(id int64) *User { |
|
s.Id = id |
|
s.set("id", id) |
|
return s |
|
} |
|
|
|
func (s *User) SetName(name string) *User { |
|
s.Name = name |
|
s.set("name", name) |
|
return s |
|
} |
|
|
|
func (s *User) SetEmail(email string) *User { |
|
s.Email = email |
|
s.set("email", email) |
|
return s |
|
} |
|
|
|
func (s *User) SetPassword(password string) *User { |
|
s.Password = password |
|
s.set("password", password) |
|
return s |
|
} |
|
|
|
func (s *User) SetPhone(phone string) *User { |
|
s.Phone = phone |
|
s.set("phone", phone) |
|
return s |
|
} |
|
|
|
func (s *User) SetWechat(wechat string) *User { |
|
s.Wechat = wechat |
|
s.set("wechat", wechat) |
|
return s |
|
} |
|
|
|
func (s *User) SetFirstName(firstName string) *User { |
|
s.FirstName = firstName |
|
s.set("first_name", firstName) |
|
return s |
|
} |
|
|
|
func (s *User) SetLastName(lastName string) *User { |
|
s.LastName = lastName |
|
s.set("last_name", lastName) |
|
return s |
|
} |
|
|
|
func (s *User) SetGender(gender int32) *User { |
|
s.Gender = gender |
|
s.set("gender", gender) |
|
return s |
|
} |
|
|
|
func (s *User) SetSkype(skype string) *User { |
|
s.Skype = skype |
|
s.set("skype", skype) |
|
return s |
|
} |
|
|
|
func (s *User) SetBirthday(birthday int32) *User { |
|
s.Birthday = birthday |
|
s.set("birthday", birthday) |
|
return s |
|
} |
|
|
|
func (s *User) SetCurrentLocation(currentLocation int32) *User { |
|
s.CurrentLocation = currentLocation |
|
s.set("current_location", currentLocation) |
|
return s |
|
} |
|
|
|
func (s *User) SetCurrentLocationOther(currentLocationOther string) *User { |
|
s.CurrentLocationOther = currentLocationOther |
|
s.set("current_location_other", currentLocationOther) |
|
return s |
|
} |
|
|
|
func (s *User) SetWorkExperience(workExperience int32) *User { |
|
s.WorkExperience = workExperience |
|
s.set("work_experience", workExperience) |
|
return s |
|
} |
|
|
|
func (s *User) SetCountry(country int32) *User { |
|
s.Country = country |
|
s.set("country", country) |
|
return s |
|
} |
|
|
|
func (s *User) SetCountryOther(countryOther string) *User { |
|
s.CountryOther = countryOther |
|
s.set("country_other", countryOther) |
|
return s |
|
} |
|
|
|
func (s *User) SetAboutMe(aboutMe string) *User { |
|
s.AboutMe = aboutMe |
|
s.set("about_me", aboutMe) |
|
return s |
|
} |
|
|
|
func (s *User) set(key string, val any) { |
|
s.updates[key] = val |
|
} |
|
|
|
func (s *User) UpdateColumn() map[string]any { |
|
return s.updates |
|
} |
|
|
|
func newUserDAO(db *gorm.DB) *defaultUserModel { |
|
return &defaultUserModel{ |
|
db: db, |
|
} |
|
} |
|
|
|
func (s *defaultUserModel) Insert(ctx context.Context, data *User) error { |
|
return s.db.Create(data).Error |
|
} |
|
|
|
func (s *defaultUserModel) Update(ctx context.Context, id int64, updates map[string]any) error { |
|
return s.db.Model(User{}).Where("id=?", id).Updates(updates).Error |
|
} |
|
|
|
func (s *defaultUserModel) Delete(ctx context.Context, id int64) error { |
|
return s.db.Where("id=?", id).Delete(&User{}).Error |
|
} |
|
|
|
func (s *defaultUserModel) FindOne(ctx context.Context, id int64) (*User, error) { |
|
row := User{} |
|
err := s.db.Where("id=?", id).Find(&row).Error |
|
return findResultWithError(&row, err) |
|
}
|
|
|