Skip to content

Commit a6bdea5

Browse files
committed
feat: schema定义表名注解的支持
1 parent 319db93 commit a6bdea5

File tree

7 files changed

+31
-128
lines changed

7 files changed

+31
-128
lines changed

schema/gen/gen.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var tpl, err = template.New("").Funcs(template.FuncMap{
3535
"RendProperty": RendProperty,
3636
"Imports": Imports,
3737
"RendComment": RendComment,
38+
"getTableName": getTableName,
3839
}).ParseFS(templateFile, "template/*.tmpl")
3940

4041
func ToUnderscore(camelCase string) string {
@@ -279,14 +280,29 @@ func genStruct(sc *load.Schema) error {
279280
return os.WriteFile(target, b.Bytes(), os.ModePerm)
280281
}
281282

283+
func getTableName(sc *load.Schema) string {
284+
285+
tableName := strings.ToLower(sc.Name)
286+
287+
if tmp, ok := sc.Annotations["EntSQL"]; ok {
288+
if an, ok := tmp.(map[string]interface{}); ok {
289+
if table, ok := an["table"]; ok {
290+
return table.(string)
291+
}
292+
}
293+
}
294+
295+
return ToUnderscore(tableName)
296+
}
297+
282298
func genConst(sc *load.Schema) error {
283299
name := strings.ToLower(sc.Name)
284300
err = os.MkdirAll(name, os.ModePerm)
285301
if err != nil {
286302
return err
287303
}
288-
var b bytes.Buffer
289304

305+
var b bytes.Buffer
290306
target := fmt.Sprintf("%s/%s.go", name, name)
291307
err := tpl.ExecuteTemplate(&b, "const.tmpl", sc)
292308
if err != nil {

schema/gen/template/const.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
package {{ToLower .Name}}
33

44
const (
5-
Label = "{{ToUnderscore .Name}}"
5+
Label = "{{getTableName .}}"
66
{{range .Fields}}
77
Field{{ToCamelCase .Name}} = "{{.Name}}"
88
{{end}}
9-
Table = "{{ToUnderscore .Name}}"
9+
Table = "{{getTableName .}}"
1010
)
1111

1212

schema/gen/template/migrate.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
var (
1515
{{range .}}
1616
{{ToCamelCase .Name}}Mapping = &field.Mapping{
17-
Name: "{{ToUnderscore .Name}}",
17+
Name: "{{getTableName .}}",
1818
Properties: map[string]interface{}{
1919
{{range .Fields}}
2020
"{{ToUnderscore .Name}}": map[string]interface{}{

test/gen_test.go

Lines changed: 6 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
package test
22

33
import (
4-
"bytes"
54
"entgo.io/ent/entc/load"
65
entfield "entgo.io/ent/schema/field"
76
"fmt"
87
"github.com/guihouchang/go-elasticsearch/schema/field"
98
"github.com/guihouchang/go-elasticsearch/schema/gen"
10-
"go/parser"
11-
"go/token"
129
"html/template"
13-
"os"
14-
"os/exec"
15-
"path/filepath"
10+
"math"
1611
"strings"
1712
"testing"
1813
"unicode"
@@ -108,109 +103,12 @@ func Type(t entfield.Type) string {
108103
return "string"
109104
}
110105

111-
func genClient() error {
112-
pkgName, err := os.Getwd()
113-
if err != nil {
114-
return err
115-
}
116-
117-
moduleName, err := executeGoList()
118-
if err != nil {
119-
return err
120-
}
121-
122-
pkgName = filepath.Base(pkgName)
123-
124-
var b bytes.Buffer
125-
target := fmt.Sprintf("%s.go", "client")
126-
err = tpl.ExecuteTemplate(&b, "client.tmpl", struct {
127-
PkgName string
128-
ModuleName string
129-
}{
130-
PkgName: pkgName,
131-
ModuleName: moduleName,
132-
})
133-
if err != nil {
134-
return err
135-
}
136-
137-
err = os.WriteFile(target, b.Bytes(), os.ModePerm)
138-
if err != nil {
139-
return err
140-
}
141-
142-
return nil
143-
}
144-
145-
func executeGoList() (string, error) {
146-
cmd := exec.Command("go", "list")
147-
cmd.Env = append(os.Environ(), "GO111MODULE=on")
148-
149-
output, err := cmd.Output()
150-
if err != nil {
151-
return "", err
152-
}
153-
154-
moduleName := strings.TrimSpace(string(output))
155-
return moduleName, nil
156-
}
157-
158-
func genMigrate(scs []*load.Schema) error {
159-
// 创建migrate目录
160-
err = os.MkdirAll("migrate", os.ModePerm)
161-
if err != nil {
162-
return err
163-
}
164-
165-
var b bytes.Buffer
166-
target := fmt.Sprintf("migrate/%s.go", "schema")
167-
err = tpl.ExecuteTemplate(&b, "migrate.tmpl", scs)
168-
if err != nil {
169-
return err
170-
}
106+
func TestFloat(t *testing.T) {
107+
total := 10000
108+
pageSize := 26
171109

172-
return os.WriteFile(target, b.Bytes(), os.ModePerm)
173-
}
174-
175-
func genStruct(sc *load.Schema) error {
176-
pkgName, err := os.Getwd()
177-
if err != nil {
178-
return err
179-
}
180-
181-
pkgName = filepath.Base(pkgName)
182-
183-
var b bytes.Buffer
184-
target := fmt.Sprintf("%s.go", strings.ToLower(sc.Name))
185-
err = tpl.ExecuteTemplate(&b, "struct.tmpl", struct {
186-
PkgName string
187-
Schema *load.Schema
188-
}{
189-
PkgName: pkgName,
190-
Schema: sc,
191-
})
192-
if err != nil {
193-
return err
194-
}
195-
196-
return os.WriteFile(target, b.Bytes(), os.ModePerm)
197-
}
198-
199-
func genConst(sc *load.Schema) error {
200-
name := strings.ToLower(sc.Name)
201-
err = os.MkdirAll(name, os.ModePerm)
202-
if err != nil {
203-
return err
204-
}
205-
var b bytes.Buffer
206-
207-
target := fmt.Sprintf("%s/%s.go", name, name)
208-
err := tpl.ExecuteTemplate(&b, "const.tmpl", sc)
209-
if err != nil {
210-
return err
211-
}
212-
213-
return os.WriteFile(target, b.Bytes(), os.ModePerm)
110+
totalPage := math.Ceil(float64(total) / float64(pageSize))
111+
fmt.Println(totalPage)
214112
}
215113

216114
func Test_Load(t *testing.T) {
@@ -219,16 +117,3 @@ func Test_Load(t *testing.T) {
219117
gen.Gen(path)
220118

221119
}
222-
223-
func getPackagePath(filePath string) (string, error) {
224-
fset := token.NewFileSet()
225-
226-
astFile, err := parser.ParseFile(fset, filePath, nil, parser.PackageClauseOnly)
227-
if err != nil {
228-
return "", err
229-
}
230-
231-
pkgPath := astFile.Name.Name
232-
233-
return pkgPath, nil
234-
}

test/migrate/schema.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/schema/user.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package schema
22

33
import (
44
"entgo.io/ent"
5+
"entgo.io/ent/dialect/entsql"
56
"entgo.io/ent/schema"
67
"github.com/guihouchang/go-elasticsearch/schema/annotation"
78
esfield "github.com/guihouchang/go-elasticsearch/schema/field"
@@ -37,5 +38,6 @@ func (UserData) Annotations() []schema.Annotation {
3738
"number_of_shards": 1,
3839
"number_of_replicas": 2,
3940
}},
41+
entsql.Annotation{Table: "test_user_data"},
4042
}
4143
}

test/userdata/userdata.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)