package app import ( . "code.hoteas.com/golang/hotime" . "code.hoteas.com/golang/hotime/common" ) // DmdbCtr 达梦数据库特有测试控制器 var DmdbCtr = Ctr{ "tables": func(that *Context) { if that.Db.Type != "dm" && that.Db.Type != "dameng" { that.Display(0, Map{"skip": true, "reason": "当前非达梦数据库"}) return } tables := that.Db.Query(`SELECT TABLE_NAME AS "name", COMMENTS AS "label" FROM USER_TAB_COMMENTS WHERE TABLE_TYPE='TABLE'`) that.Display(0, Map{"tables": tables}) }, "describe": func(that *Context) { if that.Db.Type != "dm" && that.Db.Type != "dameng" { that.Display(0, Map{"skip": true, "reason": "当前非达梦数据库"}) return } tableName := that.Req.FormValue("table") if tableName == "" { that.Display(1, "请提供 table 参数") return } columns := that.Db.Query(`SELECT c.COLUMN_NAME AS "name", c.DATA_TYPE AS "type", m.COMMENTS AS "label", c.NULLABLE AS "must" FROM USER_TAB_COLUMNS c LEFT JOIN USER_COL_COMMENTS m ON c.TABLE_NAME=m.TABLE_NAME AND c.COLUMN_NAME=m.COLUMN_NAME WHERE c.TABLE_NAME='` + tableName + `' ORDER BY c.COLUMN_ID`) data := that.Db.Select(tableName, "*", Map{"LIMIT": 10}) that.Display(0, Map{"table": tableName, "columns": columns, "sample_data": data}) }, "rawsql": func(that *Context) { if that.Db.Type != "dm" && that.Db.Type != "dameng" { that.Display(0, Map{"skip": true, "reason": "当前非达梦数据库"}) return } result := testDmRawSQL(that) that.Display(0, result) }, } func testDmRawSQL(that *Context) Map { result := Map{"name": "达梦原生SQL测试", "tests": Slice{}} tests := Slice{} test1 := Map{"name": "Query 原生查询 (双引号)"} articles1 := that.Db.Query(`SELECT "id", "title", "author" FROM "article" WHERE "state" = ? LIMIT ?`, 0, 5) test1["result"] = len(articles1) >= 0 test1["count"] = len(articles1) tests = append(tests, test1) test2 := Map{"name": "Exec 原生执行 (双引号)"} testArticle := that.Db.Get("article", "id", Map{"state": 0}) if testArticle != nil { res, err := that.Db.Exec(`UPDATE "article" SET "modify_time" = NOW() WHERE "id" = ?`, testArticle.GetInt64("id")) if err.GetError() == nil && res != nil { affected, _ := res.RowsAffected() test2["result"] = affected >= 0 test2["affected"] = affected } else { test2["result"] = false test2["error"] = err.GetError() } } else { test2["result"] = true test2["note"] = "无可用测试数据" } tests = append(tests, test2) test3 := Map{"name": "USER_TABLES 查询"} tables := that.Db.Query(`SELECT TABLE_NAME FROM USER_TABLES`) test3["result"] = len(tables) >= 0 test3["count"] = len(tables) tests = append(tests, test3) test4 := Map{"name": "USER_TAB_COLUMNS 查询"} cols := that.Db.Query(`SELECT COLUMN_NAME, DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME='admin' ORDER BY COLUMN_ID`) test4["result"] = len(cols) >= 0 test4["count"] = len(cols) test4["columns"] = cols tests = append(tests, test4) result["tests"] = tests result["success"] = true return result }