From d492f3ce44b7ea6780f199cd951ff11c46f2d8f6 Mon Sep 17 00:00:00 2001 From: ericprd Date: Mon, 24 Feb 2025 20:18:09 +0800 Subject: [PATCH] feat: get all plans and improvement --- database/subscribe/model.go | 1 + internal/accessor/subscribeplan/create.go | 9 +++--- internal/accessor/subscribeplan/get_all.go | 15 +++++++++ internal/accessor/subscribeplan/impl.go | 8 +++-- internal/api/http/subscribe_plan/create.go | 2 +- internal/api/http/subscribe_plan/get_all.go | 32 +++++++++++++++++++ internal/api/http/subscribe_plan/module.go | 1 + internal/domain/subscribe_plan/spec.go | 2 ++ .../services/subscribe_plan/create_plan.go | 6 ++-- .../services/subscribe_plan/get_all_plan.go | 14 ++++++++ internal/services/subscribe_plan/impl.go | 8 +++-- 11 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 internal/accessor/subscribeplan/get_all.go create mode 100644 internal/api/http/subscribe_plan/get_all.go create mode 100644 internal/services/subscribe_plan/get_all_plan.go diff --git a/database/subscribe/model.go b/database/subscribe/model.go index 0d75524..cdfe980 100644 --- a/database/subscribe/model.go +++ b/database/subscribe/model.go @@ -22,6 +22,7 @@ type Subscribe struct { type SubscribePlan struct { ID uuid.UUID `gorm:"type:uuid;primaryKey" json:"id"` Code string `gorm:"not null" json:"code"` + Name string `gorm:"not null" json:"name"` CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"` UpdatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"` } diff --git a/internal/accessor/subscribeplan/create.go b/internal/accessor/subscribeplan/create.go index e9f936e..6196c2c 100644 --- a/internal/accessor/subscribeplan/create.go +++ b/internal/accessor/subscribeplan/create.go @@ -5,13 +5,14 @@ import ( "github.com/google/uuid" ) -func (s *SubsPlan) Create(code string) error { - spec := &subscribeplandomain.SubscribePlan{ +func (s *SubsPlan) Create(spec subscribeplandomain.SubscribePlanReq) error { + data := &subscribeplandomain.SubscribePlan{ ID: uuid.New(), - Code: code, + Code: spec.Code, + Name: spec.Name, } - if err := s.DB.Create(&spec).Error; err != nil { + if err := s.DB.Create(&data).Error; err != nil { return err } diff --git a/internal/accessor/subscribeplan/get_all.go b/internal/accessor/subscribeplan/get_all.go new file mode 100644 index 0000000..11c1475 --- /dev/null +++ b/internal/accessor/subscribeplan/get_all.go @@ -0,0 +1,15 @@ +package subscribeplanrepository + +import ( + subscribeplandomain "github.com/ardeman/project-legalgo-go/internal/domain/subscribe_plan" +) + +func (s *SubsPlan) GetAll() ([]subscribeplandomain.SubscribePlan, error) { + var subscribePlans []subscribeplandomain.SubscribePlan + + if err := s.DB.Find(&subscribePlans).Error; err != nil { + return nil, err + } + + return subscribePlans, nil +} diff --git a/internal/accessor/subscribeplan/impl.go b/internal/accessor/subscribeplan/impl.go index caca8d7..8477281 100644 --- a/internal/accessor/subscribeplan/impl.go +++ b/internal/accessor/subscribeplan/impl.go @@ -1,13 +1,17 @@ package subscribeplanrepository -import "github.com/ardeman/project-legalgo-go/database" +import ( + "github.com/ardeman/project-legalgo-go/database" + subscribeplandomain "github.com/ardeman/project-legalgo-go/internal/domain/subscribe_plan" +) type SubsPlan struct { DB *database.DB } type SubsPlanIntf interface { - Create(string) error + Create(subscribeplandomain.SubscribePlanReq) error + GetAll() ([]subscribeplandomain.SubscribePlan, error) } func New( diff --git a/internal/api/http/subscribe_plan/create.go b/internal/api/http/subscribe_plan/create.go index ff68e29..3de13ea 100644 --- a/internal/api/http/subscribe_plan/create.go +++ b/internal/api/http/subscribe_plan/create.go @@ -45,7 +45,7 @@ func CreateSubscribePlan( return } - if err := subsSvc.CreatePlan(spec.Code); err != nil { + if err := subsSvc.CreatePlan(spec); err != nil { response.ResponseWithErrorCode( ctx, w, diff --git a/internal/api/http/subscribe_plan/get_all.go b/internal/api/http/subscribe_plan/get_all.go new file mode 100644 index 0000000..39625d3 --- /dev/null +++ b/internal/api/http/subscribe_plan/get_all.go @@ -0,0 +1,32 @@ +package subscribeplanhttp + +import ( + "net/http" + + subscribeplansvc "github.com/ardeman/project-legalgo-go/internal/services/subscribe_plan" + "github.com/ardeman/project-legalgo-go/internal/utilities/response" + "github.com/go-chi/chi/v5" +) + +func GetAllPlan( + router chi.Router, + subsPlanSvc subscribeplansvc.SubsPlanIntf, +) { + router.Get("/get-plans", func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + subsPlan, err := subsPlanSvc.GetAllPlan() + if err != nil { + response.ResponseWithErrorCode( + ctx, + w, + err, + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + response.ErrBadRequest.Message, + ) + return + } + + response.RespondJsonSuccess(ctx, w, subsPlan) + }) +} diff --git a/internal/api/http/subscribe_plan/module.go b/internal/api/http/subscribe_plan/module.go index 853a200..680877e 100644 --- a/internal/api/http/subscribe_plan/module.go +++ b/internal/api/http/subscribe_plan/module.go @@ -5,5 +5,6 @@ import "go.uber.org/fx" var Module = fx.Module("subscribe-plan", fx.Invoke( CreateSubscribePlan, + GetAllPlan, ), ) diff --git a/internal/domain/subscribe_plan/spec.go b/internal/domain/subscribe_plan/spec.go index 8fa5134..1a5175d 100644 --- a/internal/domain/subscribe_plan/spec.go +++ b/internal/domain/subscribe_plan/spec.go @@ -4,9 +4,11 @@ import "github.com/google/uuid" type SubscribePlanReq struct { Code string `json:"code" validate:"required"` + Name string `json:"name" validate:"required"` } type SubscribePlan struct { ID uuid.UUID `json:"id"` Code string `json:"code"` + Name string `json:"name"` } diff --git a/internal/services/subscribe_plan/create_plan.go b/internal/services/subscribe_plan/create_plan.go index b54c1b6..013da13 100644 --- a/internal/services/subscribe_plan/create_plan.go +++ b/internal/services/subscribe_plan/create_plan.go @@ -1,5 +1,7 @@ package subscribeplansvc -func (sb *SubsPlanSvc) CreatePlan(code string) error { - return sb.subsAccs.Create(code) +import subscribeplandomain "github.com/ardeman/project-legalgo-go/internal/domain/subscribe_plan" + +func (sb *SubsPlanSvc) CreatePlan(spec subscribeplandomain.SubscribePlanReq) error { + return sb.subsAccs.Create(spec) } diff --git a/internal/services/subscribe_plan/get_all_plan.go b/internal/services/subscribe_plan/get_all_plan.go new file mode 100644 index 0000000..b55daad --- /dev/null +++ b/internal/services/subscribe_plan/get_all_plan.go @@ -0,0 +1,14 @@ +package subscribeplansvc + +import ( + subscribeplandomain "github.com/ardeman/project-legalgo-go/internal/domain/subscribe_plan" +) + +func (s *SubsPlanSvc) GetAllPlan() ([]subscribeplandomain.SubscribePlan, error) { + subsPlan, err := s.subsAccs.GetAll() + if err != nil { + return nil, err + } + + return subsPlan, nil +} diff --git a/internal/services/subscribe_plan/impl.go b/internal/services/subscribe_plan/impl.go index a85d28f..4f1b0b3 100644 --- a/internal/services/subscribe_plan/impl.go +++ b/internal/services/subscribe_plan/impl.go @@ -1,13 +1,17 @@ package subscribeplansvc -import subscribeplanrepository "github.com/ardeman/project-legalgo-go/internal/accessor/subscribeplan" +import ( + subscribeplanrepository "github.com/ardeman/project-legalgo-go/internal/accessor/subscribeplan" + subscribeplandomain "github.com/ardeman/project-legalgo-go/internal/domain/subscribe_plan" +) type SubsPlanSvc struct { subsAccs subscribeplanrepository.SubsPlanIntf } type SubsPlanIntf interface { - CreatePlan(string) error + CreatePlan(subscribeplandomain.SubscribePlanReq) error + GetAllPlan() ([]subscribeplandomain.SubscribePlan, error) } func New(