xorm_test.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677
  1. package xorm
  2. import (
  3. "fmt"
  4. "log"
  5. "reflect"
  6. "testing"
  7. "time"
  8. "github.com/xormplus/xorm"
  9. _ "github.com/lib/pq"
  10. // "gopkg.in/flosch/pongo2.v3"
  11. )
  12. type Article struct {
  13. Id int `xorm:"not null pk autoincr unique INTEGER"`
  14. Content string `xorm:"not null TEXT"`
  15. Title string `xorm:"not null VARCHAR(255)"`
  16. Categorysubid int `xorm:"not null INTEGER"`
  17. Remark string `xorm:"not null VARCHAR(2555)"`
  18. Userid int `xorm:"not null INTEGER"`
  19. Viewcount int `xorm:"not null default 0 INTEGER"`
  20. Replycount int `xorm:"not null default 0 INTEGER"`
  21. Tags string `xorm:"not null VARCHAR(300)"`
  22. Createdatetime JSONTime `xorm:"not null default 'now()' DATETIME"`
  23. Isdraft int `xorm:"SMALLINT"`
  24. Lastupdatetime time.Time `xorm:"not null default 'now()' DATETIME"`
  25. }
  26. type Category struct {
  27. Id int `xorm:"not null pk autoincr unique INTEGER"`
  28. Name string `xorm:"not null VARCHAR(200)"`
  29. Counts int `xorm:"not null default 0 INTEGER"`
  30. Orders int `xorm:"not null default 0 INTEGER"`
  31. Createtime time.Time `xorm:"not null default 'now()' created DATETIME"`
  32. Pid int `xorm:"not null default 0 INTEGER"`
  33. Lastupdatetime time.Time `xorm:"not null default 'now()' updated DATETIME"`
  34. Status int `xorm:"not null default 1 SMALLINT"`
  35. }
  36. type JSONTime time.Time
  37. func (t JSONTime) MarshalJSON() ([]byte, error) {
  38. //do your serializing here
  39. stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("2006/01/08 15:04:05"))
  40. return []byte(stamp), nil
  41. }
  42. var db *xorm.Engine
  43. func Test_InitDB(t *testing.T) {
  44. var err error
  45. db, err = xorm.NewPostgreSQL("postgres://postgres:root@localhost:5432/mblog?sslmode=disable")
  46. if err != nil {
  47. t.Fatal(err)
  48. }
  49. opt := xorm.SqlMapOptions{Extension: map[string]string{"xml": ".xxx", "json": ".json"}}
  50. err = db.SetSqlMapRootDir("./sql/oracle").InitSqlMap(opt)
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. err = db.SetSqlTemplateRootDir("./sql/oracle").InitSqlTemplate(xorm.SqlTemplateOptions{Extension: ".stpl"})
  55. if err != nil {
  56. t.Fatal(err)
  57. }
  58. err = db.StartFSWatcher()
  59. if err != nil {
  60. t.Fatal(err)
  61. }
  62. db.ShowSQL(true)
  63. log.Println(db)
  64. // db.NewSession().SqlMapClient().Execute()
  65. log.Println(db.GetSqlMap("json_category-16-17"))
  66. }
  67. func Test_Get_Struct(t *testing.T) {
  68. var article Article
  69. has, err := db.Id(2).Get(&article)
  70. if err != nil {
  71. t.Fatal(err)
  72. }
  73. if !has {
  74. t.Log("[Test_Get_Struct]->rows: not exist\n")
  75. }
  76. t.Log("[Test_Get_Struct]->rows:\n", article)
  77. }
  78. func Test_GetFirst_Json(t *testing.T) {
  79. var article Article
  80. has, rows, err := db.Id(2).
  81. GetFirst(&article).
  82. Json()
  83. if err != nil {
  84. t.Fatal(err)
  85. }
  86. if !has {
  87. t.Log("[Test_GetFirst_Json]->rows: not exist\n")
  88. }
  89. t.Log("[Test_GetFirst_Json]->rows:\n" + rows)
  90. }
  91. func Test_GetFirst_Xml(t *testing.T) {
  92. var article Article
  93. has, rows, err := db.Where("userid =?", 2).GetFirst(&article).Xml()
  94. if err != nil {
  95. t.Fatal(err)
  96. }
  97. if !has {
  98. t.Log("[Test_GetFirst_Xml]->rows: not exist\n")
  99. }
  100. t.Log("[Test_GetFirst_Xml]->rows:\n" + rows)
  101. }
  102. func Test_GetFirst_XmlIndent(t *testing.T) {
  103. var article Article
  104. has, rows, err := db.Where("userid =?", 2).GetFirst(&article).XmlIndent("", " ", "article")
  105. if err != nil {
  106. t.Fatal(err)
  107. }
  108. if !has {
  109. t.Log("[Test_GetFirst_XmlIndent]->rows: not exist\n")
  110. }
  111. t.Log("[Test_GetFirst_XmlIndent]->rows:\n" + rows)
  112. }
  113. func Test_Search(t *testing.T) {
  114. var article []Article
  115. result := db.Sql("select id,title,createdatetime,content from article where id = ?", 25).Search(&article)
  116. if result.Error != nil {
  117. t.Fatal(result.Error)
  118. }
  119. t.Log("[Test_Find]->article[0].Id:\n", article[0].Id)
  120. t.Log("[Test_Find]->article[0].Content:\n", article[0].Content)
  121. t.Log("[Test_Find]->article[0].Title:\n", article[0].Title)
  122. t.Log("[Test_Find]->article[0].Categorysubid:\n", article[0].Categorysubid)
  123. t.Log("[Test_Find]->article[0].Createdatetime:\n", article[0].Createdatetime)
  124. t.Log("[Test_Find]->article[0].Isdraft:\n", article[0].Isdraft)
  125. t.Log("[Test_Find]->article[0].Lastupdatetime:\n", article[0].Lastupdatetime)
  126. t.Log("[Test_Find]->article[0].Remark:\n", article[0].Remark)
  127. t.Log("[Test_Find]->article[0].Replycount:\n", article[0].Replycount)
  128. t.Log("[Test_Find]->article[0].Tags:\n", article[0].Tags)
  129. t.Log("[Test_Find]->article[0].Userid:\n", article[0].Userid)
  130. t.Log("[Test_Find]->article[0].Viewcount:\n", article[0].Viewcount)
  131. t.Log("[Test_Find]-> result.Result:\n", result.Result)
  132. resultJson, err := result.Json()
  133. if err != nil {
  134. t.Fatal(err)
  135. }
  136. t.Log("[Test_Search]-> result.Json():\n", resultJson)
  137. }
  138. func Test_Session_Search2(t *testing.T) {
  139. session := db.NewSession()
  140. defer session.Close()
  141. var article []Article
  142. result := session.Sql("select id,title,createdatetime,content from article where id = ?", 25).Search(&article)
  143. if result.Error != nil {
  144. t.Fatal(result.Error)
  145. }
  146. resultJson, err := result.Json()
  147. if err != nil {
  148. t.Fatal(err)
  149. }
  150. t.Log("[Test_Search]-> result.Json():\n", resultJson)
  151. }
  152. func Test_Session_Search(t *testing.T) {
  153. session := db.NewSession()
  154. defer session.Close()
  155. var article []Article
  156. result := session.Sql("select id,title,createdatetime,content from article where id = ?id", &map[string]interface{}{"id": 25}).Search(&article)
  157. if result.Error != nil {
  158. t.Fatal(result.Error)
  159. }
  160. resultJson, err := result.Json()
  161. if err != nil {
  162. t.Fatal(err)
  163. }
  164. t.Log("[Test_Search]-> result.Json():\n", resultJson)
  165. }
  166. func Test_Session_SqlMapClient_Search(t *testing.T) {
  167. session := db.NewSession()
  168. defer session.Close()
  169. var article []Article
  170. paramMap := map[string]interface{}{"1": 2, "2": 5}
  171. result := session.SqlMapClient("selectAllArticle", &paramMap).Search(&article)
  172. if result.Error != nil {
  173. t.Fatal(result.Error)
  174. }
  175. t.Log("[Test_SqlMapClient_QueryByParamMap_Xml]->rows:\n", result)
  176. }
  177. func Test_Query_Json(t *testing.T) {
  178. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 27).Query().Json()
  179. if err != nil {
  180. t.Fatal(err)
  181. }
  182. t.Log("[Test_Query_Json]->rows:\n" + rows)
  183. }
  184. func Test_Query_Result(t *testing.T) {
  185. rows := db.Sql("select id,title,createdatetime,content from article where id = ?", 27).Query()
  186. if rows.Error != nil {
  187. t.Fatal(rows.Error)
  188. }
  189. t.Log("[Test_Query_Result]->rows[0][\"id\"]:\n", rows.Results[0]["id"])
  190. t.Log("[Test_Query_Result]->reflect.TypeOf(rows.Result[0][\"id\"]):\n", reflect.TypeOf(rows.Results[0]["id"]))
  191. t.Log("[Test_Query_Result]->rows[0][\"title\"]:\n", rows.Results[0]["title"])
  192. t.Log("[Test_Query_Result]->reflect.TypeOf(rows.Result[0][\"title\"]):\n", reflect.TypeOf(rows.Results[0]["title"]))
  193. t.Log("[Test_Query_Result]->rows[0][\"createdatetime\"]:\n", rows.Results[0]["createdatetime"])
  194. t.Log("[Test_Query_Result]->reflect.TypeOf(rows.Result[0][\"createdatetime\"]):\n", reflect.TypeOf(rows.Results[0]["createdatetime"]))
  195. }
  196. func Test_Query_Xml(t *testing.T) {
  197. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 27).Query().Xml()
  198. if err != nil {
  199. t.Fatal(err)
  200. }
  201. t.Log("[Test_Query_Xml]->rows:\n" + rows)
  202. }
  203. func Test_Query_XmlIndent(t *testing.T) {
  204. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 33).Query().XmlIndent("", " ", "article")
  205. if err != nil {
  206. t.Fatal(err)
  207. }
  208. t.Log("[Test_Query_XmlIndent]->rows:\n" + rows)
  209. }
  210. func Test_QueryWithDateFormat_Json(t *testing.T) {
  211. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 33).QueryWithDateFormat("20060102").Json()
  212. if err != nil {
  213. t.Fatal(err)
  214. }
  215. t.Log("[Test_QueryWithDateFormat_Json]->rows:\n" + rows)
  216. }
  217. func Test_QueryWithDateFormat_Xml(t *testing.T) {
  218. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 33).QueryWithDateFormat("20060102").Xml()
  219. if err != nil {
  220. t.Fatal(err)
  221. }
  222. t.Log("[Test_QueryWithDateFormat_Xml]->rows:\n" + rows)
  223. }
  224. func Test_QueryWithDateFormat_XmlIndent(t *testing.T) {
  225. rows, err := db.Sql("select id,title,createdatetime,content from article where id in (?,?)", 27, 33).QueryWithDateFormat("20060102").XmlIndent("", " ", "article")
  226. if err != nil {
  227. t.Fatal(err)
  228. }
  229. t.Log("[Test_QueryWithDateFormat_XmlIndent]->rows:\n" + rows)
  230. }
  231. func Test_QueryByParamMap_Json(t *testing.T) {
  232. paramMap := map[string]interface{}{"id": 32, "userid": 1}
  233. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().Json()
  234. if err != nil {
  235. t.Fatal(err)
  236. }
  237. t.Log("[Test_QueryByParamMap_Json]->rows:\n" + rows)
  238. }
  239. func Test_QueryByParamMap_Xml(t *testing.T) {
  240. paramMap := map[string]interface{}{"id": 6, "userid": 1}
  241. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().Xml()
  242. if err != nil {
  243. t.Fatal(err)
  244. }
  245. t.Log("[Test_QueryByParamMap_Xml]->rows:\n" + rows)
  246. }
  247. func Test_QueryByParamMap_XmlIndent(t *testing.T) {
  248. paramMap := map[string]interface{}{"id": 6, "userid": 1}
  249. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().XmlIndent("", " ", "article")
  250. if err != nil {
  251. t.Fatal(err)
  252. }
  253. t.Log("[Test_QueryByParamMap_XmlIndent]->rows:\n" + rows)
  254. }
  255. func Test_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
  256. paramMap := map[string]interface{}{"id": 6, "userid": 1}
  257. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryWithDateFormat("2006/01/02").XmlIndent("", " ", "article")
  258. if err != nil {
  259. t.Fatal(err)
  260. }
  261. t.Log("[Test_QueryByParamMapWithDateFormat_XmlIndent]->rows:\n" + rows)
  262. }
  263. func Test_SqlMapClient_QueryByParamMap_Json(t *testing.T) {
  264. paramMap := map[string]interface{}{"1": 2, "2": 5}
  265. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).Query().Json()
  266. if err != nil {
  267. t.Fatal(err)
  268. }
  269. t.Log("[Test_SqlMapClient_QueryByParamMap_Json]->rows:\n" + rows)
  270. }
  271. func Test_SqlMapClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
  272. paramMap := map[string]interface{}{"1": 2, "2": 5}
  273. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").Json()
  274. if err != nil {
  275. t.Fatal(err)
  276. }
  277. t.Log("[Test_SqlMapClient_QueryByParamMapWithDateFormat_Json]->rows:\n" + rows)
  278. }
  279. func Test_SqlMapClient_QueryByParamMap_Xml(t *testing.T) {
  280. paramMap := map[string]interface{}{"1": 2, "2": 5}
  281. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).Query().Xml()
  282. if err != nil {
  283. t.Fatal(err)
  284. }
  285. t.Log("[Test_SqlMapClient_QueryByParamMap_Xml]->rows:\n" + rows)
  286. }
  287. func Test_SqlMapClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
  288. paramMap := map[string]interface{}{"1": 2, "2": 5}
  289. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").Xml()
  290. if err != nil {
  291. t.Fatal(err)
  292. }
  293. t.Log("[Test_SqlMapClient_QueryByParamMapWithDateFormat_Xml]->rows:\n" + rows)
  294. }
  295. func Test_SqlMapClient_QueryByParamMap_XmlIndent(t *testing.T) {
  296. paramMap := map[string]interface{}{"1": 2, "2": 5}
  297. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).Query().XmlIndent("", " ", "article")
  298. if err != nil {
  299. t.Fatal(err)
  300. }
  301. t.Log("[Test_SqlMapClient_QueryByParamMap_XmlIndent]->rows:\n" + rows)
  302. }
  303. func Test_SqlMapClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
  304. paramMap := map[string]interface{}{"1": 2, "2": 5}
  305. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").XmlIndent("", " ", "article")
  306. if err != nil {
  307. t.Fatal(err)
  308. }
  309. t.Log("[Test_SqlMapClient_QueryByParamMapWithDateFormat_XmlIndent]->rows:\n" + rows)
  310. }
  311. func Test_SqlTemplateClient_QueryByParamMap_Json(t *testing.T) {
  312. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
  313. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).Query().Json()
  314. if err != nil {
  315. t.Fatal(err)
  316. }
  317. t.Log("[Test_SqlTemplateClient_QueryByParamMap_Json]->rows:\n" + rows)
  318. }
  319. func Test_Session_SqlTemplateClient_QueryByParamMap_Json(t *testing.T) {
  320. session := db.NewSession()
  321. defer session.Close()
  322. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
  323. rows, err := session.SqlTemplateClient("select.example.stpl", &paramMap).Query().Json()
  324. if err != nil {
  325. t.Fatal(err)
  326. }
  327. t.Log("[Test_SqlTemplateClient_QueryByParamMap_Json]->rows:\n" + rows)
  328. }
  329. func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
  330. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
  331. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).QueryWithDateFormat("01/02/2006").Json()
  332. if err != nil {
  333. t.Fatal(err)
  334. }
  335. t.Log("[Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Json]->rows:\n" + rows)
  336. }
  337. func Test_SqlTemplateClient_QueryByParamMap_Xml(t *testing.T) {
  338. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  339. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).Query().Xml()
  340. if err != nil {
  341. t.Fatal(err)
  342. }
  343. t.Log("[Test_SqlTemplateClient_QueryByParamMap_Xml]->rows:\n" + rows)
  344. }
  345. func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
  346. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  347. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).QueryWithDateFormat("01/02/2006").Xml()
  348. if err != nil {
  349. t.Fatal(err)
  350. }
  351. t.Log("[Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Xml]->rows:\n" + rows)
  352. }
  353. func Test_SqlTemplateClient_QueryByParamMap_XmlIndent(t *testing.T) {
  354. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  355. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).Query().XmlIndent("", " ", "article")
  356. if err != nil {
  357. t.Fatal(err)
  358. }
  359. t.Log("[Test_SqlTemplateClient_QueryByParamMap_XmlIndent]->rows:\n" + rows)
  360. }
  361. func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
  362. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  363. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).QueryWithDateFormat("01/02/2006").XmlIndent("", " ", "article")
  364. if err != nil {
  365. t.Fatal(err)
  366. }
  367. t.Log("[Test_SqlTemplateClient_QueryByParamMapWithDateFormat_XmlIndent]->rows:\n" + rows)
  368. }
  369. func Test_Where_Search_Structs_Json(t *testing.T) {
  370. var articles []Article
  371. json, err := db.Where("id=?", 6).Search(&articles).Json()
  372. if err != nil {
  373. t.Fatal(err)
  374. }
  375. t.Log("[Test_Where_Search_Structs_Json]->rows:\n" + json)
  376. }
  377. func Test_Search_Structs_Xml(t *testing.T) {
  378. var articles []Article
  379. xml, err := db.Where("id=?", 6).Search(&articles).Xml()
  380. if err != nil {
  381. t.Fatal(err)
  382. }
  383. t.Log("[Test_Search_Structs_Xml]->rows:\n" + xml)
  384. }
  385. func Test_Search_Structs_XmlIndent(t *testing.T) {
  386. var articles []Article
  387. xml, err := db.Where("id=?", 6).Search(&articles).XmlIndent("", " ", "Article")
  388. if err != nil {
  389. t.Fatal(err)
  390. }
  391. t.Log("[Test_Search_Structs_XmlIndent]->rows:\n" + xml)
  392. }
  393. func Test_Search_Structs_Json(t *testing.T) {
  394. var categories []Category
  395. Json, err := db.Select("id").Search(&categories).Json()
  396. if err != nil {
  397. t.Fatal(err)
  398. }
  399. t.Log("[Test_Search_Structs_Json]->rows:\n", Json)
  400. }
  401. func Test_Sql_Find_Structs(t *testing.T) {
  402. var categories2 []Category
  403. err := db.Sql("select * from category where id =?", 16).Find(&categories2)
  404. if err != nil {
  405. t.Fatal(err)
  406. }
  407. t.Log("[Test_Sql_Find_Structs]->rows:\n", categories2)
  408. }
  409. func Test_SqlMapClient_Find_Structs(t *testing.T) {
  410. var categories2 []Category
  411. db.AddSql("1", "select * from category where id =?")
  412. err := db.SqlMapClient("1", 16).Find(&categories2)
  413. if err != nil {
  414. t.Fatal(err)
  415. }
  416. t.Log("[Test_SqlMapClient_Find_Structs]->rows:\n", categories2)
  417. }
  418. func Test_SqlTemplateClient_Find_Structs(t *testing.T) {
  419. var categories2 []Category
  420. db.AddSqlTemplate("1", "select * from category where id =?id")
  421. err := db.SqlTemplateClient("1", &map[string]interface{}{"id": 25}).Find(&categories2)
  422. if err != nil {
  423. t.Fatal(err)
  424. }
  425. t.Log("[Test_SqlTemplateClient_Find_Structs]->rows:\n", categories2)
  426. }
  427. func Test_Session_SqlTemplateClient_Find_Structs(t *testing.T) {
  428. session := db.NewSession()
  429. defer session.Close()
  430. var categories2 []Category
  431. db.AddSqlTemplate("1", "select * from category where id =?id")
  432. err := session.SqlTemplateClient("1", &map[string]interface{}{"id": 25}).Find(&categories2)
  433. if err != nil {
  434. t.Fatal(err)
  435. }
  436. t.Log("[Test_SqlTemplateClient_Find_Structs]->rows:\n", categories2)
  437. }
  438. func Test_Sql_Search_Json(t *testing.T) {
  439. var categories2 []Category
  440. json, err := db.Sql("select * from category where id =?", 16).Search(&categories2).Json()
  441. if err != nil {
  442. t.Fatal(err)
  443. }
  444. t.Log("[Test_Sql_Search_Json]->rows:\n", json)
  445. }
  446. func Test_SqlMapClient_Search_Json(t *testing.T) {
  447. var categories2 []Category
  448. db.AddSql("1", "select * from category where id =?")
  449. json, err := db.SqlMapClient("1", 16).Search(&categories2).Json()
  450. if err != nil {
  451. t.Fatal(err)
  452. }
  453. t.Log("[Test_SqlMapClient_Search_Json]->rows:\n", json)
  454. }
  455. func Test_SqlTemplateClient_Search_Json(t *testing.T) {
  456. var categories2 []Category
  457. db.AddSqlTemplate("1", "select * from category where id =?id")
  458. json, err := db.SqlTemplateClient("1", &map[string]interface{}{"id": 25}).Search(&categories2).Json()
  459. if err != nil {
  460. t.Fatal(err)
  461. }
  462. t.Log("[Test_SqlTemplateClient_Search_Json]->rows:\n", json)
  463. }
  464. func Test_Query(t *testing.T) {
  465. result, err := db.Query("select * from category where id =25")
  466. if err != nil {
  467. t.Fatal(err)
  468. }
  469. t.Log("[Test_Query]->rows:\n", result)
  470. }
  471. func STest_Sql_Execute(t *testing.T) {
  472. result, err := db.Sql("INSERT INTO categories VALUES (?, ?, ?, ?, ?)", 148, "xiaozhang", 1, 1, 1).Execute()
  473. if err != nil {
  474. t.Fatal(err)
  475. }
  476. t.Log("[Test_Sql_Execute]->rows:\n", result)
  477. }
  478. func STest_SqlMapClient_Execute(t *testing.T) {
  479. db.AddSql("Test_SqlMapClient_Execute", "INSERT INTO categories VALUES (?id, ?name, ?counts, ?orders, ?pid)")
  480. result, err := db.SqlMapClient("Test_SqlMapClient_Execute", &map[string]interface{}{"id": 149, "name": "xiaowang", "counts": 1, "orders": 1, "pid": 1}).Execute()
  481. if err != nil {
  482. t.Fatal(err)
  483. }
  484. t.Log("[Test_SqlMapClient_Execute]->rows:\n", result)
  485. }
  486. func STest_SqlTemplateClientt_Execute(t *testing.T) {
  487. db.AddSqlTemplate("Test_SqlTemplateClientt_Execute", "INSERT INTO categories VALUES (?id, ?name, ?counts, ?orders, ?pid)")
  488. result, err := db.SqlTemplateClient("Test_SqlTemplateClientt_Execute", &map[string]interface{}{"id": 240, "name": "laowang", "counts": 1, "orders": 1, "pid": 1}).Execute()
  489. if err != nil {
  490. t.Fatal(err)
  491. }
  492. t.Log("[Test_SqlTemplateClientt_Execute]->rows:\n", result)
  493. }
  494. func Test_GetSQL(t *testing.T) {
  495. db.AddSql("Test_GetSQL_1", "select * from Test_GetSQL_1")
  496. t.Log("[Test_GetSQL]->Test_GetSQL_1:\n", db.GetSql("Test_GetSQL_1"))
  497. t.Log("[Test_GetSQL]->Test_GetSQL_2:\n", db.GetSql("Test_GetSQL_1"))
  498. }
  499. func Test_GetSqlMap(t *testing.T) {
  500. t.Log("[Test_GetSqlMap]->3:\n")
  501. t.Log(xorm.JSONString(db.GetSqlMap(3), true))
  502. sqlmap := db.GetSqlMap(3)
  503. t.Log("[Test_GetSqlMap]->len(sqlmap):\n", len(sqlmap))
  504. db.AddSql("Test_GetSqlMap_1", "select * from Test_GetSqlMap_1")
  505. db.AddSql("Test_GetSqlMap_2", "select * from Test_GetSqlMap_2")
  506. db.AddSql("Test_GetSqlMap_3", "select * from Test_GetSqlMap_3")
  507. db.AddSql("Test_GetSqlMap_4", "select * from Test_GetSqlMap_4")
  508. db.AddSql("Test_GetSqlMap_5", "select * from Test_GetSqlMap_5")
  509. t.Log("[Test_GetSqlMap]->init->3:\n")
  510. t.Log(xorm.JSONString(db.GetSqlMap(3), true))
  511. sqlmap = db.GetSqlMap(3)
  512. t.Log("[Test_GetSqlMap]->init->len(sqlmap):\n", len(sqlmap))
  513. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_null:\n")
  514. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_null"), true))
  515. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1:\n")
  516. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1"), true))
  517. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3:\n")
  518. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3"), true))
  519. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,3:\n")
  520. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", 3), true))
  521. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,3,Test_GetSqlMap_null:\n")
  522. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", 3, "Test_GetSqlMap_null"), true))
  523. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,[]string{Test_GetSqlMap_2, Test_GetSqlMap_4}:\n")
  524. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", []string{"Test_GetSqlMap_2", "Test_GetSqlMap_4"}), true))
  525. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,[]string{Test_GetSqlMap_2, Test_GetSqlMap_4},2:\n")
  526. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", []string{"Test_GetSqlMap_2", "Test_GetSqlMap_4"}, 2), true))
  527. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,[]string{Test_GetSqlMap_2, Test_GetSqlMap_4},2 ,Test_GetSqlMap_null:\n")
  528. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", []string{"Test_GetSqlMap_2", "Test_GetSqlMap_4"}, 2, "Test_GetSqlMap_null"), true))
  529. }
  530. func Test_GetSqlTemplates(t *testing.T) {
  531. t.Log("[GetSqlTemplates]->Test_GetSqlTemplates_1:\n")
  532. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1"), true))
  533. Test_GetSqlTemplates_1 := db.GetSqlTemplates("Test_GetSqlTemplates_1")["Test_GetSqlTemplates_1"]
  534. if Test_GetSqlTemplates_1 == nil {
  535. t.Log("Test_GetSqlTemplates_1 is nil")
  536. }
  537. t.Log("[Test_GetSqlMap]->len(sqlmap):\n", len(db.GetSqlTemplates("Test_GetSqlTemplates_1")))
  538. db.AddSqlTemplate("Test_GetSqlTemplates_1", "select * from Test_GetSqlTemplates_1")
  539. db.AddSqlTemplate("Test_GetSqlTemplates_2", "select * from Test_GetSqlTemplates_2")
  540. db.AddSqlTemplate("Test_GetSqlTemplates_3", "select * from Test_GetSqlTemplates_3")
  541. db.AddSqlTemplate("Test_GetSqlTemplates_4", "select * from Test_GetSqlTemplates_4")
  542. db.AddSqlTemplate("Test_GetSqlTemplates_5", "select * from Test_GetSqlTemplates_5")
  543. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1:\n")
  544. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1"), true))
  545. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3:\n")
  546. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3"), true))
  547. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3,3:\n")
  548. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", 3), true))
  549. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3,[]string{Test_GetSqlTemplates_2, Test_GetSqlTemplates_4}:\n")
  550. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", []string{"Test_GetSqlTemplates_2", "Test_GetSqlTemplates_4"}), true))
  551. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3,[]string{Test_GetSqlTemplates_2, Test_GetSqlTemplates_4},2:\n")
  552. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", []string{"Test_GetSqlTemplates_2", "Test_GetSqlTemplates_4"}, 2), true))
  553. strSqlTemplate, err := db.GetSqlTemplates("Test_GetSqlTemplates_1")["Test_GetSqlTemplates_1"].Execute(nil)
  554. if err != nil {
  555. t.Fatal(err)
  556. }
  557. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1->strSqlTemplate:\n", strSqlTemplate)
  558. strSqlTemplate, err = db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", []string{"Test_GetSqlTemplates_2", "Test_GetSqlTemplates_4"}, 2)["Test_GetSqlTemplates_2"].Execute(nil)
  559. if err != nil {
  560. t.Fatal(err)
  561. }
  562. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_2->strSqlTemplate:\n", strSqlTemplate)
  563. }
  564. func Test_Limit_Func(t *testing.T) {
  565. res, _ := db.Sql("SELECT b.id,a.name,b.title FROM category a,article b where a.id=b.categorysubid ORDER BY b.id").Limit(10, 3).Query().List()
  566. t.Log(res)
  567. }
  568. func Test_Find(t *testing.T) {
  569. var category []Category
  570. err := db.Find(&category)
  571. if err != nil {
  572. t.Fatal(err)
  573. }
  574. t.Log(category)
  575. }