Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions cmd/jzero/.template/go-zero/model/find-one-by-field.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -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}}
Expand Down
23 changes: 0 additions & 23 deletions cmd/jzero/.template/go-zero/model/find-one.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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}}
FindOneBy{{.upperField}}(ctx context.Context, session sqlx.Session, {{.in}}) (*{{.upperStartCamelObject}}, error)
3 changes: 1 addition & 2 deletions cmd/jzero/.template/go-zero/model/interface-find-one.tpl
Original file line number Diff line number Diff line change
@@ -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}}
FindOne(ctx context.Context, session sqlx.Session, {{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error)
46 changes: 0 additions & 46 deletions cmd/jzero/.template/model/model.go.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -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)}}
Expand Down
1 change: 0 additions & 1 deletion cmd/jzero/internal/command/gen/genmodel/plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion cmd/jzero/internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"`
Expand Down
48 changes: 0 additions & 48 deletions docs/src/zh-CN/guide/model.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ jzero 支持灵活的模型缓存配置:
* **model-cache**: 启用或禁用模型缓存(默认: false)
* **model-cache-table**: 指定哪些表需要缓存(默认: * 表示所有表)
* **model-cache-expiry-table**: 为特定表配置自定义缓存过期时间
* **model-new-original**: 为每个表生成 NewOriginal 初始化函数(默认: false)

### 缓存过期时间配置

Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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 数据源配置
Expand Down Expand Up @@ -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 数据源配置
Expand Down Expand Up @@ -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 数据源配置
Expand Down Expand Up @@ -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 数据源配置
Expand Down
Loading