Compare commits
No commits in common. "1ae192ccef890a4961df7b0d551a3b447a537fd7" and "a47b7b7d3d46f3289c19387d4227b393a2173017" have entirely different histories.
1ae192ccef
...
a47b7b7d3d
@ -1,11 +0,0 @@
|
|||||||
package database
|
|
||||||
|
|
||||||
import "time"
|
|
||||||
|
|
||||||
type Ads struct {
|
|
||||||
ID string `gorm:"primaryKey;not null" json:"id"`
|
|
||||||
ImageUrl string `gorm:"not null" json:"image_url"`
|
|
||||||
Url string `gorm:"not null" json:"url"`
|
|
||||||
CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"created_at"`
|
|
||||||
UpdatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"updated_at"`
|
|
||||||
}
|
|
||||||
@ -54,6 +54,5 @@ func (db *DB) Migrate() error {
|
|||||||
&News{},
|
&News{},
|
||||||
&Tag{},
|
&Tag{},
|
||||||
&Category{},
|
&Category{},
|
||||||
&Ads{},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +0,0 @@
|
|||||||
package adsrepository
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (a *accessor) Create(spec adsdomain.Ads) error {
|
|
||||||
if err := a.db.Create(&spec).Error; err != nil {
|
|
||||||
return fmt.Errorf("failed to create ads: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
package adsrepository
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (a *accessor) GetAll() ([]adsdomain.Ads, error) {
|
|
||||||
var ads []adsdomain.Ads
|
|
||||||
if err := a.db.Find(&ads).Error; err != nil {
|
|
||||||
return ads, fmt.Errorf("failed to get all ads: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ads, nil
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
package adsrepository
|
|
||||||
|
|
||||||
import (
|
|
||||||
"legalgo-BE-go/database"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
)
|
|
||||||
|
|
||||||
type accessor struct {
|
|
||||||
db *database.DB
|
|
||||||
}
|
|
||||||
|
|
||||||
type Ads interface {
|
|
||||||
Create(adsdomain.Ads) error
|
|
||||||
GetAll() ([]adsdomain.Ads, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func New(
|
|
||||||
db *database.DB,
|
|
||||||
) Ads {
|
|
||||||
return &accessor{db}
|
|
||||||
}
|
|
||||||
@ -1,14 +1,13 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
adsrepository "legalgo-BE-go/internal/accessor/ads"
|
|
||||||
categoryrepository "legalgo-BE-go/internal/accessor/category"
|
categoryrepository "legalgo-BE-go/internal/accessor/category"
|
||||||
newsrepository "legalgo-BE-go/internal/accessor/news"
|
newsrepository "legalgo-BE-go/internal/accessor/news"
|
||||||
"legalgo-BE-go/internal/accessor/oss"
|
"legalgo-BE-go/internal/accessor/oss"
|
||||||
redisaccessor "legalgo-BE-go/internal/accessor/redis"
|
redisaccessor "legalgo-BE-go/internal/accessor/redis"
|
||||||
staffrepository "legalgo-BE-go/internal/accessor/staff"
|
staffrepository "legalgo-BE-go/internal/accessor/staff"
|
||||||
subscriberepository "legalgo-BE-go/internal/accessor/subscribe"
|
subscriberepository "legalgo-BE-go/internal/accessor/subscribe"
|
||||||
subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan"
|
subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribeplan"
|
||||||
tagrepository "legalgo-BE-go/internal/accessor/tag"
|
tagrepository "legalgo-BE-go/internal/accessor/tag"
|
||||||
userrepository "legalgo-BE-go/internal/accessor/user"
|
userrepository "legalgo-BE-go/internal/accessor/user"
|
||||||
|
|
||||||
@ -25,5 +24,4 @@ var Module = fx.Module("repository", fx.Provide(
|
|||||||
categoryrepository.New,
|
categoryrepository.New,
|
||||||
newsrepository.New,
|
newsrepository.New,
|
||||||
oss.New,
|
oss.New,
|
||||||
adsrepository.New,
|
|
||||||
))
|
))
|
||||||
|
|||||||
@ -68,19 +68,3 @@ func (r *OssRepositoryImpl) GetPublicURL(fileName string) string {
|
|||||||
}
|
}
|
||||||
return fmt.Sprintf("%s:%s%s", r.cfg.GetPublicURL(), r.cfg.GetBucketName(), fileName)
|
return fmt.Sprintf("%s:%s%s", r.cfg.GetPublicURL(), r.cfg.GetBucketName(), fileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *OssRepositoryImpl) DeleteObject(ctx context.Context, fileName string) error {
|
|
||||||
if fileName == "" {
|
|
||||||
return fmt.Errorf("file name is not provided")
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err := r.s3.DeleteObject(&s3.DeleteObjectInput{
|
|
||||||
Key: aws.String(fileName),
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to delete object %s from bucket: %v", fileName, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|||||||
@ -7,5 +7,4 @@ import (
|
|||||||
type OSSRepository interface {
|
type OSSRepository interface {
|
||||||
UploadFile(ctx context.Context, fileName string, fileContent []byte) (fileUrl string, err error)
|
UploadFile(ctx context.Context, fileName string, fileContent []byte) (fileUrl string, err error)
|
||||||
GetPublicURL(fileName string) string
|
GetPublicURL(fileName string) string
|
||||||
DeleteObject(ctx context.Context, fileName string) error
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,13 +6,13 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *accessor) Create(subsPlanId string) (string, error) {
|
func (s *SubsAccs) Create(subsPlanId string) (string, error) {
|
||||||
spec := &subscribedomain.Subscribe{
|
spec := &subscribedomain.Subscribe{
|
||||||
ID: uuid.NewString(),
|
ID: uuid.NewString(),
|
||||||
SubscribePlanID: subsPlanId,
|
SubscribePlanID: subsPlanId,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.db.Create(&spec).Error; err != nil {
|
if err := s.DB.Create(&spec).Error; err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,15 +3,15 @@ package subscriberepository
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
subscribedomain "legalgo-BE-go/internal/domain/subscribe"
|
"legalgo-BE-go/database"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *accessor) GetByID(id string) (subscribedomain.Subscribe, error) {
|
func (s *SubsAccs) GetByID(id string) (database.Subscribe, error) {
|
||||||
var subscribe subscribedomain.Subscribe
|
var subscribe database.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) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
return subscribe, fmt.Errorf("subscribe data not found: %v", err)
|
return subscribe, fmt.Errorf("subscribe data not found: %v", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,20 +1,17 @@
|
|||||||
package subscriberepository
|
package subscriberepository
|
||||||
|
|
||||||
import (
|
import "legalgo-BE-go/database"
|
||||||
"legalgo-BE-go/database"
|
|
||||||
subscribedomain "legalgo-BE-go/internal/domain/subscribe"
|
|
||||||
)
|
|
||||||
|
|
||||||
type accessor struct {
|
type SubsAccs struct {
|
||||||
db *database.DB
|
DB *database.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
type Subscribe interface {
|
type SubsIntf interface {
|
||||||
Create(string) (string, error)
|
Create(string) (string, error)
|
||||||
GetByID(string) (subscribedomain.Subscribe, error)
|
GetByID(string) (database.Subscribe, error)
|
||||||
Update(subscribedomain.Subscribe) error
|
UpdateSubscribeStatus(database.Subscribe) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(db *database.DB) Subscribe {
|
func New(db *database.DB) SubsIntf {
|
||||||
return &accessor{db}
|
return &SubsAccs{db}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
19
internal/accessor/subscribe/update_subscribe_status.go
Normal file
19
internal/accessor/subscribe/update_subscribe_status.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
@ -1,13 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
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}
|
|
||||||
}
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
21
internal/accessor/subscribeplan/create.go
Normal file
21
internal/accessor/subscribeplan/create.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
@ -4,10 +4,10 @@ import (
|
|||||||
subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan"
|
subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *accessor) GetAll() ([]subscribeplandomain.SubscribePlan, error) {
|
func (s *SubsPlan) GetAll() ([]subscribeplandomain.SubscribePlan, error) {
|
||||||
var subscribePlans []subscribeplandomain.SubscribePlan
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
21
internal/accessor/subscribeplan/get_by_id.go
Normal file
21
internal/accessor/subscribeplan/get_by_id.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
21
internal/accessor/subscribeplan/get_default.go
Normal file
21
internal/accessor/subscribeplan/get_default.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
23
internal/accessor/subscribeplan/impl.go
Normal file
23
internal/accessor/subscribeplan/impl.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
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}
|
||||||
|
}
|
||||||
@ -1,106 +0,0 @@
|
|||||||
package adshttp
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
"legalgo-BE-go/internal/domain/oss"
|
|
||||||
adssvc "legalgo-BE-go/internal/services/ads"
|
|
||||||
"legalgo-BE-go/internal/utilities/response"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
|
||||||
)
|
|
||||||
|
|
||||||
const _oneMB = 1 << 20
|
|
||||||
const _maxUploadSize = 2 * _oneMB
|
|
||||||
const _folderName = "/file"
|
|
||||||
|
|
||||||
func Create(
|
|
||||||
router chi.Router,
|
|
||||||
adsSvc adssvc.Ads,
|
|
||||||
) {
|
|
||||||
router.With(authmiddleware.Authorize()).Post("/ads/create", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
ctx := r.Context()
|
|
||||||
|
|
||||||
err := r.ParseMultipartForm(10 << 20) // 10 MB
|
|
||||||
if err != nil {
|
|
||||||
response.RespondJsonErrorWithCode(
|
|
||||||
ctx,
|
|
||||||
w,
|
|
||||||
err,
|
|
||||||
response.ErrBadRequest.Code,
|
|
||||||
response.ErrBadRequest.HttpCode,
|
|
||||||
"unable to parse form",
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
url := r.FormValue("url")
|
|
||||||
if url == "" {
|
|
||||||
response.RespondJsonErrorWithCode(
|
|
||||||
ctx,
|
|
||||||
w,
|
|
||||||
err,
|
|
||||||
response.ErrBadRequest.Code,
|
|
||||||
response.ErrBadRequest.HttpCode,
|
|
||||||
"URL is missing",
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
file, header, err := r.FormFile("image")
|
|
||||||
if err != nil {
|
|
||||||
response.RespondJsonErrorWithCode(
|
|
||||||
ctx,
|
|
||||||
w,
|
|
||||||
err,
|
|
||||||
response.ErrBadRequest.Code,
|
|
||||||
response.ErrBadRequest.HttpCode,
|
|
||||||
"unable to retrieve image",
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
|
|
||||||
if header.Size > int64(_maxUploadSize) {
|
|
||||||
response.ResponseWithErrorCode(
|
|
||||||
ctx,
|
|
||||||
w,
|
|
||||||
fmt.Errorf("file too big"),
|
|
||||||
response.ErrBadRequest.Code,
|
|
||||||
response.ErrBadRequest.HttpCode,
|
|
||||||
fmt.Sprintf("The file is too big. The maximum size is %d MB", _maxUploadSize/_oneMB),
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
imageRequest := &oss.UploadFileRequest{
|
|
||||||
FileHeader: header,
|
|
||||||
FolderName: _folderName,
|
|
||||||
}
|
|
||||||
|
|
||||||
adsReq := adsdomain.AdsReq{
|
|
||||||
Image: imageRequest,
|
|
||||||
Url: url,
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := adsSvc.Create(ctx, adsReq); err != nil {
|
|
||||||
response.RespondJsonErrorWithCode(
|
|
||||||
ctx,
|
|
||||||
w,
|
|
||||||
err,
|
|
||||||
response.ErrBadRequest.Code,
|
|
||||||
response.ErrBadRequest.HttpCode,
|
|
||||||
err.Error(),
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
response.RespondJsonSuccess(ctx, w, struct {
|
|
||||||
Message string
|
|
||||||
}{
|
|
||||||
Message: "ads created successfully",
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
package adshttp
|
|
||||||
|
|
||||||
import (
|
|
||||||
adssvc "legalgo-BE-go/internal/services/ads"
|
|
||||||
"legalgo-BE-go/internal/utilities/response"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetAll(
|
|
||||||
router chi.Router,
|
|
||||||
adsSvc adssvc.Ads,
|
|
||||||
) {
|
|
||||||
router.Get("/ads", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
ctx := r.Context()
|
|
||||||
subsPlan, err := adsSvc.GetAll()
|
|
||||||
if err != nil {
|
|
||||||
response.ResponseWithErrorCode(
|
|
||||||
ctx,
|
|
||||||
w,
|
|
||||||
err,
|
|
||||||
response.ErrBadRequest.Code,
|
|
||||||
response.ErrBadRequest.HttpCode,
|
|
||||||
err.Error(),
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
response.RespondJsonSuccess(ctx, w, subsPlan)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
package adshttp
|
|
||||||
|
|
||||||
import "go.uber.org/fx"
|
|
||||||
|
|
||||||
var Module = fx.Module("ads-http", fx.Invoke(
|
|
||||||
Create,
|
|
||||||
GetAll,
|
|
||||||
))
|
|
||||||
@ -1,12 +1,10 @@
|
|||||||
package internalhttp
|
package internalhttp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
adshttp "legalgo-BE-go/internal/api/http/ads"
|
|
||||||
categoryhttp "legalgo-BE-go/internal/api/http/category"
|
categoryhttp "legalgo-BE-go/internal/api/http/category"
|
||||||
newshttp "legalgo-BE-go/internal/api/http/news"
|
newshttp "legalgo-BE-go/internal/api/http/news"
|
||||||
osshttp "legalgo-BE-go/internal/api/http/oss"
|
osshttp "legalgo-BE-go/internal/api/http/oss"
|
||||||
staffhttp "legalgo-BE-go/internal/api/http/staffhttp"
|
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"
|
subscribeplanhttp "legalgo-BE-go/internal/api/http/subscribe_plan"
|
||||||
taghttp "legalgo-BE-go/internal/api/http/tag"
|
taghttp "legalgo-BE-go/internal/api/http/tag"
|
||||||
userhttp "legalgo-BE-go/internal/api/http/user"
|
userhttp "legalgo-BE-go/internal/api/http/user"
|
||||||
@ -31,8 +29,6 @@ var Module = fx.Module("router",
|
|||||||
newshttp.Module,
|
newshttp.Module,
|
||||||
osshttp.Module,
|
osshttp.Module,
|
||||||
userhttp.Module,
|
userhttp.Module,
|
||||||
subscribehttp.Module,
|
|
||||||
adshttp.Module,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func initRouter() chi.Router {
|
func initRouter() chi.Router {
|
||||||
|
|||||||
@ -2,6 +2,4 @@ package subscribehttp
|
|||||||
|
|
||||||
import "go.uber.org/fx"
|
import "go.uber.org/fx"
|
||||||
|
|
||||||
var Module = fx.Module("subscribe", fx.Invoke(
|
var Module = fx.Module("subscribe", fx.Invoke())
|
||||||
Update,
|
|
||||||
))
|
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package subscribehttp
|
package subscribehttp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
userrepository "legalgo-BE-go/internal/accessor/user"
|
|
||||||
authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth"
|
authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth"
|
||||||
userdomain "legalgo-BE-go/internal/domain/user"
|
userdomain "legalgo-BE-go/internal/domain/user"
|
||||||
|
authsvc "legalgo-BE-go/internal/services/auth"
|
||||||
subscribesvc "legalgo-BE-go/internal/services/subscribe"
|
subscribesvc "legalgo-BE-go/internal/services/subscribe"
|
||||||
"legalgo-BE-go/internal/utilities/response"
|
"legalgo-BE-go/internal/utilities/response"
|
||||||
"legalgo-BE-go/internal/utilities/utils"
|
"legalgo-BE-go/internal/utilities/utils"
|
||||||
@ -14,7 +14,7 @@ import (
|
|||||||
|
|
||||||
func Update(
|
func Update(
|
||||||
router chi.Router,
|
router chi.Router,
|
||||||
userRepo userrepository.User,
|
authSvc authsvc.Auth,
|
||||||
subSvc subscribesvc.Subscribe,
|
subSvc subscribesvc.Subscribe,
|
||||||
) {
|
) {
|
||||||
router.
|
router.
|
||||||
@ -60,11 +60,9 @@ func Update(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
user, err := userRepo.GetUserProfile(detail.Email)
|
user, err := authSvc.GetUserProfile(detail.Email)
|
||||||
|
|
||||||
body.ID = user.Subscribe.ID
|
if err := subSvc.Update(user.ID, body); err != nil {
|
||||||
|
|
||||||
if err := subSvc.Update(body); err != nil {
|
|
||||||
response.ResponseWithErrorCode(
|
response.ResponseWithErrorCode(
|
||||||
ctx,
|
ctx,
|
||||||
w,
|
w,
|
||||||
@ -75,11 +73,5 @@ func Update(
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
response.RespondJsonSuccess(ctx, w, struct {
|
|
||||||
Message string
|
|
||||||
}{
|
|
||||||
Message: "update user plan success",
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,7 @@ func CreateSubscribePlan(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := subsSvc.Create(spec); err != nil {
|
if err := subsSvc.CreatePlan(spec); err != nil {
|
||||||
response.ResponseWithErrorCode(
|
response.ResponseWithErrorCode(
|
||||||
ctx,
|
ctx,
|
||||||
w,
|
w,
|
||||||
|
|||||||
@ -1,53 +0,0 @@
|
|||||||
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",
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@ -6,7 +6,5 @@ var Module = fx.Module("subscribe-plan",
|
|||||||
fx.Invoke(
|
fx.Invoke(
|
||||||
CreateSubscribePlan,
|
CreateSubscribePlan,
|
||||||
GetAllPlan,
|
GetAllPlan,
|
||||||
Update,
|
|
||||||
Delete,
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,82 +0,0 @@
|
|||||||
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",
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@ -16,23 +16,23 @@ func Delete(
|
|||||||
) {
|
) {
|
||||||
router.
|
router.
|
||||||
With(authmiddleware.Authorize()).
|
With(authmiddleware.Authorize()).
|
||||||
Delete("/tag/{tag_id}/delete", func(w http.ResponseWriter, r *http.Request) {
|
Delete("/tag/{category_id}/delete", func(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
tagID := chi.URLParam(r, "tag_id")
|
categoryID := chi.URLParam(r, "category_id")
|
||||||
|
|
||||||
if tagID == "" {
|
if categoryID == "" {
|
||||||
response.RespondJsonErrorWithCode(
|
response.RespondJsonErrorWithCode(
|
||||||
ctx,
|
ctx,
|
||||||
w,
|
w,
|
||||||
fmt.Errorf("tag id is not provided"),
|
fmt.Errorf("category id is not provided"),
|
||||||
response.ErrBadRequest.Code,
|
response.ErrBadRequest.Code,
|
||||||
response.ErrBadRequest.HttpCode,
|
response.ErrBadRequest.HttpCode,
|
||||||
"tag id is not provided",
|
"category id is not provided",
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := tagSvc.Delete(tagID); err != nil {
|
if err := tagSvc.Delete(categoryID); err != nil {
|
||||||
response.RespondJsonErrorWithCode(
|
response.RespondJsonErrorWithCode(
|
||||||
ctx,
|
ctx,
|
||||||
w,
|
w,
|
||||||
|
|||||||
@ -14,7 +14,8 @@ func GetAll(
|
|||||||
) {
|
) {
|
||||||
router.Get("/tag", func(w http.ResponseWriter, r *http.Request) {
|
router.Get("/tag", func(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
tags, err := tagSvc.GetAll()
|
tags, err := tagSvc.GetAllModel()
|
||||||
|
// tags, err := tagSvc.GetAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.ResponseWithErrorCode(
|
response.ResponseWithErrorCode(
|
||||||
ctx,
|
ctx,
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package userhttp
|
|||||||
import (
|
import (
|
||||||
responsedomain "legalgo-BE-go/internal/domain/reponse"
|
responsedomain "legalgo-BE-go/internal/domain/reponse"
|
||||||
userdomain "legalgo-BE-go/internal/domain/user"
|
userdomain "legalgo-BE-go/internal/domain/user"
|
||||||
usersvc "legalgo-BE-go/internal/services/user"
|
authsvc "legalgo-BE-go/internal/services/auth"
|
||||||
"legalgo-BE-go/internal/utilities/response"
|
"legalgo-BE-go/internal/utilities/response"
|
||||||
"legalgo-BE-go/internal/utilities/utils"
|
"legalgo-BE-go/internal/utilities/utils"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -15,7 +15,7 @@ import (
|
|||||||
|
|
||||||
func Login(
|
func Login(
|
||||||
router chi.Router,
|
router chi.Router,
|
||||||
userSvc usersvc.User,
|
authSvc authsvc.Auth,
|
||||||
validate *validator.Validate,
|
validate *validator.Validate,
|
||||||
rdb *redis.Client,
|
rdb *redis.Client,
|
||||||
) {
|
) {
|
||||||
@ -48,7 +48,7 @@ func Login(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err := userSvc.LoginAsUser(spec)
|
token, err := authSvc.LoginAsUser(spec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.ResponseWithErrorCode(
|
response.ResponseWithErrorCode(
|
||||||
ctx,
|
ctx,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package userhttp
|
package userhttp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
usersvc "legalgo-BE-go/internal/services/user"
|
authsvc "legalgo-BE-go/internal/services/auth"
|
||||||
"legalgo-BE-go/internal/utilities/response"
|
"legalgo-BE-go/internal/utilities/response"
|
||||||
"legalgo-BE-go/internal/utilities/utils"
|
"legalgo-BE-go/internal/utilities/utils"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -11,7 +11,7 @@ import (
|
|||||||
|
|
||||||
func GetProfile(
|
func GetProfile(
|
||||||
router chi.Router,
|
router chi.Router,
|
||||||
userSvc usersvc.User,
|
authSvc authsvc.Auth,
|
||||||
) {
|
) {
|
||||||
router.Get("/user/profile", func(w http.ResponseWriter, r *http.Request) {
|
router.Get("/user/profile", func(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
@ -28,7 +28,7 @@ func GetProfile(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
userProfile, err := userSvc.GetUserProfile(destructedToken.Email)
|
userProfile, err := authSvc.GetUserProfile(destructedToken.Email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.ResponseWithErrorCode(
|
response.ResponseWithErrorCode(
|
||||||
ctx,
|
ctx,
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package userhttp
|
|||||||
import (
|
import (
|
||||||
responsedomain "legalgo-BE-go/internal/domain/reponse"
|
responsedomain "legalgo-BE-go/internal/domain/reponse"
|
||||||
userdomain "legalgo-BE-go/internal/domain/user"
|
userdomain "legalgo-BE-go/internal/domain/user"
|
||||||
usersvc "legalgo-BE-go/internal/services/user"
|
authsvc "legalgo-BE-go/internal/services/auth"
|
||||||
"legalgo-BE-go/internal/utilities/response"
|
"legalgo-BE-go/internal/utilities/response"
|
||||||
"legalgo-BE-go/internal/utilities/utils"
|
"legalgo-BE-go/internal/utilities/utils"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -16,7 +16,7 @@ import (
|
|||||||
func Register(
|
func Register(
|
||||||
router chi.Router,
|
router chi.Router,
|
||||||
validate *validator.Validate,
|
validate *validator.Validate,
|
||||||
authSvc usersvc.User,
|
authSvc authsvc.Auth,
|
||||||
rdb *redis.Client,
|
rdb *redis.Client,
|
||||||
) {
|
) {
|
||||||
router.Post("/user/register", func(w http.ResponseWriter, r *http.Request) {
|
router.Post("/user/register", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
package adsdomain
|
|
||||||
|
|
||||||
import (
|
|
||||||
"legalgo-BE-go/internal/domain/oss"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Ads struct {
|
|
||||||
ID string `gorm:"primaryKey;not null" json:"id"`
|
|
||||||
ImageUrl string `gorm:"not null" json:"image_url"`
|
|
||||||
Url string `gorm:"not null" json:"url"`
|
|
||||||
CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"created_at"`
|
|
||||||
UpdatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"updated_at"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type AdsReq struct {
|
|
||||||
Image *oss.UploadFileRequest `json:"image"`
|
|
||||||
Url string `json:"url"`
|
|
||||||
}
|
|
||||||
@ -1,18 +1,28 @@
|
|||||||
package subscribedomain
|
package subscribedomain
|
||||||
|
|
||||||
import (
|
import (
|
||||||
subscribeplan "legalgo-BE-go/internal/domain/subscribe_plan"
|
subscribeplandm "legalgo-BE-go/internal/domain/subscribe_plan_model"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Subscribe struct {
|
type SubscribeDepecrate struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
SubscribePlanID string `json:"subscribe_plan_id"`
|
SubscribePlanID string `json:"subscribe_plan_id"`
|
||||||
StartDate time.Time `json:"start_date"`
|
}
|
||||||
EndDate *time.Time `json:"end_date"`
|
|
||||||
Status string `json:"status"`
|
type SubscribeUpdateReqDepecrate struct {
|
||||||
AutoRenew bool `json:"auto_renew"`
|
ID string `json:"id"`
|
||||||
UpdatedAt time.Time `json:"updated_at"`
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
SubscribePlan subscribeplan.SubscribePlan `gorm:"foreignKey:SubscribePlanID" json:"subscribe_plan"`
|
|
||||||
|
// 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"`
|
||||||
|
|
||||||
|
SubscribePlan subscribeplandm.SubscribePlan `gorm:"foreignKey:SubscribePlanID;constraint:OnDelete:CASCADE" json:"subscribe_plan"`
|
||||||
}
|
}
|
||||||
|
|||||||
17
internal/domain/subscribe_model/response.go
Normal file
17
internal/domain/subscribe_model/response.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
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"`
|
||||||
|
}
|
||||||
@ -1,22 +1,12 @@
|
|||||||
package subscribeplandomain
|
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 {
|
type SubscribePlanReq struct {
|
||||||
Code string `json:"code" validate:"required"`
|
Code string `json:"code" validate:"required"`
|
||||||
Name string `json:"name" validate:"required"`
|
Name string `json:"name" validate:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SubscribePlan struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|||||||
8
internal/domain/subscribe_plan_model/response.go
Normal file
8
internal/domain/subscribe_plan_model/response.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package subscribeplandm
|
||||||
|
|
||||||
|
// refactored
|
||||||
|
type SubscribePlan struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
@ -1,9 +1,6 @@
|
|||||||
package userdomain
|
package userdomain
|
||||||
|
|
||||||
import (
|
import subscribedm "legalgo-BE-go/internal/domain/subscribe_model"
|
||||||
subscribe "legalgo-BE-go/internal/domain/subscribe"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
@ -12,7 +9,7 @@ type User struct {
|
|||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
Phone string `json:"phone"`
|
Phone string `json:"phone"`
|
||||||
|
|
||||||
Subscribe subscribe.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"`
|
Subscribe subscribedm.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserRegister struct {
|
type UserRegister struct {
|
||||||
@ -27,7 +24,7 @@ type UserProfile struct {
|
|||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
Phone string `json:"phone"`
|
Phone string `json:"phone"`
|
||||||
|
|
||||||
Subscribe subscribe.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"`
|
Subscribe subscribedm.Subscribe `gorm:"foreignKey:SubscribeID" json:"subscribe"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserLogin struct {
|
type UserLogin struct {
|
||||||
@ -36,10 +33,5 @@ type UserLogin struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type UserSubsUpdate struct {
|
type UserSubsUpdate struct {
|
||||||
ID string `json:"id"`
|
Status string `json:"status"`
|
||||||
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"`
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,56 +0,0 @@
|
|||||||
package adssvc
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
"path"
|
|
||||||
|
|
||||||
"github.com/google/uuid"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (i *impl) Create(ctx context.Context, spec adsdomain.AdsReq) error {
|
|
||||||
id := uuid.NewString()
|
|
||||||
|
|
||||||
file := spec.Image.FileHeader
|
|
||||||
spec.Image.FileSize = file.Size
|
|
||||||
spec.Image.Ext = path.Ext(file.Filename)
|
|
||||||
|
|
||||||
if err := i.validate.Struct(spec); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open the file and read its content
|
|
||||||
srcFile, err := file.Open()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer srcFile.Close()
|
|
||||||
|
|
||||||
fileContent := make([]byte, file.Size)
|
|
||||||
_, err = srcFile.Read(fileContent)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
filePath := fmt.Sprintf("%v/%v%v", spec.Image.FolderName, id, spec.Image.Ext)
|
|
||||||
fileUrl, err := i.ossRepo.UploadFile(ctx, filePath, fileContent)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
newSpec := adsdomain.Ads{
|
|
||||||
ID: id,
|
|
||||||
ImageUrl: fileUrl,
|
|
||||||
Url: spec.Url,
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := i.adsRepo.Create(newSpec); err != nil {
|
|
||||||
if err := i.ossRepo.DeleteObject(ctx, id); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
package adssvc
|
|
||||||
|
|
||||||
import adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
|
|
||||||
func (i *impl) GetAll() ([]adsdomain.Ads, error) {
|
|
||||||
return i.adsRepo.GetAll()
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
package adssvc
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
adsrepository "legalgo-BE-go/internal/accessor/ads"
|
|
||||||
"legalgo-BE-go/internal/accessor/oss"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
|
||||||
|
|
||||||
"github.com/go-playground/validator/v10"
|
|
||||||
)
|
|
||||||
|
|
||||||
type impl struct {
|
|
||||||
ossRepo oss.OSSRepository
|
|
||||||
adsRepo adsrepository.Ads
|
|
||||||
validate *validator.Validate
|
|
||||||
}
|
|
||||||
|
|
||||||
type Ads interface {
|
|
||||||
Create(context.Context, adsdomain.AdsReq) error
|
|
||||||
GetAll() ([]adsdomain.Ads, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func New(
|
|
||||||
ossRepo oss.OSSRepository,
|
|
||||||
adsRepo adsrepository.Ads,
|
|
||||||
validate *validator.Validate,
|
|
||||||
) Ads {
|
|
||||||
return &impl{
|
|
||||||
ossRepo,
|
|
||||||
adsRepo,
|
|
||||||
validate,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
14
internal/services/auth/get_user.go
Normal file
14
internal/services/auth/get_user.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
@ -3,7 +3,7 @@ package authsvc
|
|||||||
import (
|
import (
|
||||||
staffrepository "legalgo-BE-go/internal/accessor/staff"
|
staffrepository "legalgo-BE-go/internal/accessor/staff"
|
||||||
subscriberepository "legalgo-BE-go/internal/accessor/subscribe"
|
subscriberepository "legalgo-BE-go/internal/accessor/subscribe"
|
||||||
subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan"
|
subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribeplan"
|
||||||
userrepository "legalgo-BE-go/internal/accessor/user"
|
userrepository "legalgo-BE-go/internal/accessor/user"
|
||||||
staffdomain "legalgo-BE-go/internal/domain/staff"
|
staffdomain "legalgo-BE-go/internal/domain/staff"
|
||||||
userdomain "legalgo-BE-go/internal/domain/user"
|
userdomain "legalgo-BE-go/internal/domain/user"
|
||||||
@ -12,8 +12,8 @@ import (
|
|||||||
type impl struct {
|
type impl struct {
|
||||||
staffRepo staffrepository.Staff
|
staffRepo staffrepository.Staff
|
||||||
userRepo userrepository.User
|
userRepo userrepository.User
|
||||||
subsRepo subscriberepository.Subscribe
|
subsRepo subscriberepository.SubsIntf
|
||||||
subsPlanRepo subscribeplanrepository.SubscribePlan
|
subsPlanRepo subscribeplanrepository.SubsPlanIntf
|
||||||
}
|
}
|
||||||
|
|
||||||
type Auth interface {
|
type Auth interface {
|
||||||
@ -22,13 +22,17 @@ type Auth interface {
|
|||||||
GetStaffProfile(string) (*staffdomain.StaffProfile, error)
|
GetStaffProfile(string) (*staffdomain.StaffProfile, error)
|
||||||
GetUsers() ([]userdomain.UserProfile, error)
|
GetUsers() ([]userdomain.UserProfile, error)
|
||||||
UpdateStaff(staffdomain.Staff) error
|
UpdateStaff(staffdomain.Staff) error
|
||||||
|
|
||||||
|
LoginAsUser(userdomain.UserLogin) (string, error)
|
||||||
|
RegisterUser(userdomain.UserRegister) (string, error)
|
||||||
|
GetUserProfile(string) (*userdomain.UserProfile, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(
|
func New(
|
||||||
staffRepo staffrepository.Staff,
|
staffRepo staffrepository.Staff,
|
||||||
userRepo userrepository.User,
|
userRepo userrepository.User,
|
||||||
subsRepo subscriberepository.Subscribe,
|
subsRepo subscriberepository.SubsIntf,
|
||||||
subsPlanRepo subscribeplanrepository.SubscribePlan,
|
subsPlanRepo subscribeplanrepository.SubsPlanIntf,
|
||||||
) Auth {
|
) Auth {
|
||||||
return &impl{
|
return &impl{
|
||||||
staffRepo: staffRepo,
|
staffRepo: staffRepo,
|
||||||
|
|||||||
@ -16,7 +16,7 @@ func (sv *impl) LoginAsStaff(spec staffdomain.StaffLogin) (string, error) {
|
|||||||
return "", errors.New(err.Error())
|
return "", errors.New(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
matchPassword := utils.ComparePassword(staff.Password, spec.Password)
|
matchPassword := ComparePassword(staff.Password, spec.Password)
|
||||||
if !matchPassword {
|
if !matchPassword {
|
||||||
return "", errors.New("wrong password")
|
return "", errors.New("wrong password")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package usersvc
|
package authsvc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@ -10,13 +10,13 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i *impl) LoginAsUser(spec userdomain.UserLogin) (string, error) {
|
func (a *impl) LoginAsUser(spec userdomain.UserLogin) (string, error) {
|
||||||
user, err := i.userRepo.GetUserByEmail(spec.Email)
|
user, err := a.userRepo.GetUserByEmail(spec.Email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.New(err.Error())
|
return "", errors.New(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
matchPassword := utils.ComparePassword(user.Password, spec.Password)
|
matchPassword := ComparePassword(user.Password, spec.Password)
|
||||||
if !matchPassword {
|
if !matchPassword {
|
||||||
return "", errors.New("wrong password")
|
return "", errors.New("wrong password")
|
||||||
}
|
}
|
||||||
@ -15,7 +15,7 @@ func (a *impl) RegisterStaff(spec staffdomain.StaffRegister) (string, error) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
return "", errors.New("this email address is already in use")
|
return "", errors.New("this email address is already in use")
|
||||||
}
|
}
|
||||||
hashedPwd, err := utils.HashPassword(spec.Password)
|
hashedPwd, err := HashPassword(spec.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package usersvc
|
package authsvc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@ -10,15 +10,15 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i *impl) RegisterUser(spec userdomain.UserRegister) (string, error) {
|
func (a *impl) RegisterUser(spec userdomain.UserRegister) (string, error) {
|
||||||
_, err := i.userRepo.GetUserByEmail(spec.Email)
|
_, err := a.userRepo.GetUserByEmail(spec.Email)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return "", errors.New("this email address is already in use")
|
return "", errors.New("this email address is already in use")
|
||||||
}
|
}
|
||||||
|
|
||||||
if spec.SubscribePlanID == "" {
|
if spec.SubscribePlanID == "" {
|
||||||
subsPlan, err := i.subsPlanRepo.GetDefault()
|
subsPlan, err := a.subsPlanRepo.GetDefault()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -26,17 +26,17 @@ func (i *impl) RegisterUser(spec userdomain.UserRegister) (string, error) {
|
|||||||
spec.SubscribePlanID = subsPlan.ID
|
spec.SubscribePlanID = subsPlan.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = i.subsPlanRepo.GetByID(spec.SubscribePlanID)
|
_, err = a.subsPlanRepo.GetByID(spec.SubscribePlanID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.New(err.Error())
|
return "", errors.New(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
subsId, err := i.subsRepo.Create(spec.SubscribePlanID)
|
subsId, err := a.subsRepo.Create(spec.SubscribePlanID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
hashedPwd, err := utils.HashPassword(spec.Password)
|
hashedPwd, err := HashPassword(spec.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@ func (i *impl) RegisterUser(spec userdomain.UserRegister) (string, error) {
|
|||||||
Phone: spec.Phone,
|
Phone: spec.Phone,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = i.userRepo.CreateUser(user)
|
err = a.userRepo.CreateUser(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", errors.New(err.Error())
|
return "", errors.New(err.Error())
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package utils
|
package authsvc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -1,7 +1,6 @@
|
|||||||
package services
|
package services
|
||||||
|
|
||||||
import (
|
import (
|
||||||
adssvc "legalgo-BE-go/internal/services/ads"
|
|
||||||
serviceauth "legalgo-BE-go/internal/services/auth"
|
serviceauth "legalgo-BE-go/internal/services/auth"
|
||||||
categorysvc "legalgo-BE-go/internal/services/category"
|
categorysvc "legalgo-BE-go/internal/services/category"
|
||||||
newssvc "legalgo-BE-go/internal/services/news"
|
newssvc "legalgo-BE-go/internal/services/news"
|
||||||
@ -9,7 +8,6 @@ import (
|
|||||||
subscribesvc "legalgo-BE-go/internal/services/subscribe"
|
subscribesvc "legalgo-BE-go/internal/services/subscribe"
|
||||||
subscribeplansvc "legalgo-BE-go/internal/services/subscribe_plan"
|
subscribeplansvc "legalgo-BE-go/internal/services/subscribe_plan"
|
||||||
tagsvc "legalgo-BE-go/internal/services/tag"
|
tagsvc "legalgo-BE-go/internal/services/tag"
|
||||||
usersvc "legalgo-BE-go/internal/services/user"
|
|
||||||
|
|
||||||
"go.uber.org/fx"
|
"go.uber.org/fx"
|
||||||
)
|
)
|
||||||
@ -23,7 +21,5 @@ var Module = fx.Module("services",
|
|||||||
categorysvc.New,
|
categorysvc.New,
|
||||||
newssvc.New,
|
newssvc.New,
|
||||||
oss.NewOSSService,
|
oss.NewOSSService,
|
||||||
usersvc.New,
|
|
||||||
adssvc.New,
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -6,14 +6,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type impl struct {
|
type impl struct {
|
||||||
subsRepo subscriberepository.Subscribe
|
subsRepo subscriberepository.SubsIntf
|
||||||
}
|
}
|
||||||
|
|
||||||
type Subscribe interface {
|
type Subscribe interface {
|
||||||
Create(string) (string, error)
|
Create(string) (string, error)
|
||||||
Update(userdomain.UserSubsUpdate) error
|
Update(string, userdomain.UserSubsUpdate) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(subsRepo subscriberepository.Subscribe) Subscribe {
|
func New(subsRepo subscriberepository.SubsIntf) Subscribe {
|
||||||
return &impl{subsRepo}
|
return &impl{subsRepo}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,20 +1,9 @@
|
|||||||
package subscribesvc
|
package subscribesvc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
subscribedomain "legalgo-BE-go/internal/domain/subscribe"
|
|
||||||
userdomain "legalgo-BE-go/internal/domain/user"
|
userdomain "legalgo-BE-go/internal/domain/user"
|
||||||
timeutils "legalgo-BE-go/internal/utilities/time_utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i *impl) Update(spec userdomain.UserSubsUpdate) error {
|
func (i *impl) Update(id string, spec userdomain.UserSubsUpdate) error {
|
||||||
newSpec := subscribedomain.Subscribe{
|
return nil
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
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)
|
|
||||||
}
|
|
||||||
7
internal/services/subscribe_plan/create_plan.go
Normal file
7
internal/services/subscribe_plan/create_plan.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package subscribeplansvc
|
||||||
|
|
||||||
|
import subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan"
|
||||||
|
|
||||||
|
func (sb *impl) CreatePlan(spec subscribeplandomain.SubscribePlanReq) error {
|
||||||
|
return sb.subsAccs.Create(spec)
|
||||||
|
}
|
||||||
@ -1,5 +0,0 @@
|
|||||||
package subscribeplansvc
|
|
||||||
|
|
||||||
func (i *impl) Delete(id string) error {
|
|
||||||
return i.subsRepo.Delete(id)
|
|
||||||
}
|
|
||||||
@ -5,5 +5,5 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (s *impl) GetAllPlan() ([]subscribeplandomain.SubscribePlan, error) {
|
func (s *impl) GetAllPlan() ([]subscribeplandomain.SubscribePlan, error) {
|
||||||
return s.subsRepo.GetAll()
|
return s.subsAccs.GetAll()
|
||||||
}
|
}
|
||||||
@ -1,23 +1,21 @@
|
|||||||
package subscribeplansvc
|
package subscribeplansvc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribe_plan"
|
subscribeplanrepository "legalgo-BE-go/internal/accessor/subscribeplan"
|
||||||
subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan"
|
subscribeplandomain "legalgo-BE-go/internal/domain/subscribe_plan"
|
||||||
)
|
)
|
||||||
|
|
||||||
type impl struct {
|
type impl struct {
|
||||||
subsRepo subscribeplanrepository.SubscribePlan
|
subsAccs subscribeplanrepository.SubsPlanIntf
|
||||||
}
|
}
|
||||||
|
|
||||||
type SubscribePlan interface {
|
type SubscribePlan interface {
|
||||||
Create(subscribeplandomain.SubscribePlanReq) error
|
CreatePlan(subscribeplandomain.SubscribePlanReq) error
|
||||||
Update(string, subscribeplandomain.SubscribePlanUpdate) error
|
|
||||||
GetAllPlan() ([]subscribeplandomain.SubscribePlan, error)
|
GetAllPlan() ([]subscribeplandomain.SubscribePlan, error)
|
||||||
Delete(string) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(
|
func New(
|
||||||
subsAccs subscribeplanrepository.SubscribePlan,
|
subsAccs subscribeplanrepository.SubsPlanIntf,
|
||||||
) SubscribePlan {
|
) SubscribePlan {
|
||||||
return &impl{subsAccs}
|
return &impl{subsAccs}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
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)
|
|
||||||
}
|
|
||||||
9
internal/services/tag/get_all_model.go
Normal file
9
internal/services/tag/get_all_model.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package tagsvc
|
||||||
|
|
||||||
|
import (
|
||||||
|
tagdomain "legalgo-BE-go/internal/domain/tag"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i *impl) GetAllModel() ([]tagdomain.Tag, error) {
|
||||||
|
return i.tagRepo.GetAll()
|
||||||
|
}
|
||||||
@ -12,6 +12,7 @@ type impl struct {
|
|||||||
type Tag interface {
|
type Tag interface {
|
||||||
Create(tagdomain.TagReq) error
|
Create(tagdomain.TagReq) error
|
||||||
GetAll() ([]tagdomain.Tag, error)
|
GetAll() ([]tagdomain.Tag, error)
|
||||||
|
GetAllModel() ([]tagdomain.Tag, error)
|
||||||
Update(string, tagdomain.TagReq) error
|
Update(string, tagdomain.TagReq) error
|
||||||
Delete(string) error
|
Delete(string) error
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user