|
@@ -1,4 +1,4 @@
|
|
|
-package importer
|
|
|
+package schema
|
|
|
|
|
|
import (
|
|
|
"strings"
|
|
@@ -6,27 +6,27 @@ import (
|
|
|
"git.wecise.com/wecise/util/cmap"
|
|
|
)
|
|
|
|
|
|
-type fieldinfo struct {
|
|
|
- fieldname string
|
|
|
- fieldtype string
|
|
|
- keyidx int // 主键顺序值,0为非主键
|
|
|
- datakey string // 对应数据中的键名
|
|
|
+type FieldInfo struct {
|
|
|
+ Fieldname string
|
|
|
+ Fieldtype string
|
|
|
+ Keyidx int // 主键顺序值,0为非主键
|
|
|
+ Datakey string // 对应数据中的键名
|
|
|
}
|
|
|
|
|
|
-type classinfo struct {
|
|
|
- classname string
|
|
|
- aliasname string
|
|
|
- classfullname string
|
|
|
- fieldinfos map[string]*fieldinfo
|
|
|
- datakey_fieldinfos map[string]*fieldinfo
|
|
|
- keyfields []string
|
|
|
- fieldslist []string
|
|
|
- insertmql string
|
|
|
- createmql string
|
|
|
+type ClassInfo struct {
|
|
|
+ Classname string
|
|
|
+ Aliasname string
|
|
|
+ Classfullname string
|
|
|
+ Fieldinfos map[string]*FieldInfo
|
|
|
+ DatakeyFieldinfos map[string]*FieldInfo
|
|
|
+ Keyfields []string
|
|
|
+ Fieldslist []string
|
|
|
+ Insertmql string
|
|
|
+ Createmql string
|
|
|
}
|
|
|
|
|
|
-var classinfos = cmap.New[string, *classinfo]()
|
|
|
-var classnames = []string{}
|
|
|
+var ClassInfos = cmap.New[string, *ClassInfo]()
|
|
|
+var ClassNames = []string{}
|
|
|
|
|
|
func init() {
|
|
|
newclassinfo("m3cnet", "m3cnet", "/", nil,
|
|
@@ -36,43 +36,43 @@ func init() {
|
|
|
[2]string{"namespace", "'m3cnet'"},
|
|
|
)
|
|
|
newclassinfo("master", "master", "m3cnet",
|
|
|
- []*fieldinfo{
|
|
|
- {fieldname: "uniqueid", fieldtype: "varchar", keyidx: 1, datakey: "UNIQUEID"},
|
|
|
- {fieldname: "name", fieldtype: "varchar", datakey: "NAME"},
|
|
|
- {fieldname: "entitytypes", fieldtype: "set<varchar>", datakey: "ENTITYTYPES"},
|
|
|
- {fieldname: "basename", fieldtype: "varchar", datakey: "BASENAME"},
|
|
|
- {fieldname: "entitytypesarr", fieldtype: "varchar", datakey: "ENTITYTYPESARR"},
|
|
|
- {fieldname: "originid", fieldtype: "varchar", datakey: "ID"},
|
|
|
- {fieldname: "tags", fieldtype: "set<varchar>", datakey: "TAGS"},
|
|
|
- {fieldname: "changetime", fieldtype: "timestamp", datakey: "CHANGETIME"},
|
|
|
- {fieldname: "emsname", fieldtype: "varchar", datakey: "EMSNAME"},
|
|
|
- {fieldname: "sysid", fieldtype: "varchar", datakey: "SYSID"},
|
|
|
- {fieldname: "site", fieldtype: "varchar", datakey: "SITE"},
|
|
|
- {fieldname: "vendor", fieldtype: "varchar", datakey: "VENDOR"},
|
|
|
- {fieldname: "ci_table", fieldtype: "varchar", datakey: "CI_TABLE"},
|
|
|
- {fieldname: "ci_status", fieldtype: "varchar", datakey: "CI_STATUS"},
|
|
|
- {fieldname: "rel_status", fieldtype: "varchar", datakey: "REL_STATUS"},
|
|
|
- {fieldname: "stage", fieldtype: "varchar", datakey: "STAGE"},
|
|
|
- {fieldname: "extraattr", fieldtype: "varchar", datakey: "EXTRAATTR"},
|
|
|
- {fieldname: "entityid", fieldtype: "varchar", datakey: "ENTITYID"},
|
|
|
- {fieldname: "asmchangetime", fieldtype: "int", datakey: "ASMCHANGETIME"},
|
|
|
- {fieldname: "cmdbmapping", fieldtype: "varchar", datakey: "CMDBMAPPING"},
|
|
|
- {fieldname: "ipaddress", fieldtype: "varchar", datakey: "IPADDRESS"},
|
|
|
- {fieldname: "distname", fieldtype: "varchar", datakey: "DISTNAME"},
|
|
|
- {fieldname: "site_source", fieldtype: "varchar", datakey: "SITE_SOURCE"},
|
|
|
- {fieldname: "lastupdated", fieldtype: "timestamp", datakey: "LASTUPDATED"},
|
|
|
+ []*FieldInfo{
|
|
|
+ {Fieldname: "uniqueid", Fieldtype: "varchar", Keyidx: 1, Datakey: "UNIQUEID"},
|
|
|
+ {Fieldname: "name", Fieldtype: "varchar", Datakey: "NAME"},
|
|
|
+ {Fieldname: "entitytypes", Fieldtype: "set<varchar>", Datakey: "ENTITYTYPES"},
|
|
|
+ {Fieldname: "basename", Fieldtype: "varchar", Datakey: "BASENAME"},
|
|
|
+ {Fieldname: "entitytypesarr", Fieldtype: "varchar", Datakey: "ENTITYTYPESARR"},
|
|
|
+ {Fieldname: "originid", Fieldtype: "varchar", Datakey: "ID"},
|
|
|
+ {Fieldname: "tags", Fieldtype: "set<varchar>", Datakey: "TAGS"},
|
|
|
+ {Fieldname: "changetime", Fieldtype: "timestamp", Datakey: "CHANGETIME"},
|
|
|
+ {Fieldname: "emsname", Fieldtype: "varchar", Datakey: "EMSNAME"},
|
|
|
+ {Fieldname: "sysid", Fieldtype: "varchar", Datakey: "SYSID"},
|
|
|
+ {Fieldname: "site", Fieldtype: "varchar", Datakey: "SITE"},
|
|
|
+ {Fieldname: "vendor", Fieldtype: "varchar", Datakey: "VENDOR"},
|
|
|
+ {Fieldname: "ci_table", Fieldtype: "varchar", Datakey: "CI_TABLE"},
|
|
|
+ {Fieldname: "ci_status", Fieldtype: "varchar", Datakey: "CI_STATUS"},
|
|
|
+ {Fieldname: "rel_status", Fieldtype: "varchar", Datakey: "REL_STATUS"},
|
|
|
+ {Fieldname: "stage", Fieldtype: "varchar", Datakey: "STAGE"},
|
|
|
+ {Fieldname: "extraattr", Fieldtype: "varchar", Datakey: "EXTRAATTR"},
|
|
|
+ {Fieldname: "entityid", Fieldtype: "varchar", Datakey: "ENTITYID"},
|
|
|
+ {Fieldname: "asmchangetime", Fieldtype: "int", Datakey: "ASMCHANGETIME"},
|
|
|
+ {Fieldname: "cmdbmapping", Fieldtype: "varchar", Datakey: "CMDBMAPPING"},
|
|
|
+ {Fieldname: "ipaddress", Fieldtype: "varchar", Datakey: "IPADDRESS"},
|
|
|
+ {Fieldname: "distname", Fieldtype: "varchar", Datakey: "DISTNAME"},
|
|
|
+ {Fieldname: "site_source", Fieldtype: "varchar", Datakey: "SITE_SOURCE"},
|
|
|
+ {Fieldname: "lastupdated", Fieldtype: "timestamp", Datakey: "LASTUPDATED"},
|
|
|
},
|
|
|
[2]string{"partition", "name"},
|
|
|
[2]string{"key", "manu"},
|
|
|
)
|
|
|
newclassinfo("minfo", "minfo", "m3cnet",
|
|
|
- []*fieldinfo{
|
|
|
- {fieldname: "uniqueid", fieldtype: "varchar", keyidx: 1, datakey: "uniqueId"},
|
|
|
- {fieldname: "distname", fieldtype: "varchar", datakey: "distName"},
|
|
|
- {fieldname: "name", fieldtype: "varchar", datakey: "name"},
|
|
|
- {fieldname: "entitytypes", fieldtype: "set<varchar>", datakey: "entityTypes"},
|
|
|
- {fieldname: "extraattr", fieldtype: "varchar", datakey: ""},
|
|
|
- {fieldname: "tags", fieldtype: "set<varchar>", datakey: "tags"},
|
|
|
+ []*FieldInfo{
|
|
|
+ {Fieldname: "uniqueid", Fieldtype: "varchar", Keyidx: 1, Datakey: "uniqueId"},
|
|
|
+ {Fieldname: "distname", Fieldtype: "varchar", Datakey: "distName"},
|
|
|
+ {Fieldname: "name", Fieldtype: "varchar", Datakey: "name"},
|
|
|
+ {Fieldname: "entitytypes", Fieldtype: "set<varchar>", Datakey: "entityTypes"},
|
|
|
+ {Fieldname: "extraattr", Fieldtype: "varchar", Datakey: ""},
|
|
|
+ {Fieldname: "tags", Fieldtype: "set<varchar>", Datakey: "tags"},
|
|
|
},
|
|
|
[2]string{"key", "manu"},
|
|
|
)
|
|
@@ -110,26 +110,26 @@ func init() {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
-func newclassinfo(aliasname, classname, baseclassname string, fieldinfoslist []*fieldinfo, withoptions ...[2]string) (ci *classinfo) {
|
|
|
+func newclassinfo(aliasname, classname, baseclassname string, fieldinfoslist []*FieldInfo, withoptions ...[2]string) (ci *ClassInfo) {
|
|
|
defer func() {
|
|
|
- classnames = append(classnames, classname)
|
|
|
- classinfos.Set(classname, ci)
|
|
|
+ ClassNames = append(ClassNames, classname)
|
|
|
+ ClassInfos.Set(classname, ci)
|
|
|
}()
|
|
|
- fieldinfos := map[string]*fieldinfo{}
|
|
|
- datakey_fieldinfos := map[string]*fieldinfo{}
|
|
|
+ fieldinfos := map[string]*FieldInfo{}
|
|
|
+ datakey_fieldinfos := map[string]*FieldInfo{}
|
|
|
fieldslist := []string{}
|
|
|
keyfields := []string{}
|
|
|
createmql := `create class if not exists ` + classname + `:` + baseclassname + `(`
|
|
|
classfullname := ""
|
|
|
- bci := classinfos.GetIFPresent(baseclassname)
|
|
|
+ bci := ClassInfos.GetIFPresent(baseclassname)
|
|
|
if bci != nil {
|
|
|
- classfullname = bci.classfullname + "/" + classname
|
|
|
- for fn, fi := range bci.fieldinfos {
|
|
|
+ classfullname = bci.Classfullname + "/" + classname
|
|
|
+ for fn, fi := range bci.Fieldinfos {
|
|
|
fieldinfos[fn] = fi
|
|
|
- datakey_fieldinfos[fi.datakey] = fi
|
|
|
+ datakey_fieldinfos[fi.Datakey] = fi
|
|
|
}
|
|
|
- fieldslist = append(fieldslist, bci.fieldslist...)
|
|
|
- keyfields = append(keyfields, bci.keyfields...)
|
|
|
+ fieldslist = append(fieldslist, bci.Fieldslist...)
|
|
|
+ keyfields = append(keyfields, bci.Keyfields...)
|
|
|
} else {
|
|
|
if baseclassname != "/" && baseclassname != "" {
|
|
|
panic("baseclassname not defined " + baseclassname)
|
|
@@ -140,16 +140,16 @@ func newclassinfo(aliasname, classname, baseclassname string, fieldinfoslist []*
|
|
|
if len(fieldinfoslist) > 0 {
|
|
|
field_defines := []string{}
|
|
|
for _, fi := range fieldinfoslist {
|
|
|
- field_defines = append(field_defines, fi.fieldname+` `+fi.fieldtype+`"`+fi.datakey+`"`)
|
|
|
- fieldslist = append(fieldslist, fi.fieldname)
|
|
|
- if fi.keyidx > 0 {
|
|
|
- for len(keyfield_defines) < fi.keyidx {
|
|
|
+ field_defines = append(field_defines, fi.Fieldname+` `+fi.Fieldtype+`"`+fi.Datakey+`"`)
|
|
|
+ fieldslist = append(fieldslist, fi.Fieldname)
|
|
|
+ if fi.Keyidx > 0 {
|
|
|
+ for len(keyfield_defines) < fi.Keyidx {
|
|
|
keyfield_defines = append(keyfield_defines, "")
|
|
|
}
|
|
|
- keyfield_defines[fi.keyidx-1] = fi.fieldname
|
|
|
+ keyfield_defines[fi.Keyidx-1] = fi.Fieldname
|
|
|
}
|
|
|
- fieldinfos[fi.fieldname] = fi
|
|
|
- datakey_fieldinfos[fi.datakey] = fi
|
|
|
+ fieldinfos[fi.Fieldname] = fi
|
|
|
+ datakey_fieldinfos[fi.Datakey] = fi
|
|
|
}
|
|
|
createmql += strings.Join(field_defines, ",")
|
|
|
}
|
|
@@ -172,16 +172,16 @@ func newclassinfo(aliasname, classname, baseclassname string, fieldinfoslist []*
|
|
|
if len(fieldslist) > 0 {
|
|
|
insertmql = `insert into ` + classname + "(" + strings.Join(fieldslist, ",") + ")values(" + strings.Repeat(",?", len(fieldslist))[1:] + ")"
|
|
|
}
|
|
|
- ci = &classinfo{
|
|
|
- classname: classname,
|
|
|
- aliasname: aliasname,
|
|
|
- classfullname: classfullname,
|
|
|
- fieldinfos: fieldinfos,
|
|
|
- datakey_fieldinfos: datakey_fieldinfos,
|
|
|
- keyfields: keyfields,
|
|
|
- fieldslist: fieldslist,
|
|
|
- insertmql: insertmql,
|
|
|
- createmql: createmql,
|
|
|
+ ci = &ClassInfo{
|
|
|
+ Classname: classname,
|
|
|
+ Aliasname: aliasname,
|
|
|
+ Classfullname: classfullname,
|
|
|
+ Fieldinfos: fieldinfos,
|
|
|
+ DatakeyFieldinfos: datakey_fieldinfos,
|
|
|
+ Keyfields: keyfields,
|
|
|
+ Fieldslist: fieldslist,
|
|
|
+ Insertmql: insertmql,
|
|
|
+ Createmql: createmql,
|
|
|
}
|
|
|
return
|
|
|
}
|
|
@@ -239,7 +239,7 @@ create class if not exists level7 : minfo () with partition=entitytypes , alias=
|
|
|
create class if not exists level8 : minfo () with partition=entitytypes , alias='level8' ;
|
|
|
`
|
|
|
|
|
|
-var relations = map[string]string{
|
|
|
+var Relations = map[string]string{
|
|
|
"contains": "contain",
|
|
|
"contain": "contain",
|
|
|
"dependon": "depend",
|
|
@@ -247,7 +247,7 @@ var relations = map[string]string{
|
|
|
"topology": "topology",
|
|
|
}
|
|
|
|
|
|
-var createedgemqls = []string{
|
|
|
+var CreateEdgeMqls = []string{
|
|
|
`create edge type m3cnet.contain`,
|
|
|
`create edge type m3cnet.depend`,
|
|
|
`create edge type m3cnet.topology`,
|