Kaynağa Gözat

relation import

libf 4 ay önce
ebeveyn
işleme
41d64bf053
1 değiştirilmiş dosya ile 22 ekleme ve 7 silme
  1. 22 7
      importer/odbcimporter.go

+ 22 - 7
importer/odbcimporter.go

@@ -47,11 +47,17 @@ func (odbci *ODBCImporter) ReviseClassStruct() (err error) {
 			return merrs.NewError("classinfo not found " + classname)
 		}
 		_, err = classdatainfos.GetWithNew(classname, func() (cdi *classdatainfo, err error) {
-			logger.Info("create class " + ci.classname)
 			if odbci.client != nil {
-				_, err = odbci.client.Query(ci.createmql).Do()
+				_, err = odbci.client.Query("select class,id from " + ci.classname + " limit 1").Do()
 				if err != nil {
-					return
+					if !strings.Contains(err.Error(), "not find") {
+						return nil, err
+					}
+					logger.Info("create class " + ci.classname)
+					_, err = odbci.client.Query(ci.createmql).Do()
+					if err != nil {
+						return
+					}
 				}
 			}
 			cdi = &classdatainfo{classinfo: ci}
@@ -113,11 +119,20 @@ func (odbci *ODBCImporter) insertEdge(edgetype, fromuid, touid string, extraattr
 		foid := get_object_id_from_cache("master:" + fromuid)
 		toid := to_object_id("level1", touid)
 		eabs, _ := json.Marshal(extraattr)
-		quadmql := `quad "` + foid + `" ` + edgetype + ` + "` + toid + `" ` + string(eabs)
-		_, err = odbci.client.Query(quadmql).Do()
+		// quadmql := `quad "` + foid + `" ` + edgetype + ` + "` + toid + `" ` + string(eabs)
+		// _, err = odbci.client.Query(quadmql).Do()
+		// if err != nil {
+		// 	err = merrs.NewError(err, merrs.SSMaps{{"mql": quadmql}})
+		// 	logger.Error(err)
+		// 	return
+		// }
+		updatemql := "update " + "/m3cnet/master" + " set " + " contain=?" + " where id='" + foid + "'"
+		_, err = odbci.client.Query(updatemql, map[string][]string{
+			"_all": {toid},
+			toid:   {string(eabs)},
+		}).Do()
 		if err != nil {
-			err = merrs.NewError(err, merrs.SSMaps{{"mql": quadmql}})
-			logger.Error(err)
+			err = merrs.NewError(err, merrs.SSMaps{{"mql": updatemql}})
 			return
 		}
 		logger.Info("relation immport " + foid + "->" + toid)