feat: get user/staff profile

This commit is contained in:
ericprd
2025-02-27 18:59:58 +08:00
parent 290c0edff7
commit 5fb0764630
19 changed files with 426 additions and 4 deletions
@@ -12,7 +12,7 @@ func (sr *StaffRepository) GetStaffByEmail(email string) (*authdomain.Staff, err
var staff authdomain.Staff
if email == "" {
return nil, errors.New("email is empty")
return nil, errors.New("email is required")
}
if err := sr.DB.Where("email = ?", email).First(&staff).Error; err != nil {
+25
View File
@@ -0,0 +1,25 @@
package staffrepository
import (
"errors"
authdomain "legalgo-BE-go/internal/domain/auth"
"gorm.io/gorm"
)
func (sr *StaffRepository) GetStaffByID(ID string) (*authdomain.Staff, error) {
var staff authdomain.Staff
if ID == "" {
return nil, errors.New("id is required")
}
if err := sr.DB.Where("id = ? ", ID).First(&staff).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("staff not found")
}
return nil, err
}
return &staff, nil
}
+2
View File
@@ -11,7 +11,9 @@ type StaffRepository struct {
type StaffIntf interface {
GetStaffByEmail(string) (*authdomain.Staff, error)
GetStaffByID(string) (*authdomain.Staff, error)
Create(*authdomain.Staff) (*authdomain.Staff, error)
Update(authdomain.Staff) error
}
func New(db *database.DB) StaffIntf {
+14 -2
View File
@@ -1,7 +1,19 @@
package staffrepository
func (ur *StaffRepository) Update() error {
// if err := ur.DB.Update(column string, value interface{})
import (
authdomain "legalgo-BE-go/internal/domain/auth"
"legalgo-BE-go/internal/utilities/utils"
)
func (ur *StaffRepository) Update(spec authdomain.Staff) error {
val, err := utils.StructToMap(spec)
if err != nil {
return err
}
if err := ur.DB.Model(&authdomain.Staff{}).Where("id = ?", spec.ID).Updates(val).Error; err != nil {
return err
}
return nil
}
@@ -0,0 +1,30 @@
package userrepository
import (
"errors"
authdomain "legalgo-BE-go/internal/domain/auth"
"gorm.io/gorm"
)
func (ur *UserRepository) GetUserByID(email string) (*authdomain.UserProfile, error) {
var users []authdomain.UserProfile
if email == "" {
return nil, errors.New("email is empty")
}
if err := ur.DB.Table("users u").
Select("u.email, u.id, s.status as subscribe_status, sp.code as subscribe_plan_code, sp.name as subscribe_plan_name").
Joins("join subscribes s on s.id = u.subscribe_id").
Joins("join subscribe_plans sp on s.subscribe_plan_id = sp.id").
Scan(&users).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("user not found")
}
return nil, err
}
return &users[0], nil
}
@@ -11,6 +11,7 @@ type UserRepository struct {
type UserIntf interface {
GetUserByEmail(string) (*authdomain.User, error)
GetUserByID(string) (*authdomain.UserProfile, error)
CreateUser(*authdomain.User) (*authdomain.User, error)
}