From 13c976dcbfc83bf86232882755c9845640d4bc44 Mon Sep 17 00:00:00 2001 From: ericprd Date: Sat, 8 Mar 2025 22:46:05 +0800 Subject: [PATCH] fix: update user plan and rearrange structur project --- internal/accessor/module.go | 2 +- internal/accessor/subscribe/create.go | 4 +- internal/accessor/subscribe/get_by_id.go | 8 +- internal/accessor/subscribe/impl.go | 19 +++-- internal/accessor/subscribe/update.go | 19 +++++ .../subscribe/update_subscribe_status.go | 19 ----- internal/accessor/subscribe_plan/create.go | 13 +++ internal/accessor/subscribe_plan/delete.go | 30 +++++++ .../get_all.go | 4 +- internal/accessor/subscribe_plan/get_by_id.go | 21 +++++ .../accessor/subscribe_plan/get_default.go | 22 +++++ internal/accessor/subscribe_plan/impl.go | 25 ++++++ internal/accessor/subscribe_plan/update.go | 23 ++++++ internal/accessor/subscribeplan/create.go | 21 ----- internal/accessor/subscribeplan/get_by_id.go | 21 ----- .../accessor/subscribeplan/get_default.go | 21 ----- internal/accessor/subscribeplan/impl.go | 23 ------ internal/api/http/router.go | 2 + internal/api/http/subscribe/module.go | 4 +- internal/api/http/subscribe/update.go | 16 +++- internal/api/http/subscribe_plan/create.go | 2 +- internal/api/http/subscribe_plan/delete.go | 53 ++++++++++++ internal/api/http/subscribe_plan/module.go | 2 + internal/api/http/subscribe_plan/update.go | 82 +++++++++++++++++++ internal/api/http/tag/delete.go | 12 +-- internal/api/http/tag/get_all.go | 3 +- internal/api/http/user/login.go | 6 +- internal/api/http/user/profile.go | 6 +- internal/api/http/user/register.go | 4 +- internal/domain/subscribe/spec.go | 28 ++----- internal/domain/subscribe_model/response.go | 17 ---- internal/domain/subscribe_plan/spec.go | 22 +++-- .../domain/subscribe_plan_model/response.go | 8 -- internal/domain/user/spec.go | 16 +++- internal/services/auth/get_user.go | 14 ---- internal/services/auth/impl.go | 14 ++-- internal/services/auth/login_as_staff.go | 2 +- internal/services/auth/register_staff.go | 2 +- internal/services/module.go | 2 + internal/services/subscribe/impl.go | 6 +- internal/services/subscribe/update.go | 15 +++- internal/services/subscribe_plan/create.go | 16 ++++ .../services/subscribe_plan/create_plan.go | 7 -- internal/services/subscribe_plan/delete.go | 5 ++ .../{get_all_plan.go => get_all.go} | 2 +- internal/services/subscribe_plan/impl.go | 10 ++- internal/services/subscribe_plan/update.go | 16 ++++ internal/services/tag/get_all_model.go | 9 -- internal/services/tag/impl.go | 1 - internal/services/user/get_user.go | 14 ++++ internal/services/user/impl.go | 32 ++++++++ .../services/{auth => user}/login_as_user.go | 8 +- .../services/{auth => user}/register_user.go | 16 ++-- .../auth/utils.go => utilities/utils/auth.go} | 2 +- 54 files changed, 508 insertions(+), 263 deletions(-) create mode 100644 internal/accessor/subscribe/update.go delete mode 100644 internal/accessor/subscribe/update_subscribe_status.go create mode 100644 internal/accessor/subscribe_plan/create.go create mode 100644 internal/accessor/subscribe_plan/delete.go rename internal/accessor/{subscribeplan => subscribe_plan}/get_all.go (65%) create mode 100644 internal/accessor/subscribe_plan/get_by_id.go create mode 100644 internal/accessor/subscribe_plan/get_default.go create mode 100644 internal/accessor/subscribe_plan/impl.go create mode 100644 internal/accessor/subscribe_plan/update.go delete mode 100644 internal/accessor/subscribeplan/create.go delete mode 100644 internal/accessor/subscribeplan/get_by_id.go delete mode 100644 internal/accessor/subscribeplan/get_default.go delete mode 100644 internal/accessor/subscribeplan/impl.go create mode 100644 internal/api/http/subscribe_plan/delete.go create mode 100644 internal/api/http/subscribe_plan/update.go delete mode 100644 internal/domain/subscribe_model/response.go delete mode 100644 internal/domain/subscribe_plan_model/response.go delete mode 100644 internal/services/auth/get_user.go create mode 100644 internal/services/subscribe_plan/create.go delete mode 100644 internal/services/subscribe_plan/create_plan.go create mode 100644 internal/services/subscribe_plan/delete.go rename internal/services/subscribe_plan/{get_all_plan.go => get_all.go} (86%) create mode 100644 internal/services/subscribe_plan/update.go delete mode 100644 internal/services/tag/get_all_model.go create mode 100644 internal/services/user/get_user.go create mode 100644 internal/services/user/impl.go rename internal/services/{auth => user}/login_as_user.go (73%) rename internal/services/{auth => user}/register_user.go (72%) rename internal/{services/auth/utils.go => utilities/utils/auth.go} (98%) diff --git a/internal/accessor/module.go b/internal/accessor/module.go index 90c6679..82de0de 100644 --- a/internal/accessor/module.go +++ b/internal/accessor/module.go @@ -7,7 +7,7 @@ import ( redisaccessor "legalgo-BE-go/internal/accessor/redis" staffrepository "legalgo-BE-go/internal/accessor/staff" subscriberepository "legalgo-BE-go/internal/accessor/subscribe" - subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribeplan" + subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan" tagrepository "legalgo-BE-go/internal/accessor/tag" userrepository "legalgo-BE-go/internal/accessor/user" diff --git a/internal/accessor/subscribe/create.go b/internal/accessor/subscribe/create.go index f0867f3..991dcf8 100644 --- a/internal/accessor/subscribe/create.go +++ b/internal/accessor/subscribe/create.go @@ -6,13 +6,13 @@ import ( "github.com/google/uuid" ) -func (s *SubsAccs) Create(subsPlanId string) (string, error) { +func (s *accessor) Create(subsPlanId string) (string, error) { spec := &subscribedomain.Subscribe{ ID: uuid.NewString(), SubscribePlanID: subsPlanId, } - if err := s.DB.Create(&spec).Error; err != nil { + if err := s.db.Create(&spec).Error; err != nil { return "", err } diff --git a/internal/accessor/subscribe/get_by_id.go b/internal/accessor/subscribe/get_by_id.go index b172408..adc6e1d 100644 --- a/internal/accessor/subscribe/get_by_id.go +++ b/internal/accessor/subscribe/get_by_id.go @@ -3,15 +3,15 @@ package subscriberepository import ( "errors" "fmt" - "legalgo-BE-go/database" + subscribedomain "legalgo-BE-go/internal/domain/subscribe" "gorm.io/gorm" ) -func (s *SubsAccs) GetByID(id string) (database.Subscribe, error) { - var subscribe database.Subscribe +func (s *accessor) GetByID(id string) (subscribedomain.Subscribe, error) { + var subscribe subscribedomain.Subscribe - if err := s.DB.First(&subscribe, "id = ?", id).Error; err != nil { + if err := s.db.First(&subscribe, "id = ?", id).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return subscribe, fmt.Errorf("subscribe data not found: %v", err) } diff --git a/internal/accessor/subscribe/impl.go b/internal/accessor/subscribe/impl.go index e94ecbd..15cb5d4 100644 --- a/internal/accessor/subscribe/impl.go +++ b/internal/accessor/subscribe/impl.go @@ -1,17 +1,20 @@ package subscriberepository -import "legalgo-BE-go/database" +import ( + "legalgo-BE-go/database" + subscribedomain "legalgo-BE-go/internal/domain/subscribe" +) -type SubsAccs struct { - DB *database.DB +type accessor struct { + db *database.DB } -type SubsIntf interface { +type Subscribe interface { Create(string) (string, error) - GetByID(string) (database.Subscribe, error) - UpdateSubscribeStatus(database.Subscribe) error + GetByID(string) (subscribedomain.Subscribe, error) + Update(subscribedomain.Subscribe) error } -func New(db *database.DB) SubsIntf { - return &SubsAccs{db} +func New(db *database.DB) Subscribe { + return &accessor{db} } diff --git a/internal/accessor/subscribe/update.go b/internal/accessor/subscribe/update.go new file mode 100644 index 0000000..a98c1db --- /dev/null +++ b/internal/accessor/subscribe/update.go @@ -0,0 +1,19 @@ +package subscriberepository + +import ( + "fmt" + subscribedomain "legalgo-BE-go/internal/domain/subscribe" + + "gorm.io/gorm/clause" +) + +func (a *accessor) Update(spec subscribedomain.Subscribe) error { + if err := a.db.Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "id"}}, + DoUpdates: clause.AssignmentColumns([]string{"status", "subscribe_plan_id", "start_date"}), + }).Create(&spec).Error; err != nil { + return fmt.Errorf("failed to update status: %v", err) + } + + return nil +} diff --git a/internal/accessor/subscribe/update_subscribe_status.go b/internal/accessor/subscribe/update_subscribe_status.go deleted file mode 100644 index 45ee75a..0000000 --- a/internal/accessor/subscribe/update_subscribe_status.go +++ /dev/null @@ -1,19 +0,0 @@ -package subscriberepository - -import ( - "fmt" - "legalgo-BE-go/database" - - "gorm.io/gorm/clause" -) - -func (a *SubsAccs) UpdateSubscribeStatus(spec database.Subscribe) error { - if err := a.DB.Clauses(clause.OnConflict{ - Columns: []clause.Column{{Name: "id"}}, - DoUpdates: clause.AssignmentColumns([]string{"status"}), - }).Create(&spec).Error; err != nil { - return fmt.Errorf("failed to update status: %v", err) - } - - return nil -} diff --git a/internal/accessor/subscribe_plan/create.go b/internal/accessor/subscribe_plan/create.go new file mode 100644 index 0000000..0b04fcd --- /dev/null +++ b/internal/accessor/subscribe_plan/create.go @@ -0,0 +1,13 @@ +package subscribeplanrepository + +import ( + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" +) + +func (s *accessor) Create(spec subscribeplandomain.SubscribePlan) error { + if err := s.db.Create(&spec).Error; err != nil { + return err + } + + return nil +} diff --git a/internal/accessor/subscribe_plan/delete.go b/internal/accessor/subscribe_plan/delete.go new file mode 100644 index 0000000..61dbda7 --- /dev/null +++ b/internal/accessor/subscribe_plan/delete.go @@ -0,0 +1,30 @@ +package subscribeplanrepository + +import ( + "fmt" + "legalgo-BE-go/database" + subscribedomain "legalgo-BE-go/internal/domain/subscribe" + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" +) + +func (a *accessor) Delete(id string) error { + var subsPlan database.SubscribePlan + var basicPlan subscribeplandomain.SubscribePlan + + if err := a.db.First(&basicPlan, "code = ?", "basic").Error; err != nil { + return fmt.Errorf("failed to find basic plan: %v", err) + } + + if err := a.db. + Model(&subscribedomain.Subscribe{}). + Where("subscribe_plan_id = ?", id). + Update("subscribe_plan_id", basicPlan.ID); err != nil { + return fmt.Errorf("failed to change subscribe plan: %v", err) + } + + if err := a.db.Where("id = ?", id).Delete(&subsPlan).Error; err != nil { + return fmt.Errorf("failed to delete subscribe plan %s : %v", id, err) + } + + return nil +} diff --git a/internal/accessor/subscribeplan/get_all.go b/internal/accessor/subscribe_plan/get_all.go similarity index 65% rename from internal/accessor/subscribeplan/get_all.go rename to internal/accessor/subscribe_plan/get_all.go index c9bf978..8b12a36 100644 --- a/internal/accessor/subscribeplan/get_all.go +++ b/internal/accessor/subscribe_plan/get_all.go @@ -4,10 +4,10 @@ import ( subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" ) -func (s *SubsPlan) GetAll() ([]subscribeplandomain.SubscribePlan, error) { +func (s *accessor) GetAll() ([]subscribeplandomain.SubscribePlan, error) { var subscribePlans []subscribeplandomain.SubscribePlan - if err := s.DB.Find(&subscribePlans).Error; err != nil { + if err := s.db.Find(&subscribePlans).Error; err != nil { return nil, err } diff --git a/internal/accessor/subscribe_plan/get_by_id.go b/internal/accessor/subscribe_plan/get_by_id.go new file mode 100644 index 0000000..3f086b2 --- /dev/null +++ b/internal/accessor/subscribe_plan/get_by_id.go @@ -0,0 +1,21 @@ +package subscribeplanrepository + +import ( + "errors" + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" + + "gorm.io/gorm" +) + +func (s *accessor) GetByID(id string) (*subscribeplandomain.SubscribePlan, error) { + var subscribePlan *subscribeplandomain.SubscribePlan + + if err := s.db.First(&subscribePlan, "id = ? ", id).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return subscribePlan, errors.New("subscribe plan not found") + } + return subscribePlan, err + } + + return subscribePlan, nil +} diff --git a/internal/accessor/subscribe_plan/get_default.go b/internal/accessor/subscribe_plan/get_default.go new file mode 100644 index 0000000..8c9fa68 --- /dev/null +++ b/internal/accessor/subscribe_plan/get_default.go @@ -0,0 +1,22 @@ +package subscribeplanrepository + +import ( + "legalgo-BE-go/database" + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" + + "github.com/google/uuid" +) + +func (s *accessor) GetDefault() (*subscribeplandomain.SubscribePlan, error) { + var subscribePlan *subscribeplandomain.SubscribePlan + + if err := s.db.First(&subscribePlan, "code = ?", "basic").Error; err != nil { + s.db.Create(&database.SubscribePlan{ + ID: uuid.NewString(), + Code: "basic", + Name: "Basic", + }) + } + + return subscribePlan, nil +} diff --git a/internal/accessor/subscribe_plan/impl.go b/internal/accessor/subscribe_plan/impl.go new file mode 100644 index 0000000..6bd1bec --- /dev/null +++ b/internal/accessor/subscribe_plan/impl.go @@ -0,0 +1,25 @@ +package subscribeplanrepository + +import ( + "legalgo-BE-go/database" + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" +) + +type accessor struct { + db *database.DB +} + +type SubscribePlan interface { + Create(subscribeplandomain.SubscribePlan) error + GetAll() ([]subscribeplandomain.SubscribePlan, error) + GetByID(string) (*subscribeplandomain.SubscribePlan, error) + GetDefault() (*subscribeplandomain.SubscribePlan, error) + Update(subscribeplandomain.SubscribePlan) error + Delete(string) error +} + +func New( + db *database.DB, +) SubscribePlan { + return &accessor{db} +} diff --git a/internal/accessor/subscribe_plan/update.go b/internal/accessor/subscribe_plan/update.go new file mode 100644 index 0000000..e59bfe3 --- /dev/null +++ b/internal/accessor/subscribe_plan/update.go @@ -0,0 +1,23 @@ +package subscribeplanrepository + +import ( + "fmt" + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" + + "gorm.io/gorm/clause" +) + +func (a *accessor) Update(spec subscribeplandomain.SubscribePlan) error { + if err := a.db.Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "id"}}, + DoUpdates: clause.AssignmentColumns([]string{ + "name", + "code", + "updated_at", + }), + }).Select("name", "code", "updated_at").Save(&spec).Error; err != nil { + return fmt.Errorf("failed to update tag: %v", err) + } + + return nil +} diff --git a/internal/accessor/subscribeplan/create.go b/internal/accessor/subscribeplan/create.go deleted file mode 100644 index 7ec1b6d..0000000 --- a/internal/accessor/subscribeplan/create.go +++ /dev/null @@ -1,21 +0,0 @@ -package subscribeplanrepository - -import ( - subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" - - "github.com/google/uuid" -) - -func (s *SubsPlan) Create(spec subscribeplandomain.SubscribePlanReq) error { - data := &subscribeplandomain.SubscribePlan{ - ID: uuid.NewString(), - Code: spec.Code, - Name: spec.Name, - } - - if err := s.DB.Create(&data).Error; err != nil { - return err - } - - return nil -} diff --git a/internal/accessor/subscribeplan/get_by_id.go b/internal/accessor/subscribeplan/get_by_id.go deleted file mode 100644 index 0d8172b..0000000 --- a/internal/accessor/subscribeplan/get_by_id.go +++ /dev/null @@ -1,21 +0,0 @@ -package subscribeplanrepository - -import ( - "errors" - "legalgo-BE-go/database" - - "gorm.io/gorm" -) - -func (s *SubsPlan) GetByID(id string) (*database.SubscribePlan, error) { - var subscribePlan *database.SubscribePlan - - if err := s.DB.First(&subscribePlan, "id = ? ", id).Error; err != nil { - if errors.Is(err, gorm.ErrRecordNotFound) { - return subscribePlan, errors.New("subscribe plan not found") - } - return subscribePlan, err - } - - return subscribePlan, nil -} diff --git a/internal/accessor/subscribeplan/get_default.go b/internal/accessor/subscribeplan/get_default.go deleted file mode 100644 index 4fa9288..0000000 --- a/internal/accessor/subscribeplan/get_default.go +++ /dev/null @@ -1,21 +0,0 @@ -package subscribeplanrepository - -import ( - "legalgo-BE-go/database" - - "github.com/google/uuid" -) - -func (s *SubsPlan) GetDefault() (*database.SubscribePlan, error) { - var subscribePlan *database.SubscribePlan - - if err := s.DB.First(&subscribePlan, "code = ?", "basic").Error; err != nil { - s.DB.Create(&database.SubscribePlan{ - ID: uuid.NewString(), - Code: "basic", - Name: "Basic", - }) - } - - return subscribePlan, nil -} diff --git a/internal/accessor/subscribeplan/impl.go b/internal/accessor/subscribeplan/impl.go deleted file mode 100644 index c20836c..0000000 --- a/internal/accessor/subscribeplan/impl.go +++ /dev/null @@ -1,23 +0,0 @@ -package subscribeplanrepository - -import ( - "legalgo-BE-go/database" - subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" -) - -type SubsPlan struct { - DB *database.DB -} - -type SubsPlanIntf interface { - Create(subscribeplandomain.SubscribePlanReq) error - GetAll() ([]subscribeplandomain.SubscribePlan, error) - GetByID(string) (*database.SubscribePlan, error) - GetDefault() (*database.SubscribePlan, error) -} - -func New( - db *database.DB, -) SubsPlanIntf { - return &SubsPlan{db} -} diff --git a/internal/api/http/router.go b/internal/api/http/router.go index c476ba5..a243659 100644 --- a/internal/api/http/router.go +++ b/internal/api/http/router.go @@ -5,6 +5,7 @@ import ( newshttp "legalgo-BE-go/internal/api/http/news" osshttp "legalgo-BE-go/internal/api/http/oss" staffhttp "legalgo-BE-go/internal/api/http/staffhttp" + subscribehttp "legalgo-BE-go/internal/api/http/subscribe" subscribeplanhttp "legalgo-BE-go/internal/api/http/subscribe_plan" taghttp "legalgo-BE-go/internal/api/http/tag" userhttp "legalgo-BE-go/internal/api/http/user" @@ -29,6 +30,7 @@ var Module = fx.Module("router", newshttp.Module, osshttp.Module, userhttp.Module, + subscribehttp.Module, ) func initRouter() chi.Router { diff --git a/internal/api/http/subscribe/module.go b/internal/api/http/subscribe/module.go index 21b8de2..10c5f82 100644 --- a/internal/api/http/subscribe/module.go +++ b/internal/api/http/subscribe/module.go @@ -2,4 +2,6 @@ package subscribehttp import "go.uber.org/fx" -var Module = fx.Module("subscribe", fx.Invoke()) +var Module = fx.Module("subscribe", fx.Invoke( + Update, +)) diff --git a/internal/api/http/subscribe/update.go b/internal/api/http/subscribe/update.go index 2b653a9..3414127 100644 --- a/internal/api/http/subscribe/update.go +++ b/internal/api/http/subscribe/update.go @@ -1,9 +1,9 @@ package subscribehttp import ( + userrepository "legalgo-BE-go/internal/accessor/user" authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth" userdomain "legalgo-BE-go/internal/domain/user" - authsvc "legalgo-BE-go/internal/services/auth" subscribesvc "legalgo-BE-go/internal/services/subscribe" "legalgo-BE-go/internal/utilities/response" "legalgo-BE-go/internal/utilities/utils" @@ -14,7 +14,7 @@ import ( func Update( router chi.Router, - authSvc authsvc.Auth, + userRepo userrepository.User, subSvc subscribesvc.Subscribe, ) { router. @@ -60,9 +60,11 @@ func Update( return } - user, err := authSvc.GetUserProfile(detail.Email) + user, err := userRepo.GetUserProfile(detail.Email) - if err := subSvc.Update(user.ID, body); err != nil { + body.ID = user.Subscribe.ID + + if err := subSvc.Update(body); err != nil { response.ResponseWithErrorCode( ctx, w, @@ -73,5 +75,11 @@ func Update( ) return } + + response.RespondJsonSuccess(ctx, w, struct { + Message string + }{ + Message: "update user plan success", + }) }) } diff --git a/internal/api/http/subscribe_plan/create.go b/internal/api/http/subscribe_plan/create.go index cad4cfb..88d4bba 100644 --- a/internal/api/http/subscribe_plan/create.go +++ b/internal/api/http/subscribe_plan/create.go @@ -49,7 +49,7 @@ func CreateSubscribePlan( return } - if err := subsSvc.CreatePlan(spec); err != nil { + if err := subsSvc.Create(spec); err != nil { response.ResponseWithErrorCode( ctx, w, diff --git a/internal/api/http/subscribe_plan/delete.go b/internal/api/http/subscribe_plan/delete.go new file mode 100644 index 0000000..e231e41 --- /dev/null +++ b/internal/api/http/subscribe_plan/delete.go @@ -0,0 +1,53 @@ +package subscribeplanhttp + +import ( + "fmt" + authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth" + subscribeplansvc "legalgo-BE-go/internal/services/subscribe_plan" + "legalgo-BE-go/internal/utilities/response" + "net/http" + + "github.com/go-chi/chi/v5" +) + +func Delete( + router chi.Router, + subscribePlanSvc subscribeplansvc.SubscribePlan, +) { + router. + With(authmiddleware.Authorize()). + Delete("/subscribe-plan/{subsplan_id}/delete", func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + subsPlanID := chi.URLParam(r, "subsplan_id") + + if subsPlanID == "" { + response.RespondJsonErrorWithCode( + ctx, + w, + fmt.Errorf("subscribe plan id is not provided"), + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + "subscribe plan id is not provided", + ) + return + } + + if err := subscribePlanSvc.Delete(subsPlanID); err != nil { + response.RespondJsonErrorWithCode( + ctx, + w, + err, + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + err.Error(), + ) + return + } + + response.RespondJsonSuccess(ctx, w, struct { + Message string + }{ + Message: "subscribe plan has been deleted", + }) + }) +} diff --git a/internal/api/http/subscribe_plan/module.go b/internal/api/http/subscribe_plan/module.go index 680877e..d554eb4 100644 --- a/internal/api/http/subscribe_plan/module.go +++ b/internal/api/http/subscribe_plan/module.go @@ -6,5 +6,7 @@ var Module = fx.Module("subscribe-plan", fx.Invoke( CreateSubscribePlan, GetAllPlan, + Update, + Delete, ), ) diff --git a/internal/api/http/subscribe_plan/update.go b/internal/api/http/subscribe_plan/update.go new file mode 100644 index 0000000..a540400 --- /dev/null +++ b/internal/api/http/subscribe_plan/update.go @@ -0,0 +1,82 @@ +package subscribeplanhttp + +import ( + "fmt" + authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth" + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" + subscribeplansvc "legalgo-BE-go/internal/services/subscribe_plan" + "legalgo-BE-go/internal/utilities/response" + "legalgo-BE-go/internal/utilities/utils" + "net/http" + + "github.com/go-chi/chi/v5" + "github.com/go-playground/validator/v10" +) + +func Update( + router chi.Router, + validate *validator.Validate, + subsPlanSvc subscribeplansvc.SubscribePlan, +) { + router. + With(authmiddleware.Authorize()). + Put("/subscribe-plan/{subsplan_id}/update", func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + tagID := chi.URLParam(r, "subsplan_id") + + if tagID == "" { + response.RespondJsonErrorWithCode( + ctx, + w, + fmt.Errorf("subscribe plan id is not provided"), + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + "subscribe plan id is not provided", + ) + return + } + + var spec subscribeplandomain.SubscribePlanUpdate + if err := utils.UnmarshalBody(r, &spec); err != nil { + response.RespondJsonErrorWithCode( + ctx, + w, + err, + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + "failed to unmarshal body", + ) + return + } + + if err := validate.Struct(spec); err != nil { + response.RespondJsonErrorWithCode( + ctx, + w, + err, + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + err.(validator.ValidationErrors).Error(), + ) + return + } + + if err := subsPlanSvc.Update(tagID, spec); err != nil { + response.RespondJsonErrorWithCode( + ctx, + w, + err, + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + err.Error(), + ) + return + } + + response.RespondJsonSuccess(ctx, w, struct { + Message string + }{ + Message: "update subscribe plan success", + }) + }) +} diff --git a/internal/api/http/tag/delete.go b/internal/api/http/tag/delete.go index 748ae9a..8573c0d 100644 --- a/internal/api/http/tag/delete.go +++ b/internal/api/http/tag/delete.go @@ -16,23 +16,23 @@ func Delete( ) { router. With(authmiddleware.Authorize()). - Delete("/tag/{category_id}/delete", func(w http.ResponseWriter, r *http.Request) { + Delete("/tag/{tag_id}/delete", func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() - categoryID := chi.URLParam(r, "category_id") + tagID := chi.URLParam(r, "tag_id") - if categoryID == "" { + if tagID == "" { response.RespondJsonErrorWithCode( ctx, w, - fmt.Errorf("category id is not provided"), + fmt.Errorf("tag id is not provided"), response.ErrBadRequest.Code, response.ErrBadRequest.HttpCode, - "category id is not provided", + "tag id is not provided", ) return } - if err := tagSvc.Delete(categoryID); err != nil { + if err := tagSvc.Delete(tagID); err != nil { response.RespondJsonErrorWithCode( ctx, w, diff --git a/internal/api/http/tag/get_all.go b/internal/api/http/tag/get_all.go index 34a9f7f..82bd392 100644 --- a/internal/api/http/tag/get_all.go +++ b/internal/api/http/tag/get_all.go @@ -14,8 +14,7 @@ func GetAll( ) { router.Get("/tag", func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() - tags, err := tagSvc.GetAllModel() - // tags, err := tagSvc.GetAll() + tags, err := tagSvc.GetAll() if err != nil { response.ResponseWithErrorCode( ctx, diff --git a/internal/api/http/user/login.go b/internal/api/http/user/login.go index fa072f0..9adbee2 100644 --- a/internal/api/http/user/login.go +++ b/internal/api/http/user/login.go @@ -3,7 +3,7 @@ package userhttp import ( responsedomain "legalgo-BE-go/internal/domain/reponse" userdomain "legalgo-BE-go/internal/domain/user" - authsvc "legalgo-BE-go/internal/services/auth" + usersvc "legalgo-BE-go/internal/services/user" "legalgo-BE-go/internal/utilities/response" "legalgo-BE-go/internal/utilities/utils" "net/http" @@ -15,7 +15,7 @@ import ( func Login( router chi.Router, - authSvc authsvc.Auth, + userSvc usersvc.User, validate *validator.Validate, rdb *redis.Client, ) { @@ -48,7 +48,7 @@ func Login( return } - token, err := authSvc.LoginAsUser(spec) + token, err := userSvc.LoginAsUser(spec) if err != nil { response.ResponseWithErrorCode( ctx, diff --git a/internal/api/http/user/profile.go b/internal/api/http/user/profile.go index 13b98d6..6e3a2d1 100644 --- a/internal/api/http/user/profile.go +++ b/internal/api/http/user/profile.go @@ -1,7 +1,7 @@ package userhttp import ( - authsvc "legalgo-BE-go/internal/services/auth" + usersvc "legalgo-BE-go/internal/services/user" "legalgo-BE-go/internal/utilities/response" "legalgo-BE-go/internal/utilities/utils" "net/http" @@ -11,7 +11,7 @@ import ( func GetProfile( router chi.Router, - authSvc authsvc.Auth, + userSvc usersvc.User, ) { router.Get("/user/profile", func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -28,7 +28,7 @@ func GetProfile( return } - userProfile, err := authSvc.GetUserProfile(destructedToken.Email) + userProfile, err := userSvc.GetUserProfile(destructedToken.Email) if err != nil { response.ResponseWithErrorCode( ctx, diff --git a/internal/api/http/user/register.go b/internal/api/http/user/register.go index 1b86c11..f986a39 100644 --- a/internal/api/http/user/register.go +++ b/internal/api/http/user/register.go @@ -3,7 +3,7 @@ package userhttp import ( responsedomain "legalgo-BE-go/internal/domain/reponse" userdomain "legalgo-BE-go/internal/domain/user" - authsvc "legalgo-BE-go/internal/services/auth" + usersvc "legalgo-BE-go/internal/services/user" "legalgo-BE-go/internal/utilities/response" "legalgo-BE-go/internal/utilities/utils" "net/http" @@ -16,7 +16,7 @@ import ( func Register( router chi.Router, validate *validator.Validate, - authSvc authsvc.Auth, + authSvc usersvc.User, rdb *redis.Client, ) { router.Post("/user/register", func(w http.ResponseWriter, r *http.Request) { diff --git a/internal/domain/subscribe/spec.go b/internal/domain/subscribe/spec.go index eb05bcb..7c6391d 100644 --- a/internal/domain/subscribe/spec.go +++ b/internal/domain/subscribe/spec.go @@ -1,28 +1,18 @@ package subscribedomain import ( - subscribeplandm "legalgo-BE-go/internal/domain/subscribe_plan_model" + subscribeplan "legalgo-BE-go/internal/domain/subscribe_plan" "time" ) -type SubscribeDepecrate struct { - ID string `json:"id"` - SubscribePlanID string `json:"subscribe_plan_id"` -} - -type SubscribeUpdateReqDepecrate struct { - ID string `json:"id"` - Status string `json:"status"` -} - -// refactored type Subscribe struct { - ID string `gorm:"primaryKey" json:"id"` - SubscribePlanID string `gorm:"not null" json:"subscribe_plan_id"` - StartDate time.Time `gorm:"default:CURRENT_TIMESTAMP"` - EndDate time.Time `gorm:"default:null"` - Status string `gorm:"default:'inactive'"` - AutoRenew bool `gorm:"default:true"` + ID string `json:"id"` + SubscribePlanID string `json:"subscribe_plan_id"` + StartDate time.Time `json:"start_date"` + EndDate *time.Time `json:"end_date"` + Status string `json:"status"` + AutoRenew bool `json:"auto_renew"` + UpdatedAt time.Time `json:"updated_at"` - SubscribePlan subscribeplandm.SubscribePlan `gorm:"foreignKey:SubscribePlanID;constraint:OnDelete:CASCADE" json:"subscribe_plan"` + SubscribePlan subscribeplan.SubscribePlan `gorm:"foreignKey:SubscribePlanID" json:"subscribe_plan"` } diff --git a/internal/domain/subscribe_model/response.go b/internal/domain/subscribe_model/response.go deleted file mode 100644 index 7403845..0000000 --- a/internal/domain/subscribe_model/response.go +++ /dev/null @@ -1,17 +0,0 @@ -package subscribedm - -import ( - subscribeplandm "legalgo-BE-go/internal/domain/subscribe_plan_model" - "time" -) - -type Subscribe struct { - ID string `json:"id"` - SubscribePlanID string `json:"subscribe_plan_id"` - StartDate time.Time `json:"start_date"` - EndDate *time.Time `json:"end_date"` - Status string `json:"status"` - AutoRenew bool `json:"auto_renew"` - - SubscribePlan subscribeplandm.SubscribePlan `gorm:"foreignKey:SubscribePlanID" json:"subscribe_plan"` -} diff --git a/internal/domain/subscribe_plan/spec.go b/internal/domain/subscribe_plan/spec.go index eabd396..1fb413e 100644 --- a/internal/domain/subscribe_plan/spec.go +++ b/internal/domain/subscribe_plan/spec.go @@ -1,12 +1,22 @@ package subscribeplandomain +import "time" + +type SubscribePlan struct { + ID string `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +type SubscribePlanUpdate struct { + Code string `json:"code" validate:"required"` + Name string `json:"name" validate:"required"` + UpdatedAt time.Time `json:"updated_at"` +} + type SubscribePlanReq struct { Code string `json:"code" validate:"required"` Name string `json:"name" validate:"required"` } - -type SubscribePlan struct { - ID string `json:"id"` - Code string `json:"code"` - Name string `json:"name"` -} diff --git a/internal/domain/subscribe_plan_model/response.go b/internal/domain/subscribe_plan_model/response.go deleted file mode 100644 index e76937e..0000000 --- a/internal/domain/subscribe_plan_model/response.go +++ /dev/null @@ -1,8 +0,0 @@ -package subscribeplandm - -// refactored -type SubscribePlan struct { - ID string `json:"id"` - Code string `json:"code"` - Name string `json:"name"` -} diff --git a/internal/domain/user/spec.go b/internal/domain/user/spec.go index 6450813..c9b79bd 100644 --- a/internal/domain/user/spec.go +++ b/internal/domain/user/spec.go @@ -1,6 +1,9 @@ package userdomain -import subscribedm "legalgo-BE-go/internal/domain/subscribe_model" +import ( + subscribe "legalgo-BE-go/internal/domain/subscribe" + "time" +) type User struct { ID string `json:"id"` @@ -9,7 +12,7 @@ type User struct { Email string `json:"email"` Phone string `json:"phone"` - Subscribe subscribedm.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"` + Subscribe subscribe.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"` } type UserRegister struct { @@ -24,7 +27,7 @@ type UserProfile struct { Email string `json:"email"` Phone string `json:"phone"` - Subscribe subscribedm.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"` + Subscribe subscribe.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"` } type UserLogin struct { @@ -33,5 +36,10 @@ type UserLogin struct { } type UserSubsUpdate struct { - Status string `json:"status"` + ID string `json:"id"` + Status string `json:"status"` + SubscribePlanID string `json:"subscribe_plan_id"` + AutoRenew bool `json:"auto_renew"` + StartDate time.Time `json:"start_date"` + EndDate *time.Time `json:"end_date"` } diff --git a/internal/services/auth/get_user.go b/internal/services/auth/get_user.go deleted file mode 100644 index 1501948..0000000 --- a/internal/services/auth/get_user.go +++ /dev/null @@ -1,14 +0,0 @@ -package authsvc - -import ( - userdomain "legalgo-BE-go/internal/domain/user" -) - -func (as *impl) GetUserProfile(email string) (*userdomain.UserProfile, error) { - user, err := as.userRepo.GetUserProfile(email) - if err != nil { - return nil, err - } - - return user, nil -} diff --git a/internal/services/auth/impl.go b/internal/services/auth/impl.go index 2908c92..71d82bd 100644 --- a/internal/services/auth/impl.go +++ b/internal/services/auth/impl.go @@ -3,7 +3,7 @@ package authsvc import ( staffrepository "legalgo-BE-go/internal/accessor/staff" subscriberepository "legalgo-BE-go/internal/accessor/subscribe" - subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribeplan" + subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan" userrepository "legalgo-BE-go/internal/accessor/user" staffdomain "legalgo-BE-go/internal/domain/staff" userdomain "legalgo-BE-go/internal/domain/user" @@ -12,8 +12,8 @@ import ( type impl struct { staffRepo staffrepository.Staff userRepo userrepository.User - subsRepo subscriberepository.SubsIntf - subsPlanRepo subscribeplanrepository.SubsPlanIntf + subsRepo subscriberepository.Subscribe + subsPlanRepo subscribeplanrepository.SubscribePlan } type Auth interface { @@ -22,17 +22,13 @@ type Auth interface { GetStaffProfile(string) (*staffdomain.StaffProfile, error) GetUsers() ([]userdomain.UserProfile, error) UpdateStaff(staffdomain.Staff) error - - LoginAsUser(userdomain.UserLogin) (string, error) - RegisterUser(userdomain.UserRegister) (string, error) - GetUserProfile(string) (*userdomain.UserProfile, error) } func New( staffRepo staffrepository.Staff, userRepo userrepository.User, - subsRepo subscriberepository.SubsIntf, - subsPlanRepo subscribeplanrepository.SubsPlanIntf, + subsRepo subscriberepository.Subscribe, + subsPlanRepo subscribeplanrepository.SubscribePlan, ) Auth { return &impl{ staffRepo: staffRepo, diff --git a/internal/services/auth/login_as_staff.go b/internal/services/auth/login_as_staff.go index 2fef1c9..3698db6 100644 --- a/internal/services/auth/login_as_staff.go +++ b/internal/services/auth/login_as_staff.go @@ -16,7 +16,7 @@ func (sv *impl) LoginAsStaff(spec staffdomain.StaffLogin) (string, error) { return "", errors.New(err.Error()) } - matchPassword := ComparePassword(staff.Password, spec.Password) + matchPassword := utils.ComparePassword(staff.Password, spec.Password) if !matchPassword { return "", errors.New("wrong password") } diff --git a/internal/services/auth/register_staff.go b/internal/services/auth/register_staff.go index 82ccdd3..04d91ea 100644 --- a/internal/services/auth/register_staff.go +++ b/internal/services/auth/register_staff.go @@ -15,7 +15,7 @@ func (a *impl) RegisterStaff(spec staffdomain.StaffRegister) (string, error) { if err == nil { return "", errors.New("this email address is already in use") } - hashedPwd, err := HashPassword(spec.Password) + hashedPwd, err := utils.HashPassword(spec.Password) if err != nil { return "", err } diff --git a/internal/services/module.go b/internal/services/module.go index ec69cc6..06866c2 100644 --- a/internal/services/module.go +++ b/internal/services/module.go @@ -8,6 +8,7 @@ import ( subscribesvc "legalgo-BE-go/internal/services/subscribe" subscribeplansvc "legalgo-BE-go/internal/services/subscribe_plan" tagsvc "legalgo-BE-go/internal/services/tag" + usersvc "legalgo-BE-go/internal/services/user" "go.uber.org/fx" ) @@ -21,5 +22,6 @@ var Module = fx.Module("services", categorysvc.New, newssvc.New, oss.NewOSSService, + usersvc.New, ), ) diff --git a/internal/services/subscribe/impl.go b/internal/services/subscribe/impl.go index a2d6061..e1f8da6 100644 --- a/internal/services/subscribe/impl.go +++ b/internal/services/subscribe/impl.go @@ -6,14 +6,14 @@ import ( ) type impl struct { - subsRepo subscriberepository.SubsIntf + subsRepo subscriberepository.Subscribe } type Subscribe interface { Create(string) (string, error) - Update(string, userdomain.UserSubsUpdate) error + Update(userdomain.UserSubsUpdate) error } -func New(subsRepo subscriberepository.SubsIntf) Subscribe { +func New(subsRepo subscriberepository.Subscribe) Subscribe { return &impl{subsRepo} } diff --git a/internal/services/subscribe/update.go b/internal/services/subscribe/update.go index 5664353..58677c4 100644 --- a/internal/services/subscribe/update.go +++ b/internal/services/subscribe/update.go @@ -1,9 +1,20 @@ package subscribesvc import ( + subscribedomain "legalgo-BE-go/internal/domain/subscribe" userdomain "legalgo-BE-go/internal/domain/user" + timeutils "legalgo-BE-go/internal/utilities/time_utils" ) -func (i *impl) Update(id string, spec userdomain.UserSubsUpdate) error { - return nil +func (i *impl) Update(spec userdomain.UserSubsUpdate) error { + newSpec := subscribedomain.Subscribe{ + ID: spec.ID, + AutoRenew: spec.AutoRenew, + StartDate: timeutils.Now(), + EndDate: spec.EndDate, + Status: spec.Status, + SubscribePlanID: spec.SubscribePlanID, + UpdatedAt: timeutils.Now(), + } + return i.subsRepo.Update(newSpec) } diff --git a/internal/services/subscribe_plan/create.go b/internal/services/subscribe_plan/create.go new file mode 100644 index 0000000..4670cb3 --- /dev/null +++ b/internal/services/subscribe_plan/create.go @@ -0,0 +1,16 @@ +package subscribeplansvc + +import ( + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" + + "github.com/google/uuid" +) + +func (sb *impl) Create(spec subscribeplandomain.SubscribePlanReq) error { + data := subscribeplandomain.SubscribePlan{ + ID: uuid.NewString(), + Code: spec.Code, + Name: spec.Name, + } + return sb.subsRepo.Create(data) +} diff --git a/internal/services/subscribe_plan/create_plan.go b/internal/services/subscribe_plan/create_plan.go deleted file mode 100644 index 6b1992a..0000000 --- a/internal/services/subscribe_plan/create_plan.go +++ /dev/null @@ -1,7 +0,0 @@ -package subscribeplansvc - -import subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" - -func (sb *impl) CreatePlan(spec subscribeplandomain.SubscribePlanReq) error { - return sb.subsAccs.Create(spec) -} diff --git a/internal/services/subscribe_plan/delete.go b/internal/services/subscribe_plan/delete.go new file mode 100644 index 0000000..51fef1e --- /dev/null +++ b/internal/services/subscribe_plan/delete.go @@ -0,0 +1,5 @@ +package subscribeplansvc + +func (i *impl) Delete(id string) error { + return i.subsRepo.Delete(id) +} diff --git a/internal/services/subscribe_plan/get_all_plan.go b/internal/services/subscribe_plan/get_all.go similarity index 86% rename from internal/services/subscribe_plan/get_all_plan.go rename to internal/services/subscribe_plan/get_all.go index 819e1f7..75bbc3f 100644 --- a/internal/services/subscribe_plan/get_all_plan.go +++ b/internal/services/subscribe_plan/get_all.go @@ -5,5 +5,5 @@ import ( ) func (s *impl) GetAllPlan() ([]subscribeplandomain.SubscribePlan, error) { - return s.subsAccs.GetAll() + return s.subsRepo.GetAll() } diff --git a/internal/services/subscribe_plan/impl.go b/internal/services/subscribe_plan/impl.go index c1b6b41..22b3522 100644 --- a/internal/services/subscribe_plan/impl.go +++ b/internal/services/subscribe_plan/impl.go @@ -1,21 +1,23 @@ package subscribeplansvc import ( - subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribeplan" + subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan" subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" ) type impl struct { - subsAccs subscribeplanrepository.SubsPlanIntf + subsRepo subscribeplanrepository.SubscribePlan } type SubscribePlan interface { - CreatePlan(subscribeplandomain.SubscribePlanReq) error + Create(subscribeplandomain.SubscribePlanReq) error + Update(string, subscribeplandomain.SubscribePlanUpdate) error GetAllPlan() ([]subscribeplandomain.SubscribePlan, error) + Delete(string) error } func New( - subsAccs subscribeplanrepository.SubsPlanIntf, + subsAccs subscribeplanrepository.SubscribePlan, ) SubscribePlan { return &impl{subsAccs} } diff --git a/internal/services/subscribe_plan/update.go b/internal/services/subscribe_plan/update.go new file mode 100644 index 0000000..3d50a0e --- /dev/null +++ b/internal/services/subscribe_plan/update.go @@ -0,0 +1,16 @@ +package subscribeplansvc + +import ( + subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan" + timeutils "legalgo-BE-go/internal/utilities/time_utils" +) + +func (i *impl) Update(id string, spec subscribeplandomain.SubscribePlanUpdate) error { + newData := subscribeplandomain.SubscribePlan{ + ID: id, + Code: spec.Code, + Name: spec.Name, + UpdatedAt: timeutils.Now(), + } + return i.subsRepo.Update(newData) +} diff --git a/internal/services/tag/get_all_model.go b/internal/services/tag/get_all_model.go deleted file mode 100644 index da4a37f..0000000 --- a/internal/services/tag/get_all_model.go +++ /dev/null @@ -1,9 +0,0 @@ -package tagsvc - -import ( - tagdomain "legalgo-BE-go/internal/domain/tag" -) - -func (i *impl) GetAllModel() ([]tagdomain.Tag, error) { - return i.tagRepo.GetAll() -} diff --git a/internal/services/tag/impl.go b/internal/services/tag/impl.go index f760488..64546ba 100644 --- a/internal/services/tag/impl.go +++ b/internal/services/tag/impl.go @@ -12,7 +12,6 @@ type impl struct { type Tag interface { Create(tagdomain.TagReq) error GetAll() ([]tagdomain.Tag, error) - GetAllModel() ([]tagdomain.Tag, error) Update(string, tagdomain.TagReq) error Delete(string) error } diff --git a/internal/services/user/get_user.go b/internal/services/user/get_user.go new file mode 100644 index 0000000..78cb7b9 --- /dev/null +++ b/internal/services/user/get_user.go @@ -0,0 +1,14 @@ +package usersvc + +import ( + userdomain "legalgo-BE-go/internal/domain/user" +) + +func (i *impl) GetUserProfile(email string) (*userdomain.UserProfile, error) { + user, err := i.userRepo.GetUserProfile(email) + if err != nil { + return nil, err + } + + return user, nil +} diff --git a/internal/services/user/impl.go b/internal/services/user/impl.go new file mode 100644 index 0000000..3d6c715 --- /dev/null +++ b/internal/services/user/impl.go @@ -0,0 +1,32 @@ +package usersvc + +import ( + subscriberepository "legalgo-BE-go/internal/accessor/subscribe" + subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan" + userrepository "legalgo-BE-go/internal/accessor/user" + userdomain "legalgo-BE-go/internal/domain/user" +) + +type impl struct { + subsRepo subscriberepository.Subscribe + userRepo userrepository.User + subsPlanRepo subscribeplanrepository.SubscribePlan +} + +type User interface { + GetUserProfile(string) (*userdomain.UserProfile, error) + LoginAsUser(userdomain.UserLogin) (string, error) + RegisterUser(userdomain.UserRegister) (string, error) +} + +func New( + subsRepo subscriberepository.Subscribe, + userRepo userrepository.User, + subsPlanRepo subscribeplanrepository.SubscribePlan, +) User { + return &impl{ + subsRepo, + userRepo, + subsPlanRepo, + } +} diff --git a/internal/services/auth/login_as_user.go b/internal/services/user/login_as_user.go similarity index 73% rename from internal/services/auth/login_as_user.go rename to internal/services/user/login_as_user.go index d553d5e..ac37350 100644 --- a/internal/services/auth/login_as_user.go +++ b/internal/services/user/login_as_user.go @@ -1,4 +1,4 @@ -package authsvc +package usersvc import ( "errors" @@ -10,13 +10,13 @@ import ( "github.com/google/uuid" ) -func (a *impl) LoginAsUser(spec userdomain.UserLogin) (string, error) { - user, err := a.userRepo.GetUserByEmail(spec.Email) +func (i *impl) LoginAsUser(spec userdomain.UserLogin) (string, error) { + user, err := i.userRepo.GetUserByEmail(spec.Email) if err != nil { return "", errors.New(err.Error()) } - matchPassword := ComparePassword(user.Password, spec.Password) + matchPassword := utils.ComparePassword(user.Password, spec.Password) if !matchPassword { return "", errors.New("wrong password") } diff --git a/internal/services/auth/register_user.go b/internal/services/user/register_user.go similarity index 72% rename from internal/services/auth/register_user.go rename to internal/services/user/register_user.go index da1ec82..28a9c68 100644 --- a/internal/services/auth/register_user.go +++ b/internal/services/user/register_user.go @@ -1,4 +1,4 @@ -package authsvc +package usersvc import ( "errors" @@ -10,15 +10,15 @@ import ( "github.com/google/uuid" ) -func (a *impl) RegisterUser(spec userdomain.UserRegister) (string, error) { - _, err := a.userRepo.GetUserByEmail(spec.Email) +func (i *impl) RegisterUser(spec userdomain.UserRegister) (string, error) { + _, err := i.userRepo.GetUserByEmail(spec.Email) if err == nil { return "", errors.New("this email address is already in use") } if spec.SubscribePlanID == "" { - subsPlan, err := a.subsPlanRepo.GetDefault() + subsPlan, err := i.subsPlanRepo.GetDefault() if err != nil { return "", err } @@ -26,17 +26,17 @@ func (a *impl) RegisterUser(spec userdomain.UserRegister) (string, error) { spec.SubscribePlanID = subsPlan.ID } - _, err = a.subsPlanRepo.GetByID(spec.SubscribePlanID) + _, err = i.subsPlanRepo.GetByID(spec.SubscribePlanID) if err != nil { return "", errors.New(err.Error()) } - subsId, err := a.subsRepo.Create(spec.SubscribePlanID) + subsId, err := i.subsRepo.Create(spec.SubscribePlanID) if err != nil { return "", err } - hashedPwd, err := HashPassword(spec.Password) + hashedPwd, err := utils.HashPassword(spec.Password) if err != nil { return "", err } @@ -49,7 +49,7 @@ func (a *impl) RegisterUser(spec userdomain.UserRegister) (string, error) { Phone: spec.Phone, } - err = a.userRepo.CreateUser(user) + err = i.userRepo.CreateUser(user) if err != nil { return "", errors.New(err.Error()) } diff --git a/internal/services/auth/utils.go b/internal/utilities/utils/auth.go similarity index 98% rename from internal/services/auth/utils.go rename to internal/utilities/utils/auth.go index b48c8e6..f79b916 100644 --- a/internal/services/auth/utils.go +++ b/internal/utilities/utils/auth.go @@ -1,4 +1,4 @@ -package authsvc +package utils import ( "fmt"