28 lines
804 B
Nim
28 lines
804 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 Value = Preserve[void]
|
|
|
|
type Args {.preservesDictionary.}= object
|
|
database: string
|
|
dataspace: Ref
|
|
|
|
runActor("main") do (root: Ref; turn: var Turn):
|
|
connectStdio(root, turn)
|
|
during(turn, root, ?Args) do (path: string, ds: Ref):
|
|
let db = open(path, "", "", "")
|
|
during(turn, ds, ?Query) do (label: Value, statement: string):
|
|
for row in rows(db, sql statement):
|
|
var rec = initRecord(label, len(row))
|
|
for col, val in row: rec[col] = val.toPreserve
|
|
discard publish(turn, ds, rec)
|
|
do:
|
|
close(db)
|