wms-be/modules/user/repository/user_repository.go

105 lines
2.5 KiB
Go

package repository
import (
"context"
"github.com/Caknoooo/go-gin-clean-starter/database/entities"
"gorm.io/gorm"
)
type (
UserRepository interface {
Register(ctx context.Context, tx *gorm.DB, user entities.M_User) (entities.M_User, error)
GetUserById(ctx context.Context, tx *gorm.DB, userId string) (entities.M_User, error)
GetUserByEmail(ctx context.Context, tx *gorm.DB, email string) (entities.M_User, error)
CheckEmail(ctx context.Context, tx *gorm.DB, email string) (entities.M_User, bool, error)
Update(ctx context.Context, tx *gorm.DB, user entities.M_User) (entities.M_User, error)
Delete(ctx context.Context, tx *gorm.DB, userId string) error
}
userRepository struct {
db *gorm.DB
}
)
func NewUserRepository(db *gorm.DB) UserRepository {
return &userRepository{
db: db,
}
}
func (r *userRepository) Register(ctx context.Context, tx *gorm.DB, user entities.M_User) (entities.M_User, error) {
if tx == nil {
tx = r.db
}
if err := tx.WithContext(ctx).Create(&user).Error; err != nil {
return entities.M_User{}, err
}
return user, nil
}
func (r *userRepository) GetUserById(ctx context.Context, tx *gorm.DB, userId string) (entities.M_User, error) {
if tx == nil {
tx = r.db
}
var user entities.M_User
if err := tx.WithContext(ctx).Where("id = ?", userId).Take(&user).Error; err != nil {
return entities.M_User{}, err
}
return user, nil
}
func (r *userRepository) GetUserByEmail(ctx context.Context, tx *gorm.DB, email string) (entities.M_User, error) {
if tx == nil {
tx = r.db
}
var user entities.M_User
if err := tx.WithContext(ctx).Where("email = ?", email).Take(&user).Error; err != nil {
return entities.M_User{}, err
}
return user, nil
}
func (r *userRepository) CheckEmail(ctx context.Context, tx *gorm.DB, email string) (entities.M_User, bool, error) {
if tx == nil {
tx = r.db
}
var user entities.M_User
if err := tx.WithContext(ctx).Where("email = ?", email).Take(&user).Error; err != nil {
return entities.M_User{}, false, err
}
return user, true, nil
}
func (r *userRepository) Update(ctx context.Context, tx *gorm.DB, user entities.M_User) (entities.M_User, error) {
if tx == nil {
tx = r.db
}
if err := tx.WithContext(ctx).Updates(&user).Error; err != nil {
return entities.M_User{}, err
}
return user, nil
}
func (r *userRepository) Delete(ctx context.Context, tx *gorm.DB, userId string) error {
if tx == nil {
tx = r.db
}
if err := tx.WithContext(ctx).Delete(&entities.M_User{}, "id = ?", userId).Error; err != nil {
return err
}
return nil
}