Commit 136f12ab authored by zhengyaoqiu's avatar zhengyaoqiu

feat(colorway): 数据库 model

parent f8385223
package mongo
import productModel "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/product"
import productModel "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/model/product"
const DatabaseColorWay = "color_way"
......
package base
package model
import (
"context"
......@@ -16,15 +16,15 @@ type Model[T any] interface {
BulkWrite(ctx context.Context, writeModels []mongo.WriteModel, opts ...*options.BulkWriteOptions) (*mongo.BulkWriteResult, error)
}
type BaseModel[T any] struct {
type Base[T any] struct {
model *mon.Model
}
func NewBaseModel[T any](model *mon.Model) *BaseModel[T] {
return &BaseModel[T]{model: model}
func NewBase[T any](model *mon.Model) *Base[T] {
return &Base[T]{model: model}
}
func (receiver *BaseModel[T]) Find(ctx context.Context, filter bson.M, findOptions ...*options.FindOptions) ([]T, int64, error) {
func (receiver *Base[T]) Find(ctx context.Context, filter bson.M, findOptions ...*options.FindOptions) ([]T, int64, error) {
total, err := receiver.model.CountDocuments(ctx, filter)
if err != nil {
return nil, 0, err
......@@ -34,17 +34,17 @@ func (receiver *BaseModel[T]) Find(ctx context.Context, filter bson.M, findOptio
return documents, total, err
}
func (receiver *BaseModel[T]) FindOne(ctx context.Context, filter bson.M, findOneOptions ...*options.FindOneOptions) (T, error) {
func (receiver *Base[T]) FindOne(ctx context.Context, filter bson.M, findOneOptions ...*options.FindOneOptions) (T, error) {
var document T
err := receiver.model.FindOne(ctx, &document, filter, findOneOptions...)
return document, err
}
func (receiver *BaseModel[T]) UpdateOne(ctx context.Context, filter bson.M, update bson.D, updateOptions ...*options.UpdateOptions) (*mongo.UpdateResult, error) {
func (receiver *Base[T]) UpdateOne(ctx context.Context, filter bson.M, update bson.D, updateOptions ...*options.UpdateOptions) (*mongo.UpdateResult, error) {
return receiver.model.UpdateOne(ctx, filter, update, updateOptions...)
}
func (receiver *BaseModel[T]) Traverse(ctx context.Context, filter bson.M, f func(document T) (bool, error), findOptions ...*options.FindOptions) error {
func (receiver *Base[T]) Traverse(ctx context.Context, filter bson.M, f func(document T) (bool, error), findOptions ...*options.FindOptions) error {
cursor, err := receiver.model.Collection.Find(ctx, filter, findOptions...)
if err != nil {
return err
......@@ -67,6 +67,6 @@ func (receiver *BaseModel[T]) Traverse(ctx context.Context, filter bson.M, f fun
return nil
}
func (receiver *BaseModel[T]) BulkWrite(ctx context.Context, writeModels []mongo.WriteModel, opts ...*options.BulkWriteOptions) (*mongo.BulkWriteResult, error) {
func (receiver *Base[T]) BulkWrite(ctx context.Context, writeModels []mongo.WriteModel, opts ...*options.BulkWriteOptions) (*mongo.BulkWriteResult, error) {
return receiver.model.BulkWrite(ctx, writeModels, opts...)
}
package base
package model
import "go.mongodb.org/mongo-driver/mongo/options"
......
package mongo
package model
//go:generate goctl template init --home ./templates
//go:generate goctl model mongo --type Product --dir product --home ../templates --style go_zero
//go:generate goctl model mongo --type Product --dir product --home ./templates
//go:generate goctl model mongo --type SitePlatformPriceConfig --dir site_platform_price_config --home ./templates --style go_zero
//go:generate goctl model mongo --type SitePlatformPriceConfig --dir site_platform_price_config --home ../templates --style go_zero
......@@ -2,7 +2,7 @@
package model
import (
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/base"
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/model/base"
"github.com/zeromicro/go-zero/core/stores/mon"
)
......@@ -18,6 +18,6 @@ type defaultProductModel struct {
func newDefaultProductModel(conn *mon.Model) *defaultProductModel {
return &defaultProductModel{
conn: conn,
Model: model.NewBaseModel[Product](conn),
Model: model.NewBase[Product](conn),
}
}
......@@ -2,7 +2,7 @@
package model
import (
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/base"
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/model/base"
"github.com/zeromicro/go-zero/core/stores/mon"
)
......@@ -18,6 +18,6 @@ type defaultSitePlatformPriceConfigModel struct {
func newDefaultSitePlatformPriceConfigModel(conn *mon.Model) *defaultSitePlatformPriceConfigModel {
return &defaultSitePlatformPriceConfigModel{
conn: conn,
Model: model.NewBaseModel[SitePlatformPriceConfig](conn),
Model: model.NewBase[SitePlatformPriceConfig](conn),
}
}
package model
import (
"git.chillcy.com/golang/colorway/internal/pkg/platform"
"git.chillcy.com/golang/colorway/internal/pkg/store"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
......@@ -9,7 +11,7 @@ import (
type SitePlatformPriceConfig struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
Site string `json:"site" bson:"site"`
Seller embed.Seller `json:"seller" bson:"seller"` // 销售平台
Seller Seller `json:"seller" bson:"seller"` // 销售平台
Enable bool `json:"enable" bson:"enable"` // 是否启用
embed.RoutePriceConfig `bson:",inline"` // 路线价格配置
UpdateAt time.Time `bson:"updateAt,omitempty" json:"updateAt,omitempty"`
......@@ -17,6 +19,6 @@ type SitePlatformPriceConfig struct {
}
type Seller struct {
Platform string `json:"platform" bson:"platform"` // 销售平台
Store string `json:"store" bson:"store"` // 销售平台具体店铺
Platform platform.Platform `json:"platform" bson:"platform"` // 销售平台
Store store.Store `json:"store" bson:"store"` // 销售平台具体店铺
}
......@@ -2,7 +2,7 @@
package model
import (
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/base"
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo/model/base"
{{if .Cache}}"github.com/zeromicro/go-zero/core/stores/monc"{{else}}"github.com/zeromicro/go-zero/core/stores/mon"{{end}}
)
......@@ -20,6 +20,6 @@ type default{{.Type}}Model struct {
func newDefault{{.Type}}Model(conn {{if .Cache}}*monc.Model{{else}}*mon.Model{{end}}) *default{{.Type}}Model {
return &default{{.Type}}Model{
conn: conn,
Model: model.NewBaseModel[{{.Type}}](conn),
Model: model.NewBase[{{.Type}}](conn),
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment