2025-06-19 10:33:58 +08:00

56 lines
1.4 KiB
Go

package product
import (
"context"
"github.guxuan/haibei/internal/config"
"github.com/gin-gonic/gin"
"github.guxuan/haibei/internal/mods/product/api"
"github.guxuan/haibei/internal/mods/product/schema"
"gorm.io/gorm"
)
type Product struct {
DB *gorm.DB
ProductAPI *api.Product
ProductCategoryAPI *api.ProductCategory
}
func (a *Product) AutoMigrate(ctx context.Context) error {
return a.DB.AutoMigrate(new(schema.Product), new(schema.ProductCategory))
}
func (a *Product) Init(ctx context.Context) error {
if config.C.Storage.DB.AutoMigrate {
if err := a.AutoMigrate(ctx); err != nil {
return err
}
}
return nil
}
func (a *Product) RegisterV1Routers(ctx context.Context, v1 *gin.RouterGroup) error {
product := v1.Group("products")
{
product.GET("", a.ProductAPI.Query)
product.GET(":id", a.ProductAPI.Get)
product.POST("", a.ProductAPI.Create)
product.PUT(":id", a.ProductAPI.Update)
product.DELETE(":id", a.ProductAPI.Delete)
}
productCategory := v1.Group("product-categories")
{
productCategory.GET("", a.ProductCategoryAPI.Query)
productCategory.GET(":id", a.ProductCategoryAPI.Get)
productCategory.POST("", a.ProductCategoryAPI.Create)
productCategory.PUT(":id", a.ProductCategoryAPI.Update)
productCategory.DELETE(":id", a.ProductCategoryAPI.Delete)
}
return nil
}
func (a *Product) Release(ctx context.Context) error {
return nil
}