xorm_test.go 24 KB

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