54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package user
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
"time"
|
|
)
|
|
|
|
type repo struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func newRepo(db *gorm.DB) *repo {
|
|
return &repo{db: db}
|
|
}
|
|
|
|
type userRepo interface {
|
|
userCrud
|
|
userAuth
|
|
}
|
|
|
|
type userCrud interface {
|
|
register(user User) error
|
|
getByUuid(userUuid string) (User, error)
|
|
update(user map[string]any) error
|
|
delete(userUuid string) error
|
|
}
|
|
|
|
type userAuth interface {
|
|
getUserByEmail(email string) (User, error)
|
|
}
|
|
|
|
// user CRUD methods
|
|
func (r *repo) register(user User) error {
|
|
return r.db.Create(&user).Error
|
|
}
|
|
|
|
func (r *repo) getByUuid(userUuid string) (user User, err error) {
|
|
err = r.db.Where("uuid = ?", userUuid).First(&user).Error
|
|
return user, err
|
|
}
|
|
|
|
func (r *repo) update(user map[string]any) error {
|
|
return r.db.Where("uuid = ?", user["uuid"]).Updates(&user).Error
|
|
}
|
|
|
|
func (r *repo) delete(userUuid string) error {
|
|
return r.db.Model(&User{}).Where("uuid = ?", userUuid).Update("deleted_at", time.Now().UTC()).Error
|
|
}
|
|
|
|
// methods for auth
|
|
func (r *repo) getUserByEmail(email string) (user User, err error) {
|
|
err = r.db.Where("email = ?", email).First(&user).Error
|
|
return user, err
|
|
}
|