-
-
Notifications
You must be signed in to change notification settings - Fork 339
Open
Description
Your Question
I want to use SingularTable
style, but the generated code uses plural table name.
func (u userDo) FindByName(name string) (result []model.User, err error) {
var params []interface{}
var generateSQL strings.Builder
params = append(params, name)
generateSQL.WriteString("SELECT * FROM users WHERE name = ? ")
var executeSQL *gorm.DB
executeSQL = u.UnderlyingDB().Raw(generateSQL.String(), params...).Find(&result) // ignore_security_alert
err = executeSQL.Error
return
}
This is my gen code
package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gen"
"gorm.io/gorm"
"gorm.io/gorm/schema"
"github.com/bluven/hello-gen/model"
)
// Dynamic SQL
type Querier interface {
// SELECT * FROM @@table WHERE name = @name
FindByName(name string) ([]gen.T, error)
}
func main() {
generateQuery()
}
func generateQuery() {
dsn := "bluven:Admin123!@tcp(127.0.0.1:3306)/learn_gorm?charset=utf8mb4&parseTime=True&loc=Local"
namingStrategy := schema.NamingStrategy{
SingularTable: true,
}
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
NamingStrategy: namingStrategy,
})
if err != nil {
panic("failed to connect database")
}
config := &gen.Config{
OutPath: "./query",
Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode
}
config.WithTableNameStrategy(namingStrategy.TableName)
g := gen.NewGenerator(*config)
db.AutoMigrate(&model.User{})
g.UseDB(db) // reuse your gorm db
g.ApplyBasic(model.User{})
g.ApplyInterface(func(Querier) {}, model.User{})
g.Execute()
}
package model
import (
"gorm.io/gorm"
)
type User struct {
gorm.Model
Name string
Password string
IsAdmin bool
}
What should I do to make NamingStrategy work
Metadata
Metadata
Assignees
Labels
No labels