sqlite_actor/src/sqlite_actor.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)