diff --git a/cmd/jzero/.template/go-zero/model/find-one-by-field.tpl b/cmd/jzero/.template/go-zero/model/find-one-by-field.tpl index b72cd46c7..2a41b40c8 100644 --- a/cmd/jzero/.template/go-zero/model/find-one-by-field.tpl +++ b/cmd/jzero/.template/go-zero/model/find-one-by-field.tpl @@ -28,33 +28,6 @@ func (m *default{{.upperStartCamelObject}}Model) FindOneBy{{.upperField}}(ctx co return nil, err } } - -{{if .withCacheEnabled}} -func (m *default{{.upperStartCamelObject}}Model) FindOneNoCacheBy{{.upperField}}(ctx context.Context, session sqlx.Session, {{.in}}) (*{{.upperStartCamelObject}}, error) { - var resp {{.upperStartCamelObject}} - var err error - - sb := sqlbuilder.Select({{.lowerStartCamelObject}}Rows).From(m.table) - condition.SelectByWhereRawSql(sb, "{{.originalField}}", {{.lowerStartCamelField}}) - sb.Limit(1) - - sql, args := sb.BuildWithFlavor(m.flavor) - - if session != nil { - err = session.QueryRowCtx(ctx, &resp, sql, args...) - } else { - err = m.conn.QueryRowCtx(ctx, &resp, sql, args...) - } - - switch err { - case nil: - return &resp, nil - case sqlx.ErrNotFound: - return nil, ErrNotFound - default: - return nil, err - } -}{{end}} {{else}} func (m *default{{.upperStartCamelObject}}Model) FindOneBy{{.upperField}}(ctx context.Context, session sqlx.Session, {{.in}}) (*{{.upperStartCamelObject}}, error) { var resp {{.upperStartCamelObject}} diff --git a/cmd/jzero/.template/go-zero/model/find-one.tpl b/cmd/jzero/.template/go-zero/model/find-one.tpl index 633d858cb..0c68c5dc5 100644 --- a/cmd/jzero/.template/go-zero/model/find-one.tpl +++ b/cmd/jzero/.template/go-zero/model/find-one.tpl @@ -20,29 +20,6 @@ func (m *default{{.upperStartCamelObject}}Model) FindOne(ctx context.Context, se return nil, err } } - -{{if .withCacheEnabled}} -func (m *default{{.upperStartCamelObject}}Model) FindOneNoCache(ctx context.Context, session sqlx.Session, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error) { - sb := sqlbuilder.Select({{.lowerStartCamelObject}}Rows).From(m.table) - sb.Where(sb.EQ(condition.QuoteWithFlavor(m.flavor, "{{.originalPrimaryKey}}"), {{.lowerStartCamelPrimaryKey}})) - sb.Limit(1) - sql, args := sb.BuildWithFlavor(m.flavor) - var resp {{.upperStartCamelObject}} - var err error - if session != nil { - err = session.QueryRowCtx(ctx, &resp, sql, args...) - } else { - err = m.conn.QueryRowCtx(ctx, &resp, sql, args...) - } - switch err { - case nil: - return &resp, nil - case sqlx.ErrNotFound: - return nil, ErrNotFound - default: - return nil, err - } -}{{end}} {{else}} func (m *default{{.upperStartCamelObject}}Model) FindOne(ctx context.Context, session sqlx.Session, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error) { sb := sqlbuilder.Select({{.lowerStartCamelObject}}Rows).From(m.table) diff --git a/cmd/jzero/.template/go-zero/model/interface-find-one-by-field.tpl b/cmd/jzero/.template/go-zero/model/interface-find-one-by-field.tpl index 4a5bfa791..a689a913a 100644 --- a/cmd/jzero/.template/go-zero/model/interface-find-one-by-field.tpl +++ b/cmd/jzero/.template/go-zero/model/interface-find-one-by-field.tpl @@ -1,2 +1 @@ -FindOneBy{{.upperField}}(ctx context.Context, session sqlx.Session, {{.in}}) (*{{.upperStartCamelObject}}, error){{if .withCache}} -FindOneNoCacheBy{{.upperField}}(ctx context.Context, session sqlx.Session, {{.in}}) (*{{.upperStartCamelObject}}, error){{end}} \ No newline at end of file +FindOneBy{{.upperField}}(ctx context.Context, session sqlx.Session, {{.in}}) (*{{.upperStartCamelObject}}, error) \ No newline at end of file diff --git a/cmd/jzero/.template/go-zero/model/interface-find-one.tpl b/cmd/jzero/.template/go-zero/model/interface-find-one.tpl index 7da0bd9e2..7d6dfb023 100644 --- a/cmd/jzero/.template/go-zero/model/interface-find-one.tpl +++ b/cmd/jzero/.template/go-zero/model/interface-find-one.tpl @@ -1,2 +1 @@ -FindOne(ctx context.Context, session sqlx.Session, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error){{ if .withCache }} -FindOneNoCache(ctx context.Context, session sqlx.Session, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error){{end}} \ No newline at end of file +FindOne(ctx context.Context, session sqlx.Session, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error) \ No newline at end of file diff --git a/cmd/jzero/.template/model/model.go.tpl b/cmd/jzero/.template/model/model.go.tpl index 58fe84519..2221aa2c0 100644 --- a/cmd/jzero/.template/model/model.go.tpl +++ b/cmd/jzero/.template/model/model.go.tpl @@ -43,52 +43,6 @@ type Model struct { {{end}} } -{{if .ModelNewOriginal}} -{{range $v := .TableInfos}} -func NewOriginal{{$v.Name | FirstUpper | ToCamel}}Model(conn sqlx.SqlConn{{if and $.ModelCache $v.WithCache}}, c cache.CacheConf, op ...cache.Option{{end}}) {{$v.Name}}.{{$v.Name | FirstUpper | ToCamel}}Model { - {{if and $.ModelCache $v.WithCache}} - {{if $v.HasCacheExpiry}} - if expiry, ok := ModelExpiryTable["{{$v.Name}}"]; ok { - op = append(op, cache.WithExpiry(time.Duration(expiry)*time.Millisecond)) - } - {{end}} - {{if $v.HasNotFoundExpiry}} - if notFoundExpiry, ok := ModelNotFoundExpiryTable["{{$v.Name}}"]; ok { - op = append(op, cache.WithNotFoundExpiry(time.Duration(notFoundExpiry)*time.Millisecond)) - } - {{end}} - return {{$v.Name}}.NewOriginal{{$v.Name | FirstUpper | ToCamel}}Model(conn, c, op...) - {{else}} - return {{$v.Name}}.NewOriginal{{$v.Name | FirstUpper | ToCamel}}Model(conn) - {{end}} -} -{{end}} -{{end}} - -{{if .ModelNewOriginal}} -{{range $k,$v := .MutiModelsWithAlias}} -{{range $vv := $v}} -func NewOriginal{{$k | FirstUpper | ToCamel}}{{$vv.Name | FirstUpper | ToCamel}}Model(conn sqlx.SqlConn{{if and $.ModelCache $vv.WithCache}}, c cache.CacheConf, op ...cache.Option{{end}}) {{$vv.Alias}}.{{$vv.Name | FirstUpper |ToCamel}}Model { - {{if and $.ModelCache $vv.WithCache}} - {{if $vv.HasCacheExpiry}} - if expiry, ok := ModelExpiryTable["{{$vv.FullName}}"]; ok { - op = append(op, cache.WithExpiry(time.Duration(expiry)*time.Millisecond)) - } - {{end}} - {{if $vv.HasNotFoundExpiry}} - if notFoundExpiry, ok := ModelNotFoundExpiryTable["{{$vv.FullName}}"]; ok { - op = append(op, cache.WithNotFoundExpiry(time.Duration(notFoundExpiry)*time.Millisecond)) - } - {{end}} - return {{$vv.Alias}}.NewOriginal{{$vv.Name | FirstUpper | ToCamel}}Model(conn, c, op...) - {{else}} - return {{$vv.Alias}}.NewOriginal{{$vv.Name | FirstUpper | ToCamel}}Model(conn) - {{end}} -} -{{end}} -{{end}} -{{end}} - func NewModel(conn sqlx.SqlConn, op ...opts.Opt[modelx.ModelOpts]) Model { {{range $v := .TableInfos}} {{if and $.ModelCache (or $v.HasCacheExpiry $v.HasNotFoundExpiry)}} diff --git a/cmd/jzero/internal/command/gen/genmodel/plugins.go b/cmd/jzero/internal/command/gen/genmodel/plugins.go index 2cd5e6367..d3cf7fceb 100644 --- a/cmd/jzero/internal/command/gen/genmodel/plugins.go +++ b/cmd/jzero/internal/command/gen/genmodel/plugins.go @@ -147,7 +147,6 @@ func (jm *JzeroModel) GenRegister(tables []string) error { "ModelExpiryTable": modelExpiryTable, "ModelNotFoundExpiryTable": modelNotFoundExpiryTable, "ModelCache": config.C.Gen.ModelCache, - "ModelNewOriginal": config.C.Gen.ModelNewOriginal, }, lo.If( // 兼容老版本 model 路径 // TODO: wait to remove diff --git a/cmd/jzero/internal/config/config.go b/cmd/jzero/internal/config/config.go index 52bf11ba7..a838f52d3 100644 --- a/cmd/jzero/internal/config/config.go +++ b/cmd/jzero/internal/config/config.go @@ -127,7 +127,6 @@ type GenConfig struct { ModelCache bool `mapstructure:"model-cache"` ModelCacheTable []string `mapstructure:"model-cache-table"` ModelCachePrefix string `mapstructure:"model-cache-prefix"` - ModelNewOriginal bool `mapstructure:"model-new-original"` ModelCacheExpiryTable []struct { Table string `mapstructure:"table"` Expiry int64 `mapstructure:"expiry"` diff --git a/docs/src/zh-CN/guide/model.md b/docs/src/zh-CN/guide/model.md index 04203be2c..6955fe66d 100644 --- a/docs/src/zh-CN/guide/model.md +++ b/docs/src/zh-CN/guide/model.md @@ -29,7 +29,6 @@ jzero 支持灵活的模型缓存配置: * **model-cache**: 启用或禁用模型缓存(默认: false) * **model-cache-table**: 指定哪些表需要缓存(默认: * 表示所有表) * **model-cache-expiry-table**: 为特定表配置自定义缓存过期时间 -* **model-new-original**: 为每个表生成 NewOriginal 初始化函数(默认: false) ### 缓存过期时间配置 @@ -56,43 +55,6 @@ gen: * 减少频繁访问的参考数据的缓存未命中 * 针对特定业务场景优化缓存命中率 -### NewOriginal 函数 - -`model-new-original` 选项控制是否为每个表生成 `NewOriginal` 函数: - -```yaml -gen: - model-new-original: true # 默认: false -``` - -启用后,jzero 会生成额外的 `NewOriginal*XxxModel` 函数,与标准的 `NewModel` 函数一起使用。这些函数提供: - -* **直接模型初始化**: 可以单独创建某个模型实例,而无需初始化所有模型 -* **灵活的缓存配置**: 每个模型可以使用自定义的缓存选项进行初始化 -* **更好的性能**: 只初始化实际需要的模型,避免不必要的初始化开销 - -**示例生成的代码:** - -```go -// 标准初始化(所有模型) -func NewModel(conn sqlx.SqlConn, op ...opts.Opt[modelx.ModelOpts]) Model { - return Model{ - ManageUser: manage_user.NewManageUserModel(conn, op...), - // ... 其他模型 - } -} - -// 单独模型初始化(当 model-new-original: true 时) -func NewOriginalManageUserModel(conn sqlx.SqlConn, c cache.CacheConf, op ...cache.Option) manage_user.ManageUserModel { - return manage_user.NewOriginalManageUserModel(conn, c, op...) -} -``` - -**使用场景:** -* 微服务架构中,只需要特定模型的场景 -* 应用需要为不同模型配置不同缓存选项的情况 -* 通过避免不必要的模型初始化来优化性能 - ## 基于本地 sql ddl 文件生成代码 ```shell @@ -119,8 +81,6 @@ gen: - table: manage_user expiry: 3600 not-found-expiry: 60 - # 为每个表生成 NewOriginal 函数(默认: false) - model-new-original: true # schema model-schema: jzero-admin # Ignore columns while creating or updating rows, 默认为 create_at,created_at,create_time,update_at,updated_at,update_time @@ -260,8 +220,6 @@ gen: - table: manage_user expiry: 3600 not-found-expiry: 60 - # 为每个表生成 NewOriginal 函数(默认: false) - model-new-original: true # 是否使用远程 mysql 数据源生成代码 model-datasource: true # mysql 数据源配置 @@ -302,8 +260,6 @@ gen: - table: manage_user expiry: 3600 not-found-expiry: 60 - # 为每个表生成 NewOriginal 函数(默认: false) - model-new-original: true # 是否使用远程 mysql 数据源生成代码 model-datasource: true # mysql 数据源配置 @@ -344,8 +300,6 @@ gen: - table: manage_user expiry: 3600 not-found-expiry: 60 - # 为每个表生成 NewOriginal 函数(默认: false) - model-new-original: true # 是否使用远程 postgres 数据源生成代码 model-datasource: true # postgres 数据源配置 @@ -386,8 +340,6 @@ gen: - table: manage_user expiry: 3600 not-found-expiry: 60 - # 为每个表生成 NewOriginal 函数(默认: false) - model-new-original: true # 是否使用远程 postgres 数据源生成代码 model-datasource: true # postgres 数据源配置