xorm_test.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  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_Sql_Get_Struct(t *testing.T) {
  79. var article Article
  80. has, err := db.Sql("select * from article where id=?", 2).Get(&article)
  81. if err != nil {
  82. t.Fatal(err)
  83. }
  84. if !has {
  85. t.Log("[Test_Sql_Get_Struct]->rows: not exist\n")
  86. }
  87. t.Log("[Test_Sql_Get_Struct]->rows:\n", article)
  88. }
  89. func Test_Sql_Get_String(t *testing.T) {
  90. var title string
  91. has, err := db.Sql("select title from article where id=?", 2).Get(&title)
  92. if err != nil {
  93. t.Fatal(err)
  94. }
  95. if !has {
  96. t.Log("[Test_Sql_Get_String]->rows: not exist\n")
  97. }
  98. t.Log("[Test_Sql_Get_String]->titles:\n", title)
  99. }
  100. func Test_Sql_Get_Int(t *testing.T) {
  101. var id int
  102. has, err := db.Sql("select id from article where id=?", 2).Get(&id)
  103. if err != nil {
  104. t.Fatal(err)
  105. }
  106. if !has {
  107. t.Log("[Test_Sql_Get_Int]->rows: not exist\n")
  108. }
  109. t.Log("[Test_Sql_Get_Int]->id:\n", id)
  110. }
  111. func Test_Sql_Get_Map(t *testing.T) {
  112. var valuesMap = make(map[string]string)
  113. has, err := db.Sql("select * from article where id=?", 2).Get(&valuesMap)
  114. if err != nil {
  115. t.Fatal(err)
  116. }
  117. if !has {
  118. t.Log("[Test_Sql_Get_Map]->rows: not exist\n")
  119. }
  120. t.Log("[Test_Sql_Get_Map]->id:\n", valuesMap)
  121. }
  122. func Test_Sql_Get_Map2(t *testing.T) {
  123. var valuesMap = make(map[string]interface{})
  124. has, err := db.Sql("select * from article where id=?", 2).Get(&valuesMap)
  125. if err != nil {
  126. t.Fatal(err)
  127. }
  128. if !has {
  129. t.Log("[Test_Sql_Get_Map2]->rows: not exist\n")
  130. }
  131. t.Log("[Test_Sql_Get_Map2]->id:\n", valuesMap)
  132. id, ok := valuesMap["id"].(int64)
  133. if ok {
  134. t.Log("[Test_Sql_Get_Map2]->id:\n", id)
  135. }
  136. }
  137. func Test_Sql_Get_Slice(t *testing.T) {
  138. var valuesSlice = make([]interface{}, 2)
  139. has, err := db.Sql("select id,title from article where id=?", 2).Get(&valuesSlice)
  140. if err != nil {
  141. t.Fatal(err)
  142. }
  143. if !has {
  144. t.Log("[Test_Sql_Get_Slice]->rows: not exist\n")
  145. }
  146. t.Log("[Test_Sql_Get_Slice]->id:\n", valuesSlice)
  147. }
  148. func Test_GetFirst_Json(t *testing.T) {
  149. var article Article
  150. has, rows, err := db.Id(2).
  151. GetFirst(&article).
  152. Json()
  153. if err != nil {
  154. t.Fatal(err)
  155. }
  156. if !has {
  157. t.Log("[Test_GetFirst_Json]->rows: not exist\n")
  158. }
  159. t.Log("[Test_GetFirst_Json]->rows:\n" + rows)
  160. }
  161. func Test_GetFirst_Xml(t *testing.T) {
  162. var article Article
  163. has, rows, err := db.Where("userid =?", 2).GetFirst(&article).Xml()
  164. if err != nil {
  165. t.Fatal(err)
  166. }
  167. if !has {
  168. t.Log("[Test_GetFirst_Xml]->rows: not exist\n")
  169. }
  170. t.Log("[Test_GetFirst_Xml]->rows:\n" + rows)
  171. }
  172. func Test_GetFirst_XmlIndent(t *testing.T) {
  173. var article Article
  174. has, rows, err := db.Where("userid =?", 2).GetFirst(&article).XmlIndent("", " ", "article")
  175. if err != nil {
  176. t.Fatal(err)
  177. }
  178. if !has {
  179. t.Log("[Test_GetFirst_XmlIndent]->rows: not exist\n")
  180. }
  181. t.Log("[Test_GetFirst_XmlIndent]->rows:\n" + rows)
  182. }
  183. func Test_Search(t *testing.T) {
  184. var article []Article
  185. result := db.Sql("select id,title,createdatetime,content from article where id = ?", 25).Search(&article)
  186. if result.Error != nil {
  187. t.Fatal(result.Error)
  188. }
  189. t.Log("[Test_Find]->article[0].Id:\n", article[0].Id)
  190. t.Log("[Test_Find]->article[0].Content:\n", article[0].Content)
  191. t.Log("[Test_Find]->article[0].Title:\n", article[0].Title)
  192. t.Log("[Test_Find]->article[0].Categorysubid:\n", article[0].Categorysubid)
  193. t.Log("[Test_Find]->article[0].Createdatetime:\n", article[0].Createdatetime)
  194. t.Log("[Test_Find]->article[0].Isdraft:\n", article[0].Isdraft)
  195. t.Log("[Test_Find]->article[0].Lastupdatetime:\n", article[0].Lastupdatetime)
  196. t.Log("[Test_Find]->article[0].Remark:\n", article[0].Remark)
  197. t.Log("[Test_Find]->article[0].Replycount:\n", article[0].Replycount)
  198. t.Log("[Test_Find]->article[0].Tags:\n", article[0].Tags)
  199. t.Log("[Test_Find]->article[0].Userid:\n", article[0].Userid)
  200. t.Log("[Test_Find]->article[0].Viewcount:\n", article[0].Viewcount)
  201. t.Log("[Test_Find]-> result.Result:\n", result.Result)
  202. resultJson, err := result.Json()
  203. if err != nil {
  204. t.Fatal(err)
  205. }
  206. t.Log("[Test_Search]-> result.Json():\n", resultJson)
  207. }
  208. func Test_Session_Search2(t *testing.T) {
  209. session := db.NewSession()
  210. defer session.Close()
  211. var article []Article
  212. result := session.Sql("select id,title,createdatetime,content from article where id = ?", 25).Search(&article)
  213. if result.Error != nil {
  214. t.Fatal(result.Error)
  215. }
  216. resultJson, err := result.Json()
  217. if err != nil {
  218. t.Fatal(err)
  219. }
  220. t.Log("[Test_Search]-> result.Json():\n", resultJson)
  221. }
  222. func Test_Session_Search(t *testing.T) {
  223. session := db.NewSession()
  224. defer session.Close()
  225. var article []Article
  226. result := session.Sql("select id,title,createdatetime,content from article where id = ?id", &map[string]interface{}{"id": 25}).Search(&article)
  227. if result.Error != nil {
  228. t.Fatal(result.Error)
  229. }
  230. resultJson, err := result.Json()
  231. if err != nil {
  232. t.Fatal(err)
  233. }
  234. t.Log("[Test_Search]-> result.Json():\n", resultJson)
  235. }
  236. func Test_Session_SqlMapClient_Search(t *testing.T) {
  237. session := db.NewSession()
  238. defer session.Close()
  239. var article []Article
  240. paramMap := map[string]interface{}{"1": 2, "2": 5}
  241. result := session.SqlMapClient("selectAllArticle", &paramMap).Search(&article)
  242. if result.Error != nil {
  243. t.Fatal(result.Error)
  244. }
  245. t.Log("[Test_SqlMapClient_QueryByParamMap_Xml]->rows:\n", result)
  246. }
  247. func Test_Query_Json(t *testing.T) {
  248. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 27).Query().Json()
  249. if err != nil {
  250. t.Fatal(err)
  251. }
  252. t.Log("[Test_Query_Json]->rows:\n" + rows)
  253. }
  254. func Test_Query_Result(t *testing.T) {
  255. rows := db.Sql("select id,title,createdatetime,content from article where id = ?", 27).Query()
  256. if rows.Error != nil {
  257. t.Fatal(rows.Error)
  258. }
  259. t.Log("[Test_Query_Result]->rows[0][\"id\"]:\n", rows.Results[0]["id"])
  260. t.Log("[Test_Query_Result]->reflect.TypeOf(rows.Result[0][\"id\"]):\n", reflect.TypeOf(rows.Results[0]["id"]))
  261. t.Log("[Test_Query_Result]->rows[0][\"title\"]:\n", rows.Results[0]["title"])
  262. t.Log("[Test_Query_Result]->reflect.TypeOf(rows.Result[0][\"title\"]):\n", reflect.TypeOf(rows.Results[0]["title"]))
  263. t.Log("[Test_Query_Result]->rows[0][\"createdatetime\"]:\n", rows.Results[0]["createdatetime"])
  264. t.Log("[Test_Query_Result]->reflect.TypeOf(rows.Result[0][\"createdatetime\"]):\n", reflect.TypeOf(rows.Results[0]["createdatetime"]))
  265. }
  266. func Test_Query_Xml(t *testing.T) {
  267. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 27).Query().Xml()
  268. if err != nil {
  269. t.Fatal(err)
  270. }
  271. t.Log("[Test_Query_Xml]->rows:\n" + rows)
  272. }
  273. func Test_Query_XmlIndent(t *testing.T) {
  274. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 33).Query().XmlIndent("", " ", "article")
  275. if err != nil {
  276. t.Fatal(err)
  277. }
  278. t.Log("[Test_Query_XmlIndent]->rows:\n" + rows)
  279. }
  280. func Test_QueryWithDateFormat_Json(t *testing.T) {
  281. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 33).QueryWithDateFormat("20060102").Json()
  282. if err != nil {
  283. t.Fatal(err)
  284. }
  285. t.Log("[Test_QueryWithDateFormat_Json]->rows:\n" + rows)
  286. }
  287. func Test_QueryWithDateFormat_Xml(t *testing.T) {
  288. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?", 33).QueryWithDateFormat("20060102").Xml()
  289. if err != nil {
  290. t.Fatal(err)
  291. }
  292. t.Log("[Test_QueryWithDateFormat_Xml]->rows:\n" + rows)
  293. }
  294. func Test_QueryWithDateFormat_XmlIndent(t *testing.T) {
  295. rows, err := db.Sql("select id,title,createdatetime,content from article where id in (?,?)", 27, 33).QueryWithDateFormat("20060102").XmlIndent("", " ", "article")
  296. if err != nil {
  297. t.Fatal(err)
  298. }
  299. t.Log("[Test_QueryWithDateFormat_XmlIndent]->rows:\n" + rows)
  300. }
  301. func Test_QueryByParamMap_Json(t *testing.T) {
  302. paramMap := map[string]interface{}{"id": 32, "userid": 1}
  303. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().Json()
  304. if err != nil {
  305. t.Fatal(err)
  306. }
  307. t.Log("[Test_QueryByParamMap_Json]->rows:\n" + rows)
  308. }
  309. func Test_QueryByParamMap_Xml(t *testing.T) {
  310. paramMap := map[string]interface{}{"id": 6, "userid": 1}
  311. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().Xml()
  312. if err != nil {
  313. t.Fatal(err)
  314. }
  315. t.Log("[Test_QueryByParamMap_Xml]->rows:\n" + rows)
  316. }
  317. func Test_QueryByParamMap_XmlIndent(t *testing.T) {
  318. paramMap := map[string]interface{}{"id": 6, "userid": 1}
  319. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().XmlIndent("", " ", "article")
  320. if err != nil {
  321. t.Fatal(err)
  322. }
  323. t.Log("[Test_QueryByParamMap_XmlIndent]->rows:\n" + rows)
  324. }
  325. func Test_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
  326. paramMap := map[string]interface{}{"id": 6, "userid": 1}
  327. rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryWithDateFormat("2006/01/02").XmlIndent("", " ", "article")
  328. if err != nil {
  329. t.Fatal(err)
  330. }
  331. t.Log("[Test_QueryByParamMapWithDateFormat_XmlIndent]->rows:\n" + rows)
  332. }
  333. func Test_SqlMapClient_QueryByParamMap_Json(t *testing.T) {
  334. paramMap := map[string]interface{}{"1": 2, "2": 5}
  335. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).Query().Json()
  336. if err != nil {
  337. t.Fatal(err)
  338. }
  339. t.Log("[Test_SqlMapClient_QueryByParamMap_Json]->rows:\n" + rows)
  340. }
  341. func Test_SqlMapClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
  342. paramMap := map[string]interface{}{"1": 2, "2": 5}
  343. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").Json()
  344. if err != nil {
  345. t.Fatal(err)
  346. }
  347. t.Log("[Test_SqlMapClient_QueryByParamMapWithDateFormat_Json]->rows:\n" + rows)
  348. }
  349. func Test_SqlMapClient_QueryByParamMap_Xml(t *testing.T) {
  350. paramMap := map[string]interface{}{"1": 2, "2": 5}
  351. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).Query().Xml()
  352. if err != nil {
  353. t.Fatal(err)
  354. }
  355. t.Log("[Test_SqlMapClient_QueryByParamMap_Xml]->rows:\n" + rows)
  356. }
  357. func Test_SqlMapClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
  358. paramMap := map[string]interface{}{"1": 2, "2": 5}
  359. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").Xml()
  360. if err != nil {
  361. t.Fatal(err)
  362. }
  363. t.Log("[Test_SqlMapClient_QueryByParamMapWithDateFormat_Xml]->rows:\n" + rows)
  364. }
  365. func Test_SqlMapClient_QueryByParamMap_XmlIndent(t *testing.T) {
  366. paramMap := map[string]interface{}{"1": 2, "2": 5}
  367. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).Query().XmlIndent("", " ", "article")
  368. if err != nil {
  369. t.Fatal(err)
  370. }
  371. t.Log("[Test_SqlMapClient_QueryByParamMap_XmlIndent]->rows:\n" + rows)
  372. }
  373. func Test_SqlMapClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
  374. paramMap := map[string]interface{}{"1": 2, "2": 5}
  375. rows, err := db.SqlMapClient("json_selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").XmlIndent("", " ", "article")
  376. if err != nil {
  377. t.Fatal(err)
  378. }
  379. t.Log("[Test_SqlMapClient_QueryByParamMapWithDateFormat_XmlIndent]->rows:\n" + rows)
  380. }
  381. func Test_SqlTemplateClient_QueryByParamMap_Json(t *testing.T) {
  382. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
  383. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).Query().Json()
  384. if err != nil {
  385. t.Fatal(err)
  386. }
  387. t.Log("[Test_SqlTemplateClient_QueryByParamMap_Json]->rows:\n" + rows)
  388. }
  389. func Test_Session_SqlTemplateClient_QueryByParamMap_Json(t *testing.T) {
  390. session := db.NewSession()
  391. defer session.Close()
  392. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
  393. rows, err := session.SqlTemplateClient("select.example.stpl", &paramMap).Query().Json()
  394. if err != nil {
  395. t.Fatal(err)
  396. }
  397. t.Log("[Test_SqlTemplateClient_QueryByParamMap_Json]->rows:\n" + rows)
  398. }
  399. func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
  400. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
  401. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).QueryWithDateFormat("01/02/2006").Json()
  402. if err != nil {
  403. t.Fatal(err)
  404. }
  405. t.Log("[Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Json]->rows:\n" + rows)
  406. }
  407. func Test_SqlTemplateClient_QueryByParamMap_Xml(t *testing.T) {
  408. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  409. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).Query().Xml()
  410. if err != nil {
  411. t.Fatal(err)
  412. }
  413. t.Log("[Test_SqlTemplateClient_QueryByParamMap_Xml]->rows:\n" + rows)
  414. }
  415. func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
  416. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  417. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).QueryWithDateFormat("01/02/2006").Xml()
  418. if err != nil {
  419. t.Fatal(err)
  420. }
  421. t.Log("[Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Xml]->rows:\n" + rows)
  422. }
  423. func Test_SqlTemplateClient_QueryByParamMap_XmlIndent(t *testing.T) {
  424. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  425. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).Query().XmlIndent("", " ", "article")
  426. if err != nil {
  427. t.Fatal(err)
  428. }
  429. t.Log("[Test_SqlTemplateClient_QueryByParamMap_XmlIndent]->rows:\n" + rows)
  430. }
  431. func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
  432. paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
  433. rows, err := db.SqlTemplateClient("select.example.stpl", &paramMap).QueryWithDateFormat("01/02/2006").XmlIndent("", " ", "article")
  434. if err != nil {
  435. t.Fatal(err)
  436. }
  437. t.Log("[Test_SqlTemplateClient_QueryByParamMapWithDateFormat_XmlIndent]->rows:\n" + rows)
  438. }
  439. func Test_Where_Search_Structs_Json(t *testing.T) {
  440. var articles []Article
  441. json, err := db.Where("id=?", 6).Search(&articles).Json()
  442. if err != nil {
  443. t.Fatal(err)
  444. }
  445. t.Log("[Test_Where_Search_Structs_Json]->rows:\n" + json)
  446. }
  447. func Test_Search_Structs_Xml(t *testing.T) {
  448. var articles []Article
  449. xml, err := db.Where("id=?", 6).Search(&articles).Xml()
  450. if err != nil {
  451. t.Fatal(err)
  452. }
  453. t.Log("[Test_Search_Structs_Xml]->rows:\n" + xml)
  454. }
  455. func Test_Search_Structs_XmlIndent(t *testing.T) {
  456. var articles []Article
  457. xml, err := db.Where("id=?", 6).Search(&articles).XmlIndent("", " ", "Article")
  458. if err != nil {
  459. t.Fatal(err)
  460. }
  461. t.Log("[Test_Search_Structs_XmlIndent]->rows:\n" + xml)
  462. }
  463. func Test_Search_Structs_Json(t *testing.T) {
  464. var categories []Category
  465. Json, err := db.Select("id").Search(&categories).Json()
  466. if err != nil {
  467. t.Fatal(err)
  468. }
  469. t.Log("[Test_Search_Structs_Json]->rows:\n", Json)
  470. }
  471. func Test_Sql_Find_Structs(t *testing.T) {
  472. var categories2 []Category
  473. err := db.Sql("select * from category where id =?", 16).Find(&categories2)
  474. if err != nil {
  475. t.Fatal(err)
  476. }
  477. t.Log("[Test_Sql_Find_Structs]->rows:\n", categories2)
  478. }
  479. func Test_SqlMapClient_Find_Structs(t *testing.T) {
  480. var categories2 []Category
  481. db.AddSql("1", "select * from category where id =?")
  482. err := db.SqlMapClient("1", 16).Find(&categories2)
  483. if err != nil {
  484. t.Fatal(err)
  485. }
  486. t.Log("[Test_SqlMapClient_Find_Structs]->rows:\n", categories2)
  487. }
  488. func Test_SqlTemplateClient_Find_Structs(t *testing.T) {
  489. var categories2 []Category
  490. db.AddSqlTemplate("1", "select * from category where id =?id")
  491. err := db.SqlTemplateClient("1", &map[string]interface{}{"id": 25}).Find(&categories2)
  492. if err != nil {
  493. t.Fatal(err)
  494. }
  495. t.Log("[Test_SqlTemplateClient_Find_Structs]->rows:\n", categories2)
  496. }
  497. func Test_Session_SqlTemplateClient_Find_Structs(t *testing.T) {
  498. session := db.NewSession()
  499. defer session.Close()
  500. var categories2 []Category
  501. db.AddSqlTemplate("1", "select * from category where id =?id")
  502. err := session.SqlTemplateClient("1", &map[string]interface{}{"id": 25}).Find(&categories2)
  503. if err != nil {
  504. t.Fatal(err)
  505. }
  506. t.Log("[Test_SqlTemplateClient_Find_Structs]->rows:\n", categories2)
  507. }
  508. func Test_Sql_Search_Json(t *testing.T) {
  509. var categories2 []Category
  510. json, err := db.Sql("select * from category where id =?", 16).Search(&categories2).Json()
  511. if err != nil {
  512. t.Fatal(err)
  513. }
  514. t.Log("[Test_Sql_Search_Json]->rows:\n", json)
  515. }
  516. func Test_SqlMapClient_Search_Json(t *testing.T) {
  517. var categories2 []Category
  518. db.AddSql("1", "select * from category where id =?")
  519. json, err := db.SqlMapClient("1", 16).Search(&categories2).Json()
  520. if err != nil {
  521. t.Fatal(err)
  522. }
  523. t.Log("[Test_SqlMapClient_Search_Json]->rows:\n", json)
  524. }
  525. func Test_SqlTemplateClient_Search_Json(t *testing.T) {
  526. var categories2 []Category
  527. db.AddSqlTemplate("1", "select * from category where id =?id")
  528. json, err := db.SqlTemplateClient("1", &map[string]interface{}{"id": 25}).Search(&categories2).Json()
  529. if err != nil {
  530. t.Fatal(err)
  531. }
  532. t.Log("[Test_SqlTemplateClient_Search_Json]->rows:\n", json)
  533. }
  534. func Test_Query(t *testing.T) {
  535. result, err := db.Query("select * from category where id =25")
  536. if err != nil {
  537. t.Fatal(err)
  538. }
  539. t.Log("[Test_Query]->rows:\n", result)
  540. }
  541. func STest_Sql_Execute(t *testing.T) {
  542. result, err := db.Sql("INSERT INTO categories VALUES (?, ?, ?, ?, ?)", 148, "xiaozhang", 1, 1, 1).Execute()
  543. if err != nil {
  544. t.Fatal(err)
  545. }
  546. t.Log("[Test_Sql_Execute]->rows:\n", result)
  547. }
  548. func STest_SqlMapClient_Execute(t *testing.T) {
  549. db.AddSql("Test_SqlMapClient_Execute", "INSERT INTO categories VALUES (?id, ?name, ?counts, ?orders, ?pid)")
  550. result, err := db.SqlMapClient("Test_SqlMapClient_Execute", &map[string]interface{}{"id": 149, "name": "xiaowang", "counts": 1, "orders": 1, "pid": 1}).Execute()
  551. if err != nil {
  552. t.Fatal(err)
  553. }
  554. t.Log("[Test_SqlMapClient_Execute]->rows:\n", result)
  555. }
  556. func STest_SqlTemplateClientt_Execute(t *testing.T) {
  557. db.AddSqlTemplate("Test_SqlTemplateClientt_Execute", "INSERT INTO categories VALUES (?id, ?name, ?counts, ?orders, ?pid)")
  558. result, err := db.SqlTemplateClient("Test_SqlTemplateClientt_Execute", &map[string]interface{}{"id": 240, "name": "laowang", "counts": 1, "orders": 1, "pid": 1}).Execute()
  559. if err != nil {
  560. t.Fatal(err)
  561. }
  562. t.Log("[Test_SqlTemplateClientt_Execute]->rows:\n", result)
  563. }
  564. func Test_GetSQL(t *testing.T) {
  565. db.AddSql("Test_GetSQL_1", "select * from Test_GetSQL_1")
  566. t.Log("[Test_GetSQL]->Test_GetSQL_1:\n", db.GetSql("Test_GetSQL_1"))
  567. t.Log("[Test_GetSQL]->Test_GetSQL_2:\n", db.GetSql("Test_GetSQL_1"))
  568. }
  569. func Test_GetSqlMap(t *testing.T) {
  570. t.Log("[Test_GetSqlMap]->3:\n")
  571. t.Log(xorm.JSONString(db.GetSqlMap(3), true))
  572. sqlmap := db.GetSqlMap(3)
  573. t.Log("[Test_GetSqlMap]->len(sqlmap):\n", len(sqlmap))
  574. db.AddSql("Test_GetSqlMap_1", "select * from Test_GetSqlMap_1")
  575. db.AddSql("Test_GetSqlMap_2", "select * from Test_GetSqlMap_2")
  576. db.AddSql("Test_GetSqlMap_3", "select * from Test_GetSqlMap_3")
  577. db.AddSql("Test_GetSqlMap_4", "select * from Test_GetSqlMap_4")
  578. db.AddSql("Test_GetSqlMap_5", "select * from Test_GetSqlMap_5")
  579. t.Log("[Test_GetSqlMap]->init->3:\n")
  580. t.Log(xorm.JSONString(db.GetSqlMap(3), true))
  581. sqlmap = db.GetSqlMap(3)
  582. t.Log("[Test_GetSqlMap]->init->len(sqlmap):\n", len(sqlmap))
  583. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_null:\n")
  584. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_null"), true))
  585. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1:\n")
  586. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1"), true))
  587. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3:\n")
  588. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3"), true))
  589. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,3:\n")
  590. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", 3), true))
  591. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,3,Test_GetSqlMap_null:\n")
  592. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", 3, "Test_GetSqlMap_null"), true))
  593. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,[]string{Test_GetSqlMap_2, Test_GetSqlMap_4}:\n")
  594. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", []string{"Test_GetSqlMap_2", "Test_GetSqlMap_4"}), true))
  595. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,[]string{Test_GetSqlMap_2, Test_GetSqlMap_4},2:\n")
  596. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", []string{"Test_GetSqlMap_2", "Test_GetSqlMap_4"}, 2), true))
  597. t.Log("[Test_GetSqlMap]->Test_GetSqlMap_1,Test_GetSqlMap_3,[]string{Test_GetSqlMap_2, Test_GetSqlMap_4},2 ,Test_GetSqlMap_null:\n")
  598. t.Log(xorm.JSONString(db.GetSqlMap("Test_GetSqlMap_1", "Test_GetSqlMap_3", []string{"Test_GetSqlMap_2", "Test_GetSqlMap_4"}, 2, "Test_GetSqlMap_null"), true))
  599. }
  600. func Test_GetSqlTemplates(t *testing.T) {
  601. t.Log("[GetSqlTemplates]->Test_GetSqlTemplates_1:\n")
  602. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1"), true))
  603. Test_GetSqlTemplates_1 := db.GetSqlTemplates("Test_GetSqlTemplates_1")["Test_GetSqlTemplates_1"]
  604. if Test_GetSqlTemplates_1 == nil {
  605. t.Log("Test_GetSqlTemplates_1 is nil")
  606. }
  607. t.Log("[Test_GetSqlMap]->len(sqlmap):\n", len(db.GetSqlTemplates("Test_GetSqlTemplates_1")))
  608. db.AddSqlTemplate("Test_GetSqlTemplates_1", "select * from Test_GetSqlTemplates_1")
  609. db.AddSqlTemplate("Test_GetSqlTemplates_2", "select * from Test_GetSqlTemplates_2")
  610. db.AddSqlTemplate("Test_GetSqlTemplates_3", "select * from Test_GetSqlTemplates_3")
  611. db.AddSqlTemplate("Test_GetSqlTemplates_4", "select * from Test_GetSqlTemplates_4")
  612. db.AddSqlTemplate("Test_GetSqlTemplates_5", "select * from Test_GetSqlTemplates_5")
  613. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1:\n")
  614. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1"), true))
  615. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3:\n")
  616. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3"), true))
  617. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3,3:\n")
  618. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", 3), true))
  619. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3,[]string{Test_GetSqlTemplates_2, Test_GetSqlTemplates_4}:\n")
  620. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", []string{"Test_GetSqlTemplates_2", "Test_GetSqlTemplates_4"}), true))
  621. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1,Test_GetSqlTemplates_3,[]string{Test_GetSqlTemplates_2, Test_GetSqlTemplates_4},2:\n")
  622. t.Log(xorm.JSONString(db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", []string{"Test_GetSqlTemplates_2", "Test_GetSqlTemplates_4"}, 2), true))
  623. strSqlTemplate, err := db.GetSqlTemplates("Test_GetSqlTemplates_1")["Test_GetSqlTemplates_1"].Execute(nil)
  624. if err != nil {
  625. t.Fatal(err)
  626. }
  627. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_1->strSqlTemplate:\n", strSqlTemplate)
  628. strSqlTemplate, err = db.GetSqlTemplates("Test_GetSqlTemplates_1", "Test_GetSqlTemplates_3", []string{"Test_GetSqlTemplates_2", "Test_GetSqlTemplates_4"}, 2)["Test_GetSqlTemplates_2"].Execute(nil)
  629. if err != nil {
  630. t.Fatal(err)
  631. }
  632. t.Log("[Test_GetSqlTemplates]->Test_GetSqlTemplates_2->strSqlTemplate:\n", strSqlTemplate)
  633. }
  634. func Test_Limit_Func(t *testing.T) {
  635. 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()
  636. t.Log(res)
  637. }
  638. func Test_Find(t *testing.T) {
  639. var category []Category
  640. err := db.Find(&category)
  641. if err != nil {
  642. t.Fatal(err)
  643. }
  644. t.Log(category)
  645. }