From 303086e2a3fead55cd555429c9766f49b45dfd76 Mon Sep 17 00:00:00 2001 From: nquidox Date: Mon, 15 Sep 2025 14:30:14 +0300 Subject: [PATCH] merch initial --- internal/api/merch/controller.go | 11 ++++++++ internal/api/merch/handler.go | 27 ++++++++++++++++++ internal/api/merch/model.go | 47 ++++++++++++++++++++++++++++++++ internal/api/merch/repository.go | 15 ++++++++++ internal/api/merch/service.go | 11 ++++++++ 5 files changed, 111 insertions(+) create mode 100644 internal/api/merch/controller.go create mode 100644 internal/api/merch/handler.go create mode 100644 internal/api/merch/model.go create mode 100644 internal/api/merch/repository.go create mode 100644 internal/api/merch/service.go diff --git a/internal/api/merch/controller.go b/internal/api/merch/controller.go new file mode 100644 index 0000000..0c8f458 --- /dev/null +++ b/internal/api/merch/controller.go @@ -0,0 +1,11 @@ +package merch + +type controller struct { + service *service +} + +func newController(service *service) *controller { + return &controller{ + service: service, + } +} diff --git a/internal/api/merch/handler.go b/internal/api/merch/handler.go new file mode 100644 index 0000000..addd913 --- /dev/null +++ b/internal/api/merch/handler.go @@ -0,0 +1,27 @@ +package merch + +import ( + "gorm.io/gorm" +) + +type Handler struct { + repo repository + service *service + controller *controller +} + +type Deps struct { + DB *gorm.DB +} + +func NewHandler(deps Deps) *Handler { + r := NewRepo(deps.DB) + s := newService(r) + c := newController(s) + + return &Handler{ + repo: r, + service: s, + controller: c, + } +} diff --git a/internal/api/merch/model.go b/internal/api/merch/model.go new file mode 100644 index 0000000..8b28ae8 --- /dev/null +++ b/internal/api/merch/model.go @@ -0,0 +1,47 @@ +package merch + +import ( + "github.com/google/uuid" + "time" +) + +type Merch struct { + Id uint `json:"id" gorm:"primary_key"` + CreatedAt time.Time `json:"created_at" gorm:"created_at"` + UpdatedAt time.Time `json:"updated_at" gorm:"updated_at"` + DeletedAt time.Time `json:"deleted_at" gorm:"deleted_at"` + MerchUuid string `json:"merch_uuid" gorm:"type:varchar(36);unique_index"` + UserUuid string `json:"user_uuid" gorm:"type:varchar(36)"` + Name string `json:"name" gorm:"column:name"` + Origin string `json:"origin" gorm:"column:origin"` +} + +func (Merch) TableName() string { + return "merch" +} + +type Surugaya struct { + Id uint `gorm:"primary_key" json:"-"` + DeletedAt time.Time `gorm:"index" json:"-"` + MerchUuid uuid.UUID `gorm:"index" json:"-"` + Link string `json:"link"` + ParseTag string `json:"parse_tag"` + ParseSubstring string `json:"parse_substring"` + CookieValues string `json:"cookie_values"` + Separator string `json:"separator"` +} + +func (Surugaya) TableName() string { + return "origin_surugaya" +} + +type Mandarake struct { + Id uint `gorm:"primary_key" json:"-"` + DeletedAt time.Time `gorm:"index" json:"-"` + MerchUuid uuid.UUID `gorm:"index" json:"-"` + Link string `json:"link"` +} + +func (Mandarake) TableName() string { + return "origin_mandarake" +} diff --git a/internal/api/merch/repository.go b/internal/api/merch/repository.go new file mode 100644 index 0000000..f19ec39 --- /dev/null +++ b/internal/api/merch/repository.go @@ -0,0 +1,15 @@ +package merch + +import "gorm.io/gorm" + +type Repo struct { + db *gorm.DB +} + +func NewRepo(db *gorm.DB) *Repo { + return &Repo{ + db: db, + } +} + +type repository interface{} diff --git a/internal/api/merch/service.go b/internal/api/merch/service.go new file mode 100644 index 0000000..55d8cf9 --- /dev/null +++ b/internal/api/merch/service.go @@ -0,0 +1,11 @@ +package merch + +type service struct { + repo repository +} + +func newService(repo repository) *service { + return &service{ + repo: repo, + } +}