Add Ormin ORM support for BaraDB (Nim client)
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
import unittest, json, strutils, macros, times, os, sequtils
|
||||
# Postgres connection handled through ormin_postgre backend
|
||||
from db_connector/db_postgres import exec, getValue
|
||||
import ormin
|
||||
import ormin/ormin_postgre as ormin_postgre
|
||||
# import db_connector/db_postgres as db_postgres
|
||||
import ormin/db_utils
|
||||
|
||||
when defined(macosx):
|
||||
{.passL: "-Wl,-rpath,/opt/homebrew/lib/postgresql@14".}
|
||||
|
||||
|
||||
importModel(DbBackend.postgre, "model_postgre")
|
||||
|
||||
let
|
||||
db {.global.} = ormin_postgre.open("localhost", "test", "test", "test_ormin")
|
||||
testDir = currentSourcePath.parentDir()
|
||||
sqlFile = Path(testDir / "model_postgre.sql")
|
||||
|
||||
|
||||
suite "Test special database types and functions of postgre":
|
||||
discard
|
||||
|
||||
let
|
||||
dtStr1 = "2018-03-30 01:01:01"
|
||||
dt1 = parse(dtStr1, "yyyy-MM-dd HH:mm:ss")
|
||||
dtnStr1 = "2019-03-30 11:02:02+08"
|
||||
dtn1 = parse(dtnStr1, "yyyy-MM-dd HH:mm:sszz")
|
||||
dtzStr1 = "2020-03-30 09:03:03Z"
|
||||
dtz1 = parse(dtzStr1, "yyyy-MM-dd HH:mm:sszz")
|
||||
dtStr2 = "2018-03-30 01:01:01.123"
|
||||
dt2 = parse(dtStr2, "yyyy-MM-dd HH:mm:ss\'.\'fff")
|
||||
dtnStr2 = "2019-03-30 11:02:02.123+08"
|
||||
dtn2 = parse(dtnStr2, "yyyy-MM-dd HH:mm:ss\'.\'fffzz")
|
||||
dtzStr2 = "2020-03-30 09:03:03.123Z"
|
||||
dtz2 = parse(dtzStr2, "yyyy-MM-dd HH:mm:ss\'.\'fffzz")
|
||||
dtStr3 = "2018-03-30 01:01:01.123456"
|
||||
dt3 = parse(dtStr3, "yyyy-MM-dd HH:mm:ss\'.\'ffffff")
|
||||
dtnStr3 = "2019-03-30 11:02:02.123456+08"
|
||||
dtn3 = parse(dtnStr3, "yyyy-MM-dd HH:mm:ss\'.\'ffffffzz")
|
||||
dtzStr3 = "2020-03-30 09:03:03.123456Z"
|
||||
dtz3 = parse(dtzStr3, "yyyy-MM-dd HH:mm:ss\'.\'ffffffzz")
|
||||
dtjson1 = %*{"dt": dt1.format(jsonTimeFormat),
|
||||
"dtn": dtn1.format(jsonTimeFormat),
|
||||
"dtz": dtz1.format(jsonTimeFormat)}
|
||||
dtjson2 = %*{"dt": dt2.format(jsonTimeFormat),
|
||||
"dtn": dtn2.format(jsonTimeFormat),
|
||||
"dtz": dtz2.format(jsonTimeFormat)}
|
||||
dtjson3 = %*{"dt": dt3.format(jsonTimeFormat),
|
||||
"dtn": dtn3.format(jsonTimeFormat),
|
||||
"dtz": dtz3.format(jsonTimeFormat)}
|
||||
|
||||
let insertSql = sql"insert into tb_timestamp(dt, dtn, dtz) values (?, ?, ?)"
|
||||
|
||||
suite "timestamp_insert":
|
||||
setup:
|
||||
db.dropTable(sqlFile, "tb_timestamp")
|
||||
db.createTable(sqlFile, "tb_timestamp")
|
||||
|
||||
test "insert":
|
||||
query:
|
||||
insert tb_timestamp(dt = ?dt1, dtn = ?dtn1, dtz = ?dtz1)
|
||||
check db_postgres.getValue(db, sql"select count(*) from tb_timestamp") == "1"
|
||||
|
||||
test "json":
|
||||
query:
|
||||
insert tb_timestamp(dt = %dtjson1["dt"],
|
||||
dtn = %dtjson1["dtn"],
|
||||
dtz = %dtjson1["dtz"])
|
||||
check db_postgres.getValue(db, sql"select count(*) from tb_timestamp") == "1"
|
||||
|
||||
suite "timestamp":
|
||||
db.dropTable(sqlFile, "tb_timestamp")
|
||||
db.createTable(sqlFile, "tb_timestamp")
|
||||
|
||||
db_postgres.exec(db, insertSql, dtStr1, dtnStr1, dtzStr1)
|
||||
db_postgres.exec(db, insertSql, dtStr2, dtnStr2, dtzStr2)
|
||||
db_postgres.exec(db, insertSql, dtStr3, dtnStr3, dtzStr3)
|
||||
doAssert db_postgres.getValue(db, sql"select count(*) from tb_timestamp") == "3"
|
||||
|
||||
test "query":
|
||||
let res = query:
|
||||
select tb_timestamp(dt, dtn, dtz)
|
||||
check res == [(dt1, dtn1, dtz1),
|
||||
(dt2, dtn2, dtz2),
|
||||
(dt3, dtn3, dtz3)]
|
||||
|
||||
test "where":
|
||||
let res = query:
|
||||
select tb_timestamp(dt)
|
||||
where dt == ?dt1
|
||||
check res == [dt1]
|
||||
|
||||
test "in":
|
||||
let
|
||||
duration = initDuration(hours = 1)
|
||||
dtStart = dt1 - duration
|
||||
dtEnd = dt1 + duration
|
||||
res2 = query:
|
||||
select tb_timestamp(dt)
|
||||
where dt in ?dtStart .. ?dtEnd
|
||||
check res2 == [dt1, dt2, dt3]
|
||||
|
||||
test "iter":
|
||||
createIter iter:
|
||||
select tb_timestamp(dt)
|
||||
where dt == ?dt
|
||||
var res: seq[DateTime]
|
||||
for it in db.iter(dt1):
|
||||
res.add(it)
|
||||
check res == [dt1]
|
||||
|
||||
test "proc":
|
||||
createProc aproc:
|
||||
select tb_timestamp(dt)
|
||||
where dt == ?dt
|
||||
check db.aproc(dt1) == [dt1]
|
||||
|
||||
test "json":
|
||||
let res = query:
|
||||
select tb_timestamp(dt, dtn, dtz)
|
||||
produce json
|
||||
check res == %*[dtjson1, dtjson2, dtjson3]
|
||||
|
||||
test "json_where":
|
||||
let res = query:
|
||||
select tb_timestamp(dt, dtn, dtz)
|
||||
where dt == %dtjson1["dt"]
|
||||
produce json
|
||||
check res[0] == dtjson1
|
||||
Reference in New Issue
Block a user