/
model_meta.go
57 lines (47 loc) · 1.29 KB
/
model_meta.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
package mdb
import (
"github.com/mabetle/mcore"
)
// inspect database.
// most of meta relation functions depends on ROOT user or has select rights
// for database INFORMATION_SCHEMA.
//
// Only for mysql.
type MetaDatabase struct {
SchemaName string
}
type MetaTable struct {
SchemaName string
TableName string
// when create a table, can set comment in mysql.
TableComment string //2048
Columns []MetaColumn
}
type MetaColumn struct {
SchemaName string
TableName string
ColumnName string
ColumnDefault string // longtext in database
Nullable string // yes or no, varchar(3) in database
DataType string // varchar long ...varchar(64) in database
ColumnType string // varchar(50), decimal(19, 2) ...
ColumnKey string // PRI or null
ColumnComment string // 1024
OrdinalPosition int64 // col seq
CharacterMaxLength int64 // varchar(500) is 500
NumericPrecision int64 // long(19) is 19
NumericScale int64 // number or null
DatetimePrecision int64 //
}
func (c MetaColumn) IsNullable() (r bool) {
r = mcore.String(c.Nullable).IsEqualIgnoreCase("yes")
return
}
func (c MetaColumn) IsPrimaryKey() (r bool) {
r = mcore.String(c.ColumnKey).IsEqualIgnoreCase("pri")
return
}
func (c MetaColumn) HasDefault() (r bool) {
r = (c.ColumnDefault != "null")
return
}