Fix cross_todo example
This commit is contained in:
parent
6244cc2e4f
commit
d19a4ca827
6 changed files with 15 additions and 15 deletions
83
examples/cross_todo/nim_backend/testbackend.nim
Normal file
83
examples/cross_todo/nim_backend/testbackend.nim
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# Tests the backend code.
|
||||
|
||||
import backend, db_sqlite, strutils, times
|
||||
|
||||
|
||||
proc showPagedResults(conn: TDbConn; params: TPagedParams) =
|
||||
## Shows the contents of the database in pages of specified size.
|
||||
##
|
||||
## Hmm... I guess this is more of a debug proc which should be moved outside,
|
||||
## or to a commandline interface (hint).
|
||||
var
|
||||
page = 0'i64
|
||||
rows = conn.getPagedTodos(params)
|
||||
|
||||
while rows.len > 0:
|
||||
echo("page " & $page)
|
||||
for row in rows:
|
||||
echo("row id:$1, text:$2, priority:$3, done:$4, date:$5" % [$row.getId,
|
||||
$row.text, $row.priority, $row.isDone,
|
||||
$row.getModificationDate])
|
||||
# Query the database for the next page or quit.
|
||||
if params.pageSize > 0:
|
||||
page = page + 1
|
||||
rows = conn.getPagedTodos(params, page)
|
||||
else:
|
||||
break
|
||||
|
||||
|
||||
proc dumTest() =
|
||||
let conn = openDatabase("todo.sqlite3")
|
||||
try:
|
||||
let numTodos = conn.getNumEntries
|
||||
echo("Current database contains " & $numTodos & " todo items.")
|
||||
if numTodos < 10:
|
||||
# Fill some dummy rows if there are not many entries yet.
|
||||
discard conn.addTodo(3, "Filler1")
|
||||
discard conn.addTodo(4, "Filler2")
|
||||
|
||||
var todo = conn.addTodo(2, "Testing")
|
||||
echo("New todo added with id " & $todo.getId)
|
||||
|
||||
# Try changing it and updating the database.
|
||||
var clonedTodo = conn.getTodo(todo.getId)[]
|
||||
assert(clonedTodo.text == todo.text, "Should be equal")
|
||||
todo.text = "Updated!"
|
||||
todo.priority = 7
|
||||
todo.isDone = true
|
||||
if todo.save(conn):
|
||||
echo("Updated priority $1, done $2" % [$todo.priority, $todo.isDone])
|
||||
else:
|
||||
assert(false, "Uh oh, I wasn't expecting that!")
|
||||
|
||||
# Verify our cloned copy is different but can be updated.
|
||||
assert(clonedTodo.text != todo.text, "Should be different")
|
||||
discard clonedTodo.update(conn)
|
||||
assert(clonedTodo.text == todo.text, "Should be equal")
|
||||
|
||||
var params: TPagedParams
|
||||
params.initDefaults
|
||||
conn.showPagedResults(params)
|
||||
conn.deleteTodo(todo.getId)
|
||||
echo("Deleted rows for id 3? ")
|
||||
let res = conn.deleteTodo(todo.getId)
|
||||
echo("Deleted rows for id 3? " & $res)
|
||||
if todo.update(conn):
|
||||
echo("Later priority $1, done $2" % [$todo.priority, $todo.isDone])
|
||||
else:
|
||||
echo("Can't update object $1 from db!" % $todo.getId)
|
||||
|
||||
# Try to list content in a different way.
|
||||
params.pageSize = 5
|
||||
params.priorityAscending = true
|
||||
params.dateAscending = true
|
||||
params.showChecked = true
|
||||
conn.showPagedResults(params)
|
||||
finally:
|
||||
conn.close
|
||||
echo("Database closed")
|
||||
|
||||
|
||||
# Code that will be run only on the commandline.
|
||||
when isMainModule:
|
||||
dumTest()
|
||||
Loading…
Add table
Add a link
Reference in a new issue