forked from go-gorm/gen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathobject.go
60 lines (51 loc) · 1.19 KB
/
object.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package helper
import (
"errors"
"fmt"
"gorm.io/gen/field"
)
// Object an object interface
type Object interface {
// TableName return table name
TableName() string
// StructName return struct name
StructName() string
// FileName return field name
FileName() string
// ImportPkgPaths return need import package path
ImportPkgPaths() []string
// Fields return field array
Fields() []Field
}
// Field a field interface
type Field interface {
// Name return field name
Name() string
// Type return field type
Type() string
// ColumnName return column name
ColumnName() string
// GORMTag return gorm tag
GORMTag() string
// JSONTag return json tag
JSONTag() string
// Tag return field tag
Tag() field.Tag
// Comment return comment
Comment() string
}
// CheckObject check ojbect
func CheckObject(obj Object) error {
if obj.StructName() == "" {
return errors.New("Object's StructName() cannot be empty")
}
for _, field := range obj.Fields() {
switch "" {
case field.Name():
return fmt.Errorf("Object %s's Field.Name() cannot be empty", obj.StructName())
case field.Type():
return fmt.Errorf("Object %s's Field.Type() cannot be empty", obj.StructName())
}
}
return nil
}