sqlite_actor/src/sqlite_actor.nim

27 lines
802 B
Nim

# SPDX-FileCopyrightText: ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense
# {.passC: staticExec("pkg-config --cflags sqlcipher").}
# {.passL: staticExec("pkg-config --libs sqlcipher").}
import std/db_sqlite
import preserves, syndicate
import ./sqlite
type Args {.preservesDictionary.}= object
database: string
dataspace: Ref
runActor("main") do (root: Ref; turn: var Turn):
connectStdio(root, turn)
let queryPat = ?Observe(pattern: !Query) ?? {0: grabLit()}
during(turn, root, ?Args) do (path: string, ds: Ref):
let db = open(path, "", "", "")
during(turn, ds, queryPat) do (statement: string):
var query = Query(statement: statement)
for row in rows(db, sql statement):
add(query.rows, row)
discard publish(turn, ds, query)
do:
close(db)