mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-09 16:10:00 +08:00
add console & example
This commit is contained in:
2
tools/goctl/model/sql/example/generator.sh
Normal file
2
tools/goctl/model/sql/example/generator.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
go run .
|
||||
17
tools/goctl/model/sql/example/main.go
Normal file
17
tools/goctl/model/sql/example/main.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/tal-tech/go-zero/core/lang"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/gen"
|
||||
)
|
||||
|
||||
// go run .
|
||||
func main() {
|
||||
// generating with cache
|
||||
withCacheGenerator := gen.NewDefaultGenerator("./test.sql", "./withcachemodel")
|
||||
lang.Must(withCacheGenerator.Start(true))
|
||||
|
||||
// generating without cache
|
||||
withoutGenerator := gen.NewDefaultGenerator("./test.sql", "./withoutcachemodel")
|
||||
lang.Must(withoutGenerator.Start(false))
|
||||
}
|
||||
30
tools/goctl/model/sql/example/test.sql
Normal file
30
tools/goctl/model/sql/example/test.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
-- user_snake
|
||||
CREATE TABLE `user_snake` (
|
||||
`id` bigint(10) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名称',
|
||||
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户密码',
|
||||
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
|
||||
`gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公开',
|
||||
`nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',
|
||||
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `name_index` (`name`),
|
||||
KEY `mobile_index` (`mobile`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
-- userCamel (disable AUTO_INCREMENT)
|
||||
CREATE TABLE `userCamel` (
|
||||
`id` bigint(10) NOT NULL,
|
||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名称',
|
||||
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户密码',
|
||||
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
|
||||
`gender` char(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公开',
|
||||
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',
|
||||
`createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `nameIndex` (`name`),
|
||||
KEY `mobile_index` (`mobile`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
7
tools/goctl/model/sql/example/withcachemodel/error.go
Executable file
7
tools/goctl/model/sql/example/withcachemodel/error.go
Executable file
@@ -0,0 +1,7 @@
|
||||
package model
|
||||
|
||||
import "github.com/tal-tech/go-zero/core/stores/sqlx"
|
||||
|
||||
var (
|
||||
ErrNotFound = sqlx.ErrNotFound
|
||||
)
|
||||
147
tools/goctl/model/sql/example/withcachemodel/usercamelmodel.go
Executable file
147
tools/goctl/model/sql/example/withcachemodel/usercamelmodel.go
Executable file
@@ -0,0 +1,147 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/tal-tech/go-zero/core/stores/cache"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlc"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlx"
|
||||
"github.com/tal-tech/go-zero/core/stringx"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/builderx"
|
||||
)
|
||||
|
||||
var (
|
||||
userCamelFieldNames = builderx.FieldNames(&UserCamel{})
|
||||
userCamelRows = strings.Join(userCamelFieldNames, ",")
|
||||
userCamelRowsExpectAutoSet = strings.Join(stringx.Remove(userCamelFieldNames, "create_time", "update_time"), ",")
|
||||
userCamelRowsWithPlaceHolder = strings.Join(stringx.Remove(userCamelFieldNames, "id", "create_time", "update_time"), "=?,") + "=?"
|
||||
|
||||
cacheUserCamelIdPrefix = "cache#UserCamel#id#"
|
||||
cacheUserCamelNamePrefix = "cache#UserCamel#name#"
|
||||
cacheUserCamelMobilePrefix = "cache#UserCamel#mobile#"
|
||||
)
|
||||
|
||||
type (
|
||||
UserCamelModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
UserCamel struct {
|
||||
Id int64 `db:"id"`
|
||||
Name string `db:"name"` // 用户名称
|
||||
Password string `db:"password"` // 用户密码
|
||||
Mobile string `db:"mobile"` // 手机号
|
||||
Gender string `db:"gender"` // 男|女|未公开
|
||||
Nickname string `db:"nickname"` // 用户昵称
|
||||
CreateTime time.Time `db:"createTime"`
|
||||
UpdateTime time.Time `db:"updateTime"`
|
||||
}
|
||||
)
|
||||
|
||||
func NewUserCamelModel(conn sqlx.SqlConn, c cache.CacheConf, table string) *UserCamelModel {
|
||||
return &UserCamelModel{
|
||||
CachedConn: sqlc.NewConn(conn, c),
|
||||
table: table,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) Insert(data UserCamel) error {
|
||||
query := `insert into ` + m.table + `(` + userCamelRowsExpectAutoSet + `) value (?, ?, ?, ?, ?, ?)`
|
||||
_, err := m.ExecNoCache(query, data.Id, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) FindOne(id int64) (*UserCamel, error) {
|
||||
userCamelIdKey := fmt.Sprintf("%s%v", cacheUserCamelIdPrefix, id)
|
||||
var resp UserCamel
|
||||
err := m.QueryRow(&resp, userCamelIdKey, func(conn sqlx.SqlConn, v interface{}) error {
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
return conn.QueryRow(v, query, id)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) FindOneByName(name string) (*UserCamel, error) {
|
||||
userCamelNameKey := fmt.Sprintf("%s%v", cacheUserCamelNamePrefix, name)
|
||||
var resp UserCamel
|
||||
err := m.QueryRowIndex(&resp, userCamelNameKey, func(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheUserCamelIdPrefix, primary)
|
||||
}, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where name = ? limit 1`
|
||||
if err := conn.QueryRow(&resp, query, name); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, func(conn sqlx.SqlConn, v, primary interface{}) error {
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
return conn.QueryRow(v, query, primary)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) FindOneByMobile(mobile string) (*UserCamel, error) {
|
||||
userCamelMobileKey := fmt.Sprintf("%s%v", cacheUserCamelMobilePrefix, mobile)
|
||||
var resp UserCamel
|
||||
err := m.QueryRowIndex(&resp, userCamelMobileKey, func(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheUserCamelIdPrefix, primary)
|
||||
}, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where mobile = ? limit 1`
|
||||
if err := conn.QueryRow(&resp, query, mobile); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, func(conn sqlx.SqlConn, v, primary interface{}) error {
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
return conn.QueryRow(v, query, primary)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) Update(data UserCamel) error {
|
||||
userCamelIdKey := fmt.Sprintf("%s%v", cacheUserCamelIdPrefix, data.Id)
|
||||
_, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := `update ` + m.table + ` set ` + userCamelRowsWithPlaceHolder + ` where id = ?`
|
||||
return conn.Exec(query, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname, data.Id)
|
||||
}, userCamelIdKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) Delete(id int64) error {
|
||||
data, err := m.FindOne(id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
userCamelIdKey := fmt.Sprintf("%s%v", cacheUserCamelIdPrefix, id)
|
||||
userCamelNameKey := fmt.Sprintf("%s%v", cacheUserCamelNamePrefix, data.Name)
|
||||
userCamelMobileKey := fmt.Sprintf("%s%v", cacheUserCamelMobilePrefix, data.Mobile)
|
||||
_, err = m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := `delete from ` + m.table + ` where id = ?`
|
||||
return conn.Exec(query, id)
|
||||
}, userCamelIdKey, userCamelNameKey, userCamelMobileKey)
|
||||
return err
|
||||
}
|
||||
147
tools/goctl/model/sql/example/withcachemodel/usersnakemodel.go
Executable file
147
tools/goctl/model/sql/example/withcachemodel/usersnakemodel.go
Executable file
@@ -0,0 +1,147 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/tal-tech/go-zero/core/stores/cache"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlc"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlx"
|
||||
"github.com/tal-tech/go-zero/core/stringx"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/builderx"
|
||||
)
|
||||
|
||||
var (
|
||||
userSnakeFieldNames = builderx.FieldNames(&UserSnake{})
|
||||
userSnakeRows = strings.Join(userSnakeFieldNames, ",")
|
||||
userSnakeRowsExpectAutoSet = strings.Join(stringx.Remove(userSnakeFieldNames, "id", "create_time", "update_time"), ",")
|
||||
userSnakeRowsWithPlaceHolder = strings.Join(stringx.Remove(userSnakeFieldNames, "id", "create_time", "update_time"), "=?,") + "=?"
|
||||
|
||||
cacheUserSnakeIdPrefix = "cache#UserSnake#id#"
|
||||
cacheUserSnakeNamePrefix = "cache#UserSnake#name#"
|
||||
cacheUserSnakeMobilePrefix = "cache#UserSnake#mobile#"
|
||||
)
|
||||
|
||||
type (
|
||||
UserSnakeModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
UserSnake struct {
|
||||
Id int64 `db:"id"`
|
||||
Name string `db:"name"` // 用户名称
|
||||
Password string `db:"password"` // 用户密码
|
||||
Mobile string `db:"mobile"` // 手机号
|
||||
Gender string `db:"gender"` // 男|女|未公开
|
||||
Nickname string `db:"nickname"` // 用户昵称
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
}
|
||||
)
|
||||
|
||||
func NewUserSnakeModel(conn sqlx.SqlConn, c cache.CacheConf, table string) *UserSnakeModel {
|
||||
return &UserSnakeModel{
|
||||
CachedConn: sqlc.NewConn(conn, c),
|
||||
table: table,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) Insert(data UserSnake) error {
|
||||
query := `insert into ` + m.table + `(` + userSnakeRowsExpectAutoSet + `) value (?, ?, ?, ?, ?)`
|
||||
_, err := m.ExecNoCache(query, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) FindOne(id int64) (*UserSnake, error) {
|
||||
userSnakeIdKey := fmt.Sprintf("%s%v", cacheUserSnakeIdPrefix, id)
|
||||
var resp UserSnake
|
||||
err := m.QueryRow(&resp, userSnakeIdKey, func(conn sqlx.SqlConn, v interface{}) error {
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
return conn.QueryRow(v, query, id)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) FindOneByName(name string) (*UserSnake, error) {
|
||||
userSnakeNameKey := fmt.Sprintf("%s%v", cacheUserSnakeNamePrefix, name)
|
||||
var resp UserSnake
|
||||
err := m.QueryRowIndex(&resp, userSnakeNameKey, func(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheUserSnakeIdPrefix, primary)
|
||||
}, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where name = ? limit 1`
|
||||
if err := conn.QueryRow(&resp, query, name); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, func(conn sqlx.SqlConn, v, primary interface{}) error {
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
return conn.QueryRow(v, query, primary)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) FindOneByMobile(mobile string) (*UserSnake, error) {
|
||||
userSnakeMobileKey := fmt.Sprintf("%s%v", cacheUserSnakeMobilePrefix, mobile)
|
||||
var resp UserSnake
|
||||
err := m.QueryRowIndex(&resp, userSnakeMobileKey, func(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheUserSnakeIdPrefix, primary)
|
||||
}, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where mobile = ? limit 1`
|
||||
if err := conn.QueryRow(&resp, query, mobile); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp.Id, nil
|
||||
}, func(conn sqlx.SqlConn, v, primary interface{}) error {
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
return conn.QueryRow(v, query, primary)
|
||||
})
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) Update(data UserSnake) error {
|
||||
userSnakeIdKey := fmt.Sprintf("%s%v", cacheUserSnakeIdPrefix, data.Id)
|
||||
_, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := `update ` + m.table + ` set ` + userSnakeRowsWithPlaceHolder + ` where id = ?`
|
||||
return conn.Exec(query, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname, data.Id)
|
||||
}, userSnakeIdKey)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) Delete(id int64) error {
|
||||
data, err := m.FindOne(id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
userSnakeIdKey := fmt.Sprintf("%s%v", cacheUserSnakeIdPrefix, id)
|
||||
userSnakeNameKey := fmt.Sprintf("%s%v", cacheUserSnakeNamePrefix, data.Name)
|
||||
userSnakeMobileKey := fmt.Sprintf("%s%v", cacheUserSnakeMobilePrefix, data.Mobile)
|
||||
_, err = m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := `delete from ` + m.table + ` where id = ?`
|
||||
return conn.Exec(query, id)
|
||||
}, userSnakeMobileKey, userSnakeIdKey, userSnakeNameKey)
|
||||
return err
|
||||
}
|
||||
7
tools/goctl/model/sql/example/withoutcachemodel/error.go
Executable file
7
tools/goctl/model/sql/example/withoutcachemodel/error.go
Executable file
@@ -0,0 +1,7 @@
|
||||
package model
|
||||
|
||||
import "github.com/tal-tech/go-zero/core/stores/sqlx"
|
||||
|
||||
var (
|
||||
ErrNotFound = sqlx.ErrNotFound
|
||||
)
|
||||
104
tools/goctl/model/sql/example/withoutcachemodel/usercamelmodel.go
Executable file
104
tools/goctl/model/sql/example/withoutcachemodel/usercamelmodel.go
Executable file
@@ -0,0 +1,104 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/tal-tech/go-zero/core/stores/cache"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlc"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlx"
|
||||
"github.com/tal-tech/go-zero/core/stringx"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/builderx"
|
||||
)
|
||||
|
||||
var (
|
||||
userCamelFieldNames = builderx.FieldNames(&UserCamel{})
|
||||
userCamelRows = strings.Join(userCamelFieldNames, ",")
|
||||
userCamelRowsExpectAutoSet = strings.Join(stringx.Remove(userCamelFieldNames, "create_time", "update_time"), ",")
|
||||
userCamelRowsWithPlaceHolder = strings.Join(stringx.Remove(userCamelFieldNames, "id", "create_time", "update_time"), "=?,") + "=?"
|
||||
)
|
||||
|
||||
type (
|
||||
UserCamelModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
UserCamel struct {
|
||||
Id int64 `db:"id"`
|
||||
Name string `db:"name"` // 用户名称
|
||||
Password string `db:"password"` // 用户密码
|
||||
Mobile string `db:"mobile"` // 手机号
|
||||
Gender string `db:"gender"` // 男|女|未公开
|
||||
Nickname string `db:"nickname"` // 用户昵称
|
||||
CreateTime time.Time `db:"createTime"`
|
||||
UpdateTime time.Time `db:"updateTime"`
|
||||
}
|
||||
)
|
||||
|
||||
func NewUserCamelModel(conn sqlx.SqlConn, c cache.CacheConf, table string) *UserCamelModel {
|
||||
return &UserCamelModel{
|
||||
CachedConn: sqlc.NewConn(conn, c),
|
||||
table: table,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) Insert(data UserCamel) error {
|
||||
query := `insert into ` + m.table + `(` + userCamelRowsExpectAutoSet + `) value (?, ?, ?, ?, ?, ?)`
|
||||
_, err := m.ExecNoCache(query, data.Id, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) FindOne(id int64) (*UserCamel, error) {
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
var resp UserCamel
|
||||
err := m.QueryRowNoCache(&resp, query, id)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) FindOneByName(name string) (*UserCamel, error) {
|
||||
var resp UserCamel
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where name limit 1`
|
||||
err := m.QueryRowNoCache(&resp, query, name)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) FindOneByMobile(mobile string) (*UserCamel, error) {
|
||||
var resp UserCamel
|
||||
query := `select ` + userCamelRows + ` from ` + m.table + ` where mobile limit 1`
|
||||
err := m.QueryRowNoCache(&resp, query, mobile)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) Update(data UserCamel) error {
|
||||
query := `update ` + m.table + ` set ` + userCamelRowsWithPlaceHolder + ` where id = ?`
|
||||
_, err := m.ExecNoCache(query, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname, data.Id)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserCamelModel) Delete(id int64) error {
|
||||
query := `delete from ` + m.table + ` where id = ?`
|
||||
_, err := m.ExecNoCache(query, id)
|
||||
return err
|
||||
}
|
||||
104
tools/goctl/model/sql/example/withoutcachemodel/usersnakemodel.go
Executable file
104
tools/goctl/model/sql/example/withoutcachemodel/usersnakemodel.go
Executable file
@@ -0,0 +1,104 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/tal-tech/go-zero/core/stores/cache"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlc"
|
||||
"github.com/tal-tech/go-zero/core/stores/sqlx"
|
||||
"github.com/tal-tech/go-zero/core/stringx"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/builderx"
|
||||
)
|
||||
|
||||
var (
|
||||
userSnakeFieldNames = builderx.FieldNames(&UserSnake{})
|
||||
userSnakeRows = strings.Join(userSnakeFieldNames, ",")
|
||||
userSnakeRowsExpectAutoSet = strings.Join(stringx.Remove(userSnakeFieldNames, "id", "create_time", "update_time"), ",")
|
||||
userSnakeRowsWithPlaceHolder = strings.Join(stringx.Remove(userSnakeFieldNames, "id", "create_time", "update_time"), "=?,") + "=?"
|
||||
)
|
||||
|
||||
type (
|
||||
UserSnakeModel struct {
|
||||
sqlc.CachedConn
|
||||
table string
|
||||
}
|
||||
|
||||
UserSnake struct {
|
||||
Id int64 `db:"id"`
|
||||
Name string `db:"name"` // 用户名称
|
||||
Password string `db:"password"` // 用户密码
|
||||
Mobile string `db:"mobile"` // 手机号
|
||||
Gender string `db:"gender"` // 男|女|未公开
|
||||
Nickname string `db:"nickname"` // 用户昵称
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
}
|
||||
)
|
||||
|
||||
func NewUserSnakeModel(conn sqlx.SqlConn, c cache.CacheConf, table string) *UserSnakeModel {
|
||||
return &UserSnakeModel{
|
||||
CachedConn: sqlc.NewConn(conn, c),
|
||||
table: table,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) Insert(data UserSnake) error {
|
||||
query := `insert into ` + m.table + `(` + userSnakeRowsExpectAutoSet + `) value (?, ?, ?, ?, ?)`
|
||||
_, err := m.ExecNoCache(query, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) FindOne(id int64) (*UserSnake, error) {
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where id = ? limit 1`
|
||||
var resp UserSnake
|
||||
err := m.QueryRowNoCache(&resp, query, id)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) FindOneByName(name string) (*UserSnake, error) {
|
||||
var resp UserSnake
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where name limit 1`
|
||||
err := m.QueryRowNoCache(&resp, query, name)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) FindOneByMobile(mobile string) (*UserSnake, error) {
|
||||
var resp UserSnake
|
||||
query := `select ` + userSnakeRows + ` from ` + m.table + ` where mobile limit 1`
|
||||
err := m.QueryRowNoCache(&resp, query, mobile)
|
||||
switch err {
|
||||
case nil:
|
||||
return &resp, nil
|
||||
case sqlc.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) Update(data UserSnake) error {
|
||||
query := `update ` + m.table + ` set ` + userSnakeRowsWithPlaceHolder + ` where id = ?`
|
||||
_, err := m.ExecNoCache(query, data.Name, data.Password, data.Mobile, data.Gender, data.Nickname, data.Id)
|
||||
return err
|
||||
}
|
||||
|
||||
func (m *UserSnakeModel) Delete(id int64) error {
|
||||
query := `delete from ` + m.table + ` where id = ?`
|
||||
_, err := m.ExecNoCache(query, id)
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user