feat(user): 生成用户查询接口并优化模型
- 在 model/user.go 中添加 Querier 接口,定义了 GetByEmail 方法- 在 query/users.gen.go 中实现 Querier 接口的 GetByEmail 方法 - 修改 gen.go以使用新的 Querier 接口和 User 模型生成代码 - 将 users.gen.go 中的 ID 类型从 Int64 改为 Uint
This commit is contained in:
parent
500f5b3339
commit
83d9bbb530
@ -6,6 +6,7 @@ package query
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
@ -16,7 +17,7 @@ import (
|
||||
|
||||
"gorm.io/plugin/dbresolver"
|
||||
|
||||
"github.com/suyiiyii/hertz101/app/user/biz/dal/model"
|
||||
"github.com/suyiiyii/hertz101/app/user/biz/model"
|
||||
)
|
||||
|
||||
func newUser(db *gorm.DB, opts ...gen.DOOption) user {
|
||||
@ -27,7 +28,7 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user {
|
||||
|
||||
tableName := _user.userDo.TableName()
|
||||
_user.ALL = field.NewAsterisk(tableName)
|
||||
_user.ID = field.NewInt64(tableName, "id")
|
||||
_user.ID = field.NewUint(tableName, "id")
|
||||
_user.CreatedAt = field.NewTime(tableName, "created_at")
|
||||
_user.UpdatedAt = field.NewTime(tableName, "updated_at")
|
||||
_user.DeletedAt = field.NewField(tableName, "deleted_at")
|
||||
@ -43,7 +44,7 @@ type user struct {
|
||||
userDo
|
||||
|
||||
ALL field.Asterisk
|
||||
ID field.Int64
|
||||
ID field.Uint
|
||||
CreatedAt field.Time
|
||||
UpdatedAt field.Time
|
||||
DeletedAt field.Field
|
||||
@ -65,7 +66,7 @@ func (u user) As(alias string) *user {
|
||||
|
||||
func (u *user) updateTableName(table string) *user {
|
||||
u.ALL = field.NewAsterisk(table)
|
||||
u.ID = field.NewInt64(table, "id")
|
||||
u.ID = field.NewUint(table, "id")
|
||||
u.CreatedAt = field.NewTime(table, "created_at")
|
||||
u.UpdatedAt = field.NewTime(table, "updated_at")
|
||||
u.DeletedAt = field.NewField(table, "deleted_at")
|
||||
@ -167,6 +168,25 @@ type IUserDo interface {
|
||||
Returning(value interface{}, columns ...string) IUserDo
|
||||
UnderlyingDB() *gorm.DB
|
||||
schema.Tabler
|
||||
|
||||
GetByEmail(email string) (result *model.User, err error)
|
||||
}
|
||||
|
||||
// GetByEmail get user by email
|
||||
//
|
||||
// SELECT * FROM @@table WHERE email = @email
|
||||
func (u userDo) GetByEmail(email string) (result *model.User, err error) {
|
||||
var params []interface{}
|
||||
|
||||
var generateSQL strings.Builder
|
||||
params = append(params, email)
|
||||
generateSQL.WriteString("SELECT * FROM users WHERE email = ? ")
|
||||
|
||||
var executeSQL *gorm.DB
|
||||
executeSQL = u.UnderlyingDB().Raw(generateSQL.String(), params...).Take(&result) // ignore_security_alert
|
||||
err = executeSQL.Error
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (u userDo) Debug() IUserDo {
|
||||
|
@ -1,9 +1,19 @@
|
||||
package model
|
||||
|
||||
import "gorm.io/gorm"
|
||||
import (
|
||||
"gorm.io/gen"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
gorm.Model
|
||||
Email string `gorm:"uniqueIndex;type:varchar(255) not null"`
|
||||
PasswordHashed string `gorm:"type:varchar(255) not null"`
|
||||
}
|
||||
|
||||
type Querier interface {
|
||||
// GetByEmail get user by email
|
||||
//
|
||||
// SELECT * FROM @@table WHERE email = @email
|
||||
GetByEmail(email string) (*gen.T, error)
|
||||
}
|
||||
|
@ -1,23 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/suyiiyii/hertz101/app/user/biz/dal/mysql"
|
||||
"github.com/suyiiyii/hertz101/app/user/biz/model"
|
||||
"gorm.io/gen"
|
||||
)
|
||||
|
||||
func main() {
|
||||
mysql.Init()
|
||||
//mysql.Init()
|
||||
|
||||
db := mysql.DB
|
||||
//db := mysql.DB
|
||||
|
||||
g := gen.NewGenerator(gen.Config{
|
||||
OutPath: "biz/dal/query",
|
||||
Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface,
|
||||
})
|
||||
|
||||
g.UseDB(db)
|
||||
//g.UseDB(db)
|
||||
|
||||
g.ApplyBasic(g.GenerateModel("users"))
|
||||
//g.ApplyBasic(g.GenerateModel("users"))
|
||||
g.ApplyInterface(func(model.Querier) {}, model.User{})
|
||||
|
||||
g.Execute()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user