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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
@ -16,7 +17,7 @@ import (
|
|||||||
|
|
||||||
"gorm.io/plugin/dbresolver"
|
"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 {
|
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()
|
tableName := _user.userDo.TableName()
|
||||||
_user.ALL = field.NewAsterisk(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.CreatedAt = field.NewTime(tableName, "created_at")
|
||||||
_user.UpdatedAt = field.NewTime(tableName, "updated_at")
|
_user.UpdatedAt = field.NewTime(tableName, "updated_at")
|
||||||
_user.DeletedAt = field.NewField(tableName, "deleted_at")
|
_user.DeletedAt = field.NewField(tableName, "deleted_at")
|
||||||
@ -43,7 +44,7 @@ type user struct {
|
|||||||
userDo
|
userDo
|
||||||
|
|
||||||
ALL field.Asterisk
|
ALL field.Asterisk
|
||||||
ID field.Int64
|
ID field.Uint
|
||||||
CreatedAt field.Time
|
CreatedAt field.Time
|
||||||
UpdatedAt field.Time
|
UpdatedAt field.Time
|
||||||
DeletedAt field.Field
|
DeletedAt field.Field
|
||||||
@ -65,7 +66,7 @@ func (u user) As(alias string) *user {
|
|||||||
|
|
||||||
func (u *user) updateTableName(table string) *user {
|
func (u *user) updateTableName(table string) *user {
|
||||||
u.ALL = field.NewAsterisk(table)
|
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.CreatedAt = field.NewTime(table, "created_at")
|
||||||
u.UpdatedAt = field.NewTime(table, "updated_at")
|
u.UpdatedAt = field.NewTime(table, "updated_at")
|
||||||
u.DeletedAt = field.NewField(table, "deleted_at")
|
u.DeletedAt = field.NewField(table, "deleted_at")
|
||||||
@ -167,6 +168,25 @@ type IUserDo interface {
|
|||||||
Returning(value interface{}, columns ...string) IUserDo
|
Returning(value interface{}, columns ...string) IUserDo
|
||||||
UnderlyingDB() *gorm.DB
|
UnderlyingDB() *gorm.DB
|
||||||
schema.Tabler
|
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 {
|
func (u userDo) Debug() IUserDo {
|
||||||
|
@ -1,9 +1,19 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
import "gorm.io/gorm"
|
import (
|
||||||
|
"gorm.io/gen"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
Email string `gorm:"uniqueIndex;type:varchar(255) not null"`
|
Email string `gorm:"uniqueIndex;type:varchar(255) not null"`
|
||||||
PasswordHashed string `gorm:"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
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/suyiiyii/hertz101/app/user/biz/dal/mysql"
|
"github.com/suyiiyii/hertz101/app/user/biz/model"
|
||||||
"gorm.io/gen"
|
"gorm.io/gen"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
mysql.Init()
|
//mysql.Init()
|
||||||
|
|
||||||
db := mysql.DB
|
//db := mysql.DB
|
||||||
|
|
||||||
g := gen.NewGenerator(gen.Config{
|
g := gen.NewGenerator(gen.Config{
|
||||||
OutPath: "biz/dal/query",
|
OutPath: "biz/dal/query",
|
||||||
Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface,
|
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()
|
g.Execute()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user