Skip to content

Commit

Permalink
refactor product (#12)
Browse files Browse the repository at this point in the history
Co-authored-by: Boonyarit Rousamran <hok@Boonyarits-MacBook-Air.local>
  • Loading branch information
hokkung and Boonyarit Rousamran committed Jun 26, 2024
1 parent d6f3e7c commit 86f2908
Show file tree
Hide file tree
Showing 9 changed files with 57 additions and 71 deletions.
7 changes: 5 additions & 2 deletions internal/di/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ import (
catapi "github.com/hokkung/go-groceries/internal/client/cat_api"
handler2 "github.com/hokkung/go-groceries/internal/handler"
ih "github.com/hokkung/go-groceries/internal/handler/item"
product2 "github.com/hokkung/go-groceries/internal/handler/product"
repository2 "github.com/hokkung/go-groceries/internal/repository"
"github.com/hokkung/go-groceries/internal/server"
service2 "github.com/hokkung/go-groceries/internal/service"
"github.com/hokkung/go-groceries/internal/service/item"
"github.com/hokkung/go-groceries/internal/service/product"
"github.com/hokkung/go-groceries/pkg/cnt"
srv "github.com/hokkung/srv/server"
)
Expand Down Expand Up @@ -38,15 +40,16 @@ var RepositorySet = wire.NewSet(
)

var ServiceSet = wire.NewSet(
service2.ProvideProductService,
wire.Bind(new(product.ProductService), new(*product.Product)),
product.ProvideProductService,
service2.ProvideUserService,

wire.Bind(new(item.ItemService), new(*item.Item)),
item.ProvideItem,
)

var HandlerSet = wire.NewSet(
handler2.ProvideProductHandler,
product2.ProvideProductHandler,
handler2.ProvideUserHandler,
ih.ProvideItemHandler,
)
Expand Down
10 changes: 6 additions & 4 deletions internal/di/wire_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 0 additions & 25 deletions internal/handler/product.go

This file was deleted.

23 changes: 23 additions & 0 deletions internal/handler/product/product.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package product

import (
"github.com/hokkung/go-groceries/internal/service/product"
)

type Product struct {
productService product.ProductService
}

// NewProductHandler creates instance
func NewProductHandler(productService product.ProductService) *Product {
return &Product{productService: productService}
}

// ProvideProductHandler provides instance for di
func ProvideProductHandler(productService product.ProductService) *Product {
return NewProductHandler(productService)
}

func (h *Product) Get(id int) int {
return h.productService.Get(id)
}
16 changes: 0 additions & 16 deletions internal/repository/mock/mock_product.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 7 additions & 11 deletions internal/repository/product.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,22 @@ package repository

import "gorm.io/gorm"


//go:generate mockgen -source ./product.go -destination ./mock/mock_product.go
//go:generate mockgen -source ./product.go -destination ./mock/mock_product.go
type ProductRepository interface {
Model() string
}

type productRepository struct {
type Product struct {
DB *gorm.DB
}

func (r *productRepository) Model() string {
return "products"
}

func NewProductRepository(db *gorm.DB) *productRepository {
return &productRepository{
// NewProductRepository creates instance
func NewProductRepository(db *gorm.DB) *Product {
return &Product{
DB: db,
}
}

// ProvideProductRepository provides instance for di
func ProvideProductRepository(db *gorm.DB) (ProductRepository, func(), error) {
return NewProductRepository(db), func(){}, nil
return NewProductRepository(db), func() {}, nil
}
7 changes: 4 additions & 3 deletions internal/server/customizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import (
"fmt"
handler2 "github.com/hokkung/go-groceries/internal/handler"
"github.com/hokkung/go-groceries/internal/handler/item"
ph "github.com/hokkung/go-groceries/internal/handler/product"
"net/http"

"github.com/gin-gonic/gin"
srv "github.com/hokkung/srv/server"
)

type Customizer struct {
productHandler handler2.ProductHandler
productHandler *ph.Product
userHandler handler2.UserHandler
itemHandler *item.ItemHandler
}
Expand All @@ -38,7 +39,7 @@ func (c *Customizer) Register(s *srv.Server) {
}

func NewCustomizer(
productHandler handler2.ProductHandler,
productHandler *ph.Product,
userHandler handler2.UserHandler,
itemHandler *item.ItemHandler,
) *Customizer {
Expand All @@ -50,7 +51,7 @@ func NewCustomizer(
}

func ProvideCustomizer(
productHandler handler2.ProductHandler,
productHandler *ph.Product,
userHandler handler2.UserHandler,
itemHandler *item.ItemHandler,
) (srv.ServerCustomizer, func(), error) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package service
package product

import (
"github.com/hokkung/go-groceries/internal/repository"
Expand All @@ -8,18 +8,20 @@ type ProductService interface {
Get(id int) int
}

type productService struct {
type Product struct {
productRepository repository.ProductRepository
}

func (s *productService) Get(id int) int {
func (s *Product) Get(id int) int {
return id
}

func NewProductService(productRepository repository.ProductRepository) *productService {
return &productService{productRepository: productRepository}
// NewProductService creates instance
func NewProductService(productRepository repository.ProductRepository) *Product {
return &Product{productRepository: productRepository}
}

func ProvideProductService(productRepository repository.ProductRepository) ProductService {
// ProvideProductService provide instance for di
func ProvideProductService(productRepository repository.ProductRepository) *Product {
return NewProductService(productRepository)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package service_test
package product_test

import (
"github.com/hokkung/go-groceries/internal/repository/mock"
"github.com/hokkung/go-groceries/internal/service"
"github.com/hokkung/go-groceries/internal/service/product"
"testing"

"github.com/golang/mock/gomock"
Expand All @@ -12,14 +12,14 @@ import (
type ProductServiceTestSuite struct {
suite.Suite

underTest service.ProductService
underTest product.ProductService
}

func (s *ProductServiceTestSuite) SetupTest() {
ctrl := gomock.NewController(s.T())
mockProductRepository := mock_repository.NewMockProductRepository(ctrl)

s.underTest = service.NewProductService(mockProductRepository)
s.underTest = product.ProvideProductService(mockProductRepository)
}

func (s *ProductServiceTestSuite) TestGet() {
Expand Down

0 comments on commit 86f2908

Please sign in to comment.