Navicate模型文件(ndm2)解析成易读json

Navicate的模型文件ndm2文件本身就是json文件,以下方法主要是提取模型的schema及表字段和关联关系json

function transMappingType(mapping){
    switch(mapping){
        case "NoneRelationship":return "1";
        case "ManyRelationship"||"ZeroOrManyRelationship"||"OneOrManyRelationship":return "n";
        case "OneRelationship":return "1";
        default:break;
    }
}

function extract_ndm2(ndm2){
let schemas=ndm2.server.schemas

let group=[]
schemas.forEach(schema => {
    if(schema.name=="cmdb-business"){
        const tables = schema.tables;
        tables.forEach(table=>{
            let model={}
            model["id"]=table.name
            model["name"]=table.comment

            let attrs=[]
            let fields=table.fields
            fields.forEach(field=>{
                let attr={}
                attr['id']=field.name
                attr['type']=field.type
                attr['name']=field.comment
                attr['required']=!field.isNullable
                attrs.push(attr)
            })
            model["attrs"]=attrs

            let mappings=[]
            let foreignKeys=table.foreignKeys
            foreignKeys.forEach(fk=>{
                let mapping={}
                mapping["from_table"]=table.name
                mapping["from_fields"]=fk.fields
                mapping["to_table"]=fk.referenceTable
                mapping["to_fields"]=fk.referenceFields
                mapping["from_mapping"]=transMappingType(fk.sourceCardinality)
                mapping["to_mapping"]=transMappingType(fk.targetCardinality)
                mappings.push(mapping)
            })
            model["mappings"]=mappings

            group.push(model)
        })
    }
});
return group;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值