feat(clients): add nim-allographer client with BaraDB driver support
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

- Pure Nim wire protocol client (async + sync, no C FFI)
- Query Builder: fluent API, SQL generator, execution, transactions
- Schema Builder: create/alter/drop tables, column operations
- Connection pool with aging and timeout handling
- ORM integration via compile-time DB_BARADB switch
- Tests: test_open, test_query
- Documentation: README.md, PLAN_BARADB.md
This commit is contained in:
2026-05-21 15:49:11 +03:00
parent 2d310a33a1
commit 6bfc5b3a3c
654 changed files with 109419 additions and 0 deletions
@@ -0,0 +1,31 @@
---
alwaysApply: true
---
現在のブランチ名と一致するファイル名のファイルが、リポジトリのルートから見て `.cursor/rules/branch/` 配下にあった場合は、それを読み込んでください。
各ブランチルールは、ブランチで行うべき開発内容、タスクを小さい粒度で分けた進捗、参考資料の一覧を含みます。
ブランチルールファイルの拡張子は `.mdc` です。
エージェントは開発の進度に従って進捗を適時記録してください。
実装する中で `調査結果・設計まとめ` に間違いがあると判明した場合は、その都度、より正しいと考えられる設計方針を書き込んでください。
以下はブランチルールの雛形です
```
---
description: {ブランチ名}ブランチでの開発時に読み込む
alwaysApply: false
---
{ブランチルール名}
===
このブランチで実装することは以下の通りです。
-
## 進捗
- [ ]
## 参考資料
-
## 調査結果・設計まとめ
```
@@ -0,0 +1,130 @@
---
description: 318-bug-incorrect-sqlite-check-constraint-for-columnchar-columnstring-and-columnuuidブランチでの開発時に読み込む
alwaysApply: false
---
SQLite CHECK Constraint 引用誤り修正 ブランチルール
===
このブランチで実装することは以下の通りです。
- SQLite の schema builder において、`Column.char`, `Column.string`, `Column.uuid` が生成する `CHECK` 制約の列参照が文字列リテラル扱いになっている不具合を修正する。
- `CREATE TABLE` と `ALTER TABLE ... ADD COLUMN` の両方で、`length('column_name')` ではなく列値を参照する `length(column_name)` 系の SQL を生成するように整える。
- SQLite driver の修正を公開 API へ漏らさず、driver 内部の SQL 生成責務に閉じ込める。
- 長さ制約の既定値あり・既定値なしの両ケースで、`char` `string` `uuid` の意味論が崩れないことを確認できるテストを整備する。
- 必要に応じて README / `documents/rdb/schema_builder.md` の SQLite 例を同期し、誤った `CHECK (length('email') <= 255)` 表記を残さない。
## 進捗
- [x] `.cursor/rules/project.mdc` と `.cursor/rules/branch.mdc` を確認した
- [x] 現在のブランチ名に対応するブランチルールファイルが未作成であることを確認した
- [x] SQLite の `CHECK` 生成箇所を調査し、`create_column_query.nim` と `add_column_query.nim` の両方に同種の問題があることを確認した
- [x] 対象カラム型が `Column.char`, `Column.string`, `Column.uuid` の 3 系統であることを確認した
- [x] ドキュメントに同じ誤表記が残っていることを確認した
- [x] ブランチルールに改修方針・進捗粒度・参考資料を整理した
- [x] SQLite schema builder の `CHECK` 制約生成を、列名を文字列リテラル化しない形式へ修正する
- [x] `CREATE TABLE` 経路のテストを追加または更新し、生成 SQL が列値長を検査することを確認する
- [x] `ADD COLUMN` 経路のテストを追加または更新し、生成 SQL が列値長を検査することを確認する
- [x] `char` `string` `uuid` の既定長と明示長の両ケースで回帰確認する
- [x] 必要な README / `documents/rdb/schema_builder.md` の記述を同期する
- [ ] 実装途中で設計認識に誤りが見つかった場合は、本ファイルの `調査結果・設計まとめ` を更新する
## 参考資料
- `src/allographer/schema_builder/queries/sqlite/sub/create_column_query.nim`
- `src/allographer/schema_builder/queries/sqlite/sub/add_column_query.nim`
- `tests/sqlite/test_create_schema.nim`
- `tests/sqlite/test_schema.nim`
- `documents/rdb/schema_builder.md`
- `README.md`
- SQLite Documentation: CHECK constraints
- SQLite Documentation: core functions `length(...)`
## 調査結果・設計まとめ
### 背景
SQLite 実装では、文字列長を制限するために `CHECK (length(...) <= N)` を列定義へ付与している。
しかし現状の SQL 生成は `length('{column.name}')` となっており、列値ではなく列名そのものを単一引用符付きの文字列リテラルとして評価している。
その結果、たとえば `name` 列では常に `length('name') == 4` と評価されるため、期待した列値バリデーションにならない。
### 現状の問題
1. SQLite の `CREATE TABLE` 用列生成で `CHECK (length('{column.name}') <= {maxLength})` を出力している
2. SQLite の `ADD COLUMN` 用列生成でも同じ誤りを重複して持っている
3. 影響範囲が `Column.char`, `Column.string`, `Column.uuid` にまたがっている
4. ドキュメント例にも同じ誤表記があり、利用者が誤仕様と誤解する余地がある
5. SQL 生成の不具合であり、公開 API ではなく SQLite driver 内部責務として直すべき問題である
### 設計目標
1. SQLite で生成される長さ `CHECK` 制約が常に列値を参照する
2. `char`, `string`, `uuid` の API 意味論を変えずに不具合のみを修正する
3. `create` と `add column` の両経路で SQL 生成規則を揃える
4. 既存の RDB 向け共通 API を汚さず、SQLite 実装へ変更を閉じ込める
5. テストと文書で回帰防止できる状態にする
### 非目標
1. SQLite 以外の driver の長さ制約仕様を同時に変更すること
2. `Column.char`, `Column.string`, `Column.uuid` の既定長そのものを見直すこと
3. schema builder 全体の quoting 戦略をこのブランチで全面再設計すること
4. 公開 API の追加・削除・引数変更を行うこと
### 実装方針
#### 1. SQLite の長さ `CHECK` 制約は列値参照に統一する
変更対象:
- `src/allographer/schema_builder/queries/sqlite/sub/create_column_query.nim`
- `src/allographer/schema_builder/queries/sqlite/sub/add_column_query.nim`
方針:
- `length('{column.name}')` を列値参照の式へ修正する
- `char`, `string`, `uuid` の 3 系統で同じルールを適用する
- `CREATE TABLE` と `ADD COLUMN` で生成式の差異を作らない
#### 2. 列名の扱いは SQLite 列参照として妥当な形を維持する
要点:
- 単一引用符 `'...'` は文字列リテラルなので使用しない
- 既存の SQLite SQL 生成スタイルに合わせ、列参照として解釈される形を採用する
- 必要なら identifier quoting の既存ルールを確認し、単純な文字列置換ではなく SQLite 方言として自然な表現に寄せる
- 共通 helper を `schema_utils` に置き、`CREATE TABLE` / `ADD COLUMN` の両経路で同じ生成規則を使う
#### 3. テストは SQL 文字列と実動作の両面を意識して追加する
候補:
1. schema 生成テストで `CHECK` 句が列値参照になっていることを確認する
2. `Column.string("name")` の既定長ケースを確認する
3. `Column.char("name", 20)` の明示長ケースを確認する
4. `Column.uuid("uuid")` の既定長ケースを確認する
5. `add()` 経路でも同じ `CHECK` 句になることを確認する
### 受け入れ基準
1. SQLite の `char`, `string`, `uuid` が生成する `CHECK` 制約で列名が単一引用符付き文字列になっていない
2. `CREATE TABLE` と `ADD COLUMN` の両方で同じ修正が反映されている
3. 追加または更新したテストで不具合再発を防止できる
4. 必要なドキュメント例が実装と一致している
5. 公開 API 変更なしで SQLite driver 内に修正が閉じ込められている
### 参照仕様
- SQLite Documentation: CHECK constraints
https://www.sqlite.org/lang_createtable.html#ckconst
- SQLite Documentation: Built-In Scalar SQL Functions
https://www.sqlite.org/lang_corefunc.html#length
### リスク
1. 列名参照の quoting 形式を誤ると、今度は予約語や特殊文字を含む列名で不整合が出る可能性がある
2. `create` と `add column` の片方だけ修正すると、経路差による再発が起きる
3. ドキュメント未更新のままだと、修正後も利用者が誤った SQL 例を参照して混乱する
4. SQL 文字列比較系テストだけだと、実際の制約評価の誤りを見逃す可能性がある
### 段階導入案
1. 影響箇所と既存 SQLite テストを整理する
2. `create` / `add column` の SQL 生成を修正する
3. `char` / `string` / `uuid` の回帰テストを追加または更新する
4. 必要な README / documents を同期する
5. 実装差分が設計とずれたら本ファイルを更新する
@@ -0,0 +1,156 @@
---
description: 320-allographerpostgresql-非同期待機改善-設計書ブランチでの開発時に読み込む
alwaysApply: false
---
allographer(PostgreSQL) 非同期待機改善 ブランチルール
===
このブランチで実装することは以下の通りです。
- allographer の PostgreSQL 実装に残っている `sleepAsync(10)` ベースの非同期待機を、libpq ソケット readiness ベースの待機へ置き換える。
- `query*`, `queryPlain*`, `exec*`, `getColumns*` など、同一問題を持つ待機経路を共通化して修正する。
- `dbOpen` 時に PostgreSQL 接続を non-blocking 化し、libpq 非同期 API の前提を明示的に保証する。
- 接続プール空き待機を `sleepAsync(10)` ポーリングから通知ベースへ移行し、プール枯渇時の待機遅延を抑制する。
- 公開 API 互換を維持したまま、httpbeast/httpx 利用時の DB 完了後の回収遅延を縮小する。
## 進捗
- [x] `src/allographer/query_builder/libs/postgres/postgres_impl.nim` の待機ループを調査し、`sleepAsync(10)` 依存箇所を一覧化する
- [x] `src/allographer/query_builder/libs/postgres/postgres_rdb.nim` を確認し、既存宣言で再利用できる libpq API と不足宣言を整理する(追加宣言不要。`pqsocket` / `pqflush` / `pqsetnonblocking` 等は既存)
- [x] PostgreSQL 待機ヘルパ `waitPgReadable` / `waitPgWritable` / `cancelQuery` の責務と配置を決める(`postgres_impl.nim` 内の非公開プロシージャ)
- [x] `PQsocket` / `PQconsumeInput` / `PQisBusy` / `PQgetResult` / `PQflush` に基づく共通クエリ待機ループを設計する(`pgFlushOutgoing` / `pgNextResult` / `pgEnsureIdle`
- [x] `query*`, `queryPlain*`, `exec*`, `getColumns*` の各経路を共通待機ロジックへ寄せる
- [x] タイムアウト時の `cancelQuery` 実行とエラーメッセージ方針を統一する(タイムアウトは `cancelQuery` 後に `DbError`
- [x] `src/allographer/query_builder/models/postgres/postgres_open.nim` で `pqsetnonblocking(conn, 1)` と検証処理を追加する
- [x] `src/allographer/query_builder/models/postgres/postgres_types.nim` に接続プール waiter キューを追加する(`waiters*: seq[Future[void]]`
- [x] `src/allographer/query_builder/models/postgres/postgres_exec.nim` の `getFreeConn` / `returnConn` を通知ベースへ置換する
- [x] PostgreSQL の単体・結合・回帰テストを追加または更新する(`tests/postgres/test_pool_wait.nim` 追加、既存 `test*.nim` 回帰)
- [x] `sleepAsync(10)` が PostgreSQL クエリ待機とプール空き待機から除去されたことを確認する
- [ ] README / documents / ルール文書に仕様差分が必要か確認し、必要分を同期する(利用者向け公開 API 変更なしのため未着手。必要なら追記)
- [x] MariaDB: `mariadb_rdb.nim` に `mysql_read_query_result``cdecl`)を追加
- [x] MariaDB: `mariadb_impl.nim` は接続ブロッキング前提で `mysql_real_query` / `mysql_read_query_result` / `mysql_fetch_row` / `free_result` を同期利用(`mysql_read_query_result_*` / `fetch_row_*` の async ループは環境でタイムアウト・デッドロックのため不使用)
- [x] MariaDB: `mariadb_open.nim` は `MYSQL_OPT_NONBLOCK` を付与しない(同上)
- [x] MariaDB: `mariadb_types` / `mariadb_exec` のプール空き待ちは通知ベース(`tests/mariadb/test_pool_wait.nim`
## 参考資料
- allographer の PostgreSQL 実装: `src/allographer/query_builder/libs/postgres/postgres_impl.nim`
- allographer の PostgreSQL 実行管理: `src/allographer/query_builder/models/postgres/postgres_exec.nim`
- allographer の PostgreSQL 接続初期化: `src/allographer/query_builder/models/postgres/postgres_open.nim`
- allographer の PostgreSQL 型定義: `src/allographer/query_builder/models/postgres/postgres_types.nim`
- libpq 非同期 API: `PQsocket`, `PQconsumeInput`, `PQisBusy`, `PQgetResult`, `PQsetnonblocking`, `PQflush`, `PQgetCancel`, `PQcancel`, `PQfreeCancel`
- Nim `asyncdispatch` のイベントループ仕様
- httpbeast / httpx の POSIX selector ループ実装
## 調査結果・設計まとめ
### 背景
`httpbeast` / `httpx` 利用時のみ、DB クエリ待機が `asynchttpserver` より大きく悪化する事象がある。
現状の allographer PostgreSQL 実装は、libpq 非同期 API を使いながらも、実際の待機を `await sleepAsync(10)` に依存している。
### 問題の本質
- 現状の PostgreSQL 待機は、ソケット readiness 待ちではなく 10ms 刻みのポーリングである
- Nim の `asyncdispatch` は `poll` / `waitFor` / `runForever` が回らない限りタイマーも進まない
- httpbeast / httpx の POSIX 経路は `selectInto(-1, ...)` による無期限ブロックを中心としており、`asyncdispatch.poll(0)` は限定的にしか回らない
- そのため `sleepAsync(10)` は実時間 10ms で復帰せず、「次に HTTP 側ループがたまたま dispatcher を回すまで」遅延する
- 結果として、DB は完了済みでも allographer 側の結果回収が遅れ、体感レイテンシが悪化する
### 設計目標
1. PostgreSQL クエリ待機から `sleepAsync` ポーリングを除去する
2. libpq ソケットの可読・可書込イベントで待機する
3. 接続プール空き待ちも通知ベースへ移行し、タイマー依存を減らす
4. `dbOpen`, `table`, `select`, `find`, `update` などの公開 API 互換を維持する
### 非目標
1. Query Builder API の破壊的変更
2. MySQL / SQLite への同時展開(MariaDB は PostgreSQL と同方針で非同期待機を実装済み)
3. 初回対応で全 OS 最適化を完了させること
### 実装方針
#### 1. libpq 待機を FD イベント待機へ変更する
変更対象:
- `src/allographer/query_builder/libs/postgres/postgres_impl.nim`
- `src/allographer/query_builder/libs/postgres/postgres_rdb.nim`
追加する内部ヘルパ:
- `waitPgReadable(db: PPGconn, timeoutMs: int): Future[bool]`
- `waitPgWritable(db: PPGconn, timeoutMs: int): Future[bool]`
- `cancelQuery(db: PPGconn)`
要点:
- `pqsocket(db)` で FD を得る
- 必要に応じて dispatcher に `AsyncFD` を登録する
- read / write readiness を Future 完了で待つ
- タイムアウト管理を行う
- 登録リークや未解除ハンドラを残さない
#### 2. クエリ実行ループを共通化する
送信フェーズ:
1. `pqsendQueryParams(...)` を呼ぶ
2. `pqflush == 1` の間は `waitPgWritable` で待機する
受信フェーズ:
1. `pqconsumeInput`
2. `pqisBusy == 1` なら `waitPgReadable` で待機する
3. ready 後に `pqgetResult` を drain する
タイムアウト時は `cancelQuery` を実行し、エラーを返す。
#### 3. `dbOpen` で non-blocking を保証する
変更対象:
- `src/allographer/query_builder/models/postgres/postgres_open.nim`
仕様:
1. `pqsetnonblocking(conn, 1)` を実行する
2. 失敗時は `DbError`
3. `pqisnonblocking(conn) == 1` を確認し、保証できない場合は例外化する
#### 4. 接続プール空き待ちを通知ベースに変更する
変更対象:
- `src/allographer/query_builder/models/postgres/postgres_types.nim`
- `src/allographer/query_builder/models/postgres/postgres_exec.nim`
方針:
- `Connections` に `waiters*: Deque[Future[void]]` を追加する
- `getFreeConn` は空きがなければ waiter を登録して待機する
- `returnConn` は `isBusy = false` にした後、未完了 waiter を 1 つだけ起こす
- 余剰 waiter や完了済み waiter は掃除する
### 失敗時挙動
1. `pqsocket < 0` は `DbError`
2. タイムアウト時は `cancelQuery` 実行後に `DbError`
3. `cancelQuery` 失敗時は追加情報付きで例外化
4. dispatcher 登録・解除エラーは握り潰さず上位へ伝播する
### テスト方針
単体テスト:
1. `waitPgReadable` が read event で復帰する
2. timeout 時に `false` を返す
3. `cancelQuery` が後始末まで行う
4. `getFreeConn` が通知で復帰する
結合テスト:
1. httpbeast / httpx + Postgres のレイテンシ回帰を確認する
2. `asynchttpserver` と比較して極端な乖離がないことを確認する
3. プール枯渇時の待機が 10ms 刻みポーリングに依存しないことを確認する
回帰テスト:
1. 既存 CRUD クエリの結果互換
2. transaction 系 API の動作
3. 例外時メッセージが意味を保っていること
### 受け入れ基準
1. PostgreSQL クエリ待機ループから `await sleepAsync(10)` が除去されている
2. httpbeast / httpx で DB 完了後の回収遅延が顕著に増幅しない
3. プール空き待機で `sleepAsync` ポーリングを使わない
4. 公開 API 変更なしで既存テストと追加テストが成立する
@@ -0,0 +1,240 @@
---
description: 321-mariadb-nonblockingブランチでの開発時に読み込む
alwaysApply: false
---
MariaDB nonblocking API 対応 ブランチルール
===
このブランチで実装することは以下の通りです。
- allographer の MariaDB 実装を、MariaDB Connector/C の non-blocking client API に追従できる構成へ設計・整備する。
- 現在の `sleepAsync(10)` ベースの接続プール待機と、実質ブロッキングなクエリ実行経路を切り分けて改善方針を明確化する。
- `mysql_real_query_start/cont` 系、`mysql_read_query_result_start/cont` 系、`mysql_fetch_row_start/cont` 系を使う待機ループの責務分離を設計する。
- 必要な Connector/C 宣言を `mariadb_rdb.nim` に追加し、将来の実装変更でヘッダ不足が起きないようにする。
- 公開 API 互換を維持しつつ、MariaDB driver 内に差分を閉じ込める。
- 設計メモで整理していた背景・参照仕様・リスク・段階導入案をこのブランチルールへ集約し、参照元を一本化する。
## 進捗
- [x] `.cursor/rules/project.mdc` と `.cursor/rules/branch.mdc` を確認した
- [x] 現行 `src/allographer/query_builder/models/mariadb/` と `src/allographer/query_builder/libs/mariadb/` を調査した
- [x] ローカルの `/usr/include/mariadb/mysql.h` で non-blocking API 宣言と待機フラグを確認した
- [x] MariaDB 公式ドキュメントで non-blocking API の制約と利用手順を確認した
- [x] ブランチルールに設計方針・改修粒度・参考資料を整理した
- [x] `src/allographer/query_builder/libs/mariadb/mariadb_rdb.nim` に必要宣言を追加した
- [x] `mariadb_impl.nim` に共通待機ヘルパと `_start/_cont` ベースの実行ループを実装する
- [x] `mariadb_open.nim` で `MYSQL_OPT_NONBLOCK` を有効化し、接続初期化手順を整理する
- [x] `mariadb_types.nim` / `mariadb_exec.nim` のプール空き待機を通知ベースへ置換する
- [x] `tests/mariadb/` に pool wait と CRUD 回帰を追加する
- [x] 実装中に設計差分が出た場合は本ファイルの `調査結果・設計まとめ` を更新する
- [x] `src/allographer/query_builder/libs/surreal/` と `models/surreal/` の効率改善余地を調査し、`documents/rdb/surreal_efficiency_report.md` に整理した
- [x] `documents/rdb/surreal_efficiency_report.md` の P0/P1 項目に沿って、`surreal_impl.nim` の HTTP timeout 共通化、`surreal_open.nim` の bootstrap 1 回化、`surreal_lib.nim` の文字列生成改善、`surreal_exec.nim` の `getElems()` 化を実装した
## 参考資料
- `documents/rdb/mariadb_nonblocking_design.md` の内容を統合済み
- `src/allographer/query_builder/models/mariadb/mariadb_open.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_exec.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_types.nim`
- `src/allographer/query_builder/libs/mariadb/mariadb_impl.nim`
- `src/allographer/query_builder/libs/mariadb/mariadb_rdb.nim`
- `documents/rdb/surreal_efficiency_report.md`
- `/usr/include/mariadb/mysql.h`
- MariaDB Documentation: Non-Blocking API Reference
- MariaDB Documentation: Using the Non-Blocking Library
- `src/allographer/query_builder/models/postgres/postgres_open.nim`
- `src/allographer/query_builder/models/postgres/postgres_exec.nim`
## 調査結果・設計まとめ
### 背景
現行の MariaDB 実装は `Future` を返しているが、実際の MariaDB Connector/C 呼び出しは `mysql_real_query()` / `mysql_use_result()` / `mysql_fetch_row()` を同期的に使っている。
そのため、Nim 側では async API に見えても、ソケット I/O 待機は Connector/C 内でブロックされうる。さらに接続プール枯渇時は `sleepAsync(10)` ポーリングで待っており、待機遅延が大きい。
### 現状の問題
1. `mariadb_exec.nim` の `getFreeConn` が `sleepAsync(10)` ポーリングで、プール返却の即時通知がない
2. `mariadb_impl.nim` の `query*` / `exec*` / `getColumns*` は non-blocking API を使っていない
3. `timeout` 引数はあるが、Connector/C の I/O 待機そのものをアプリ側 event loop で制御できていない
4. `mysql_use_result()` を使う都合上、行フェッチ途中で新規操作を開始できないという Connector/C 制約を、内部設計として明示できていない
5. 設計メモが別ファイルに分散すると、ブランチ進捗と参照資料の整合性が崩れやすい
### 設計目標
1. MariaDB クエリ送受信を Connector/C の `_start/_cont` API へ置き換える
2. ソケット待機は `mysql_get_socket()` と `MYSQL_WAIT_*` に従って event loop で処理する
3. `mysql_get_timeout_value_ms()` に従って timeout を扱い、ライブラリ内部 timeout と allographer の接続 timeout を両立させる
4. 公開 API は維持し、driver 内部だけで差分を吸収する
5. 接続プール空き待機は PostgreSQL と同様の通知ベースへ寄せる
### 非目標
1. Query Builder の公開 API 変更
2. MySQL driver まで同時に全面改修すること
3. 初回対応で prepared statement 系まで non-blocking 化すること
4. このブランチの責務を MariaDB driver の範囲から広げすぎること
### 実装方針
#### 1. `mariadb_rdb.nim` に non-blocking API 宣言を揃える
追加または有効化する対象:
- `mysql_options`
- `mysql_get_socket`
- `mysql_get_timeout_value`
- `mysql_get_timeout_value_ms`
- `mysql_real_connect_start/cont`
- `mysql_real_query_start/cont`
- `mysql_store_result_start/cont`
- `mysql_read_query_result_start/cont`
- `mysql_fetch_row_start/cont`
- `mysql_free_result_start/cont`
- `MYSQL_WAIT_READ/WRITE/EXCEPT/TIMEOUT`
- 必要なら `mysql_optionsv` など周辺宣言も不足なく追加する
#### 2. `mariadb_open.nim` で non-blocking を明示的に有効化する
手順:
1. `mysql_init()` 後、`mysql_options(conn, MYSQL_OPT_NONBLOCK, nil)` を呼ぶ
2. 接続自体も `mysql_real_connect_start/cont` に寄せるか、初手は接続のみ同期で残すかを選ぶ
3. 設計上は接続も non-blocking に揃えるのが一貫するため、最終的には `_start/_cont` 化を目標とする
補足:
- MariaDB 公式ドキュメントでは、`MYSQL_OPT_NONBLOCK` を有効化せずに non-blocking API を使うとクラッシュしうる
- DNS 解決は非同期化されないため、ホスト名利用時は依然として初回接続でブロックしうる
- 接続初期化の最終形は `_start/_cont` へ寄せるが、既存動作を壊さない段階導入を優先する
#### 3. `mariadb_impl.nim` に共通待機ヘルパを追加する
候補ヘルパ:
- `waitMariadb(conn: PMySQL, waitStatus: cint, deadline: MonoTime): Future[cint]`
- `runMariadbOp[T](...)` のような `_start/_cont` 反復ヘルパ
- `readAllRows(...)` のような result drain ヘルパ
待機仕様:
- `waitStatus` の `MYSQL_WAIT_READ/WRITE/EXCEPT` を `AsyncFD` で待つ
- `MYSQL_WAIT_TIMEOUT` が立っているときは `mysql_get_timeout_value_ms()` を優先する
- allographer 側 `timeout` を超えたら `DbError` を返す
- 待機ループは API ごとに重複させず、共通の進行関数へ寄せる
#### 4. クエリ実行は「送信」「結果確定」「結果取得」「行フェッチ」に分ける
`SELECT` 系:
1. `mysql_real_query_start/cont`
2. `mysql_use_result()` または `mysql_store_result_start/cont` のどちらを使うか判断
3. 既存実装との互換を優先するなら、まずは `mysql_use_result()` を維持しつつ `mysql_fetch_row_start/cont` で逐次取得する
4. 行取得後に `mysql_free_result_start/cont` または `mysql_free_result()` で解放する
`INSERT/UPDATE/DELETE` 系:
1. `mysql_real_query_start/cont`
2. `mysql_real_query_start/cont` の完了を実行完了とみなし、結果セットがない経路では追加の `read_query_result` 呼び出しを行わない
3. `mysql_errno()` / `mysql_error()` を確認して `DbError`
補足:
- MariaDB 公式ドキュメントでは、`mysql_use_result()` 自体はブロックしないが、そこからの `mysql_fetch_row_start/cont` は `use_result` 由来なら待機を伴う
- `store_result` を選ぶとフェッチ自体は即時化しやすい一方、結果全件受信を先に待つ必要がある
- 現行の逐次処理に近いのは `use_result + fetch_row_start/cont`
- 実装上の都合で `store_result` を選ぶ場合でも、公開 API の見え方は変えない
- 実装検証では、`mysql_real_query_start/cont` 直後に `mysql_read_query_result_start/cont` を追加すると DML 経路でタイムアウトが発生したため、`exec*` 系は `real_query` 完了をもって終了判定する方針へ更新した
#### 4.1 実装差分メモ(2026-03-23
- `mariadb_rdb.nim` の `MYSQL_OPT_NONBLOCK` は MariaDB ヘッダ定義に合わせて `6000` を明示指定した
- `mariadb_impl.nim` では `waitMariadb` を共通化し、`mysql_real_query_start/cont` と `mysql_fetch_row_start/cont` / `mysql_free_result_start/cont` を統一ループで実行する実装にした
- `mariadb_open.nim` で `mysql_options(conn, MYSQL_OPT_NONBLOCK, nil)` を全接続で有効化した
- `mariadb_types.nim` / `mariadb_exec.nim` で接続プール待機を `waiters` ベースへ置換し、`sleepAsync(10)` ポーリングを撤廃した
- `tests/mariadb/test_pool_wait.nim` を追加し、`tests/mariadb/test_query.nim` / `tests/mariadb/test_transaction.nim` と合わせて回帰確認した
#### 4.2 効率改善差分メモ(2026-03-23
- `mariadb_impl.nim`: `setColumnInfo` を `while true` フェッチループの外に移動し、行ごとに `fetch_field_direct` の FFI 呼び出しと文字列アロケーションが発生する問題を解消した。各行では `baseColumns` のコピーに対して NULL 上書きのみ行う
- `mariadb_impl.nim`: 全 proc から `assert db.ping == 0` を除去した。`mysql_ping` は同期ブロッキングでイベントループを停止するため。接続異常は `real_query_start` のエラーハンドリングで検出する
- `mariadb_impl.nim`: `epochTime()` ベースのデッドライン管理を `std/monotimes` の `MonoTime` + `Duration` に置き換え、NTP 補正による巻き戻りリスクを排除した
- `mariadb_impl.nim`: `MariadbWaitState` を `ref object` から `object`(値型)に変更し、`waitMariadb` 呼び出しあたり 1 回のヒープアロケーションを削減した
- `mariadb_impl.nim`: JSON→string 変換ロジックを `jsonObjValuesToStrSeq` / `jsonFlatToStrSeq` の 2 proc に集約し、4 箇所の重複を解消した
- `mariadb_impl.nim`: `getColumnTypes` の SQL を文字列補間から `?` プレースホルダに変更し、SQL インジェクションリスクを排除した
- `mariadb_exec.nim`: `exec` / `insertId` が DML のたびに `INFORMATION_SCHEMA.COLUMNS` を問い合わせていた問題を、`Connections.columnTypeCache` によるテーブル単位キャッシュで解消した
- `mariadb_types.nim`: `waiters` を `seq[Future[void]]` から `Deque[Future[void]]` に変更し、`wakeOnePoolWaiter` の先頭削除を O(n) → O(1) に改善した
- `mariadb_lib.nim`: `dbFormat` の char-by-char 連結を、`?` 位置間のサブ文字列を一括 `add` する方式に変更した
- SurrealDB: `surreal_impl.nim` に `runSurrealSql` / `awaitWithTimeout` を追加し、`query` / `exec` / `info` の HTTP timeout と JSON error 処理を共通化した
- SurrealDB: `surreal_open.nim` で `/status` と `/sql` の bootstrap を timeout 対応で実行し、namespace/database 定義を初回接続へ集約した
- SurrealDB: `surreal_lib.nim` の `numToAlphabet` / `questionToDaller` / `dbFormat(JsonNode)` を単一バッファ志向へ整理した
- SurrealDB: `surreal_exec.nim` の `getAllRows` は `rows.getElems()` を使い、`toSeq()` の追加走査を避けた
#### 5. 接続プール待機は通知ベースへ置換する
`mariadb_types.nim`:
- `Connections.waiters*: seq[Future[void]]` を追加する
`mariadb_exec.nim`:
- `getFreeConn` は waiter を積んで `withTimeout` で待つ
- `returnConn` は接続返却後に 1 件だけ waiter を起こす
- PostgreSQL 実装と同じ責務分割に揃える
- waiters の起床順やキャンセル時の取り扱いは、既存 PostgreSQL 実装の方針に合わせて整理する
#### 6. 段階導入する
第1段階:
- ヘッダ宣言追加
- ブランチルール・設計書追加
第2段階:
- プール待機の通知化
- `exec*` 系の non-blocking 化
第3段階:
- `query*` / `rawQuery*` / `getColumns*` / `insertId` の非同期 result drain 実装
- テスト拡充
- 段階ごとに実装差分が出たら本ファイルへ追記し、ブランチ内の唯一の設計記録にする
### 受け入れ基準
1. MariaDB driver で `sleepAsync(10)` によるプール待機がなくなっている
2. `mariadb_impl.nim` のクエリ待機が `mysql_real_query_start/cont` などの non-blocking API を利用している
3. 同一接続上で未完了 non-blocking 操作を残したまま次の操作を始めない
4. 既存 CRUD / transaction / schema テストが回帰しない
5. 公開 API 変更なしで実装差分が driver 内に閉じ込められている
### 参照仕様
- MariaDB Documentation: Non-Blocking API Reference
https://mariadb.com/docs/server/reference/product-development/mariadb-internals/using-mariadb-with-your-programs-api/non-blocking-client-library/non-blocking-api-reference
- MariaDB Documentation: Using the Non-Blocking Library
https://mariadb.com/docs/server/reference/product-development/mariadb-internals/using-mariadb-with-your-programs-api/non-blocking-client-library/using-the-non-blocking-library
- `/usr/include/mariadb/mysql.h`
確認済み項目:
- `MYSQL_OPT_NONBLOCK`
- `MYSQL_WAIT_READ`, `MYSQL_WAIT_WRITE`, `MYSQL_WAIT_EXCEPT`, `MYSQL_WAIT_TIMEOUT`
- `mysql_options`, `mysql_optionsv`
- `mysql_get_socket`
- `mysql_get_timeout_value`, `mysql_get_timeout_value_ms`
- `mysql_real_connect_start/cont`
- `mysql_real_query_start/cont`
- `mysql_store_result_start/cont`
- `mysql_read_query_result_start/cont`
- `mysql_fetch_row_start/cont`
- `mysql_free_result_start/cont`
### リスク
1. `mysql_use_result()` は結果を最後まで読み切る前に次操作へ進めないため、clean up 漏れがあると接続を壊しやすい
2. MariaDB non-blocking API は `_cont()` を最後まで呼び切る必要があり、途中中断設計を誤ると不整合が出る
3. DNS 解決はブロックしうるので、接続初期化だけは期待したほど改善しない可能性がある
4. MySQL driver と共通化したくなっても、まずは MariaDB driver 内に閉じ込めてから判断すべき
5. 設計記録を別ファイルに残さないことで、進捗と方針の乖離を抑える
### 段階導入案
1. 設計書とブランチルールを追加
2. `mariadb_rdb.nim` に宣言追加
3. プール待機通知化
4. `exec*` 系を non-blocking 化
5. `query*` / `rawQuery*` / `getColumns*` を non-blocking 化
6. 必要なら `mysql_real_connect_start/cont` を導入
### 完了条件
1. MariaDB driver の内部待機が Connector/C non-blocking API ベースになっている
2. プール空き待機が通知ベースである
3. 既存公開 API を壊していない
4. MariaDB の主要テストが通る
@@ -0,0 +1,174 @@
---
description: 323-database-url-for-connectionブランチでの開発時に読み込む
alwaysApply: false
---
dbOpen Database URL 対応 ブランチルール
===
このブランチで実装することは以下の通りです。
- `dbOpen` に database URL を使って接続できる新しいオーバーロードを追加し、既存の引数シグネチャは後方互換のため残す。
- SQLite / MySQL / MariaDB / PostgreSQL は一般的な database URL 仕様に従い、scheme・認証情報・host・port・database path・query を解釈できる設計に整える。
- URL 解析責務を各 driver の `dbOpen` 実装にベタ書きせず、共通化できる層へ寄せて公開 API を汚さない。
- 既存の URL 文字列 1 引数版 `dbOpen` と、新しく追加する引数デザインの役割分担を明確にし、曖昧なオーバーロード解決を避ける。
- 既存テスト・example・README・`documents/rdb/query_builder.md` を、最終仕様と齟齬がない状態へ同期する。
## 進捗
- [x] `.cursor/rules/project.mdc` と `.cursor/rules/branch.mdc` を確認した
- [x] 現在のブランチ名に対応するブランチルールファイルが未作成であることを確認した
- [x] 既存 `dbOpen` 実装が SQLite / MySQL / MariaDB / PostgreSQL / SurrealDB でどう分かれているか確認した
- [x] MySQL / MariaDB / PostgreSQL にはすでに URL 文字列 1 引数版 `dbOpen` があり、SQLite には未整備であることを確認した
- [x] 既存 URL 実装が `split` ベースの簡易パーサであり、一般的な URL 仕様を十分に扱えていないことを確認した
- [x] 今回のブランチでは SurrealDB を対象外とする方針を反映した
- [x] ブランチルールに改修方針・進捗粒度・参考資料を整理した
- [x] 一般的な database URL 仕様として採用する範囲を整理する
- [x] 新しい `dbOpen` オーバーロードの引数デザインを確定する
- [x] URL 解析の共通 helper / 型配置を決め、driver 差分の閉じ込め方を整理する
- [x] SQLite の URL 受け口を追加し、ファイルパス指定との意味論を衝突させない
- [x] MySQL / MariaDB / PostgreSQL の URL 解析を一般仕様に合わせて強化する
- [x] 正常系・異常系・後方互換のテストを driver ごとに追加または更新する
- [x] example / README / documents を同期する
- [x] 実装途中で設計認識に誤りが見つかった場合は、本ファイルの `調査結果・設計まとめ` を更新する
## 参考資料
- `src/allographer/connection.nim`
- `src/allographer/query_builder/models/sqlite/sqlite_open.nim`
- `src/allographer/query_builder/models/mysql/mysql_open.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_open.nim`
- `src/allographer/query_builder/models/postgres/postgres_open.nim`
- `src/allographer/query_builder/models/surreal/surreal_open.nim`
- `tests/mysql/test_open.nim`
- `tests/mariadb/test_open.nim`
- `tests/postgres/test_open.nim`
- `tests/sqlite/connections.nim`
- `tests/postgres/connections.nim`
- `tests/mysql/connections.nim`
- `tests/mariadb/connections.nim`
- `example/connections.nim`
- `README.md`
- `documents/rdb/query_builder.md`
- RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- PostgreSQL Documentation: Connection URIs
- MySQL / MariaDB ecosystem documentation for connection URI / DSN conventions
## 調査結果・設計まとめ
### 背景
現状の `dbOpen` は、RDB 系では「分解済みの接続情報を個別引数で渡す形」が基本で、一部 driver にだけ URL 文字列 1 引数版が追加されている。
ただし既存の URL 版は `split` を重ねた簡易実装で、一般的な URL で登場する予約文字・query・省略可能項目・scheme 差異に弱い。API としては URL 対応を名乗りつつ、仕様が狭く不均一な状態である。
今回の目的は、既存 API を壊さずに、database URL を正式な接続入力として扱える `dbOpen` オーバーロード群を整備し、RDB driver 間の設計を揃えることである。SurrealDB は今回の対象外とする。
### 現状の問題
1. SQLite はファイルパス引数のみで、URL ベース接続の入口がない
2. MySQL / MariaDB / PostgreSQL の URL 版は実装されているが、一般的な URL 仕様を十分に扱えない
3. driver ごとに URL の扱いがバラバラで、共通 API として学習コストが高い
4. 既存の URL 文字列 1 引数版と、新たな「database url を使う関数」の住み分けを設計しないと、将来の拡張で曖昧さが増える
### 設計目標
1. 既存 `dbOpen` シグネチャを残しつつ、新しいオーバーロードで URL ベース接続を自然に表現できる
2. SQLite / MySQL / MariaDB / PostgreSQL は一般的な URI 記法を優先する
3. URL 解析と driver ごとの接続情報変換を責務分離し、公開 API へ場当たり的分岐を持ち込まない
4. 後方互換・テスト・文書更新まで含めて、利用者が迷わない状態を作る
### 非目標
1. 既存の個別引数版 `dbOpen` を削除または非推奨化すること
2. 接続 URL と無関係な query builder / schema builder API を同時に変更すること
3. SurrealDB の接続モデルや URL 設計をこのブランチで見直すこと
4. このブランチで ORM 的な接続設定 abstraction を全面導入すること
### API 方針
#### 1. 新しいオーバーロードは「URL であることが呼び出し側から明確に分かる」形を優先する
候補:
1. `dbOpen(MySQL, url = "...", maxConnections = ..., timeout = ...)`
2. `dbOpen(MySQL, databaseUrl = "...", maxConnections = ..., timeout = ...)`
3. URL 専用の薄い型を導入して `dbOpen(MySQL, DatabaseUrl("..."), ...)`
採用した設計:
- URL 専用の薄い型 `DatabaseUrl` を導入し、`dbOpen(driver, databaseUrl = asDatabaseUrl("..."), ...)` で呼べるようにした
- 既存の `dbOpen(driver, url: string, ...)` は後方互換のため残し、内部では共通 parser に委譲する
- SQLite の既存 `dbOpen(SQLite3, path: string, ...)` はそのまま維持し、URL 文字列が渡された場合のみ URL ルートへ寄せる
理由:
- SQLite では単なる `string` がファイルパスと URL の両方になり得る
- `DatabaseUrl` に分けることで、既存の string overload と overload 解決が衝突しない
- 将来の拡張でも、URL 専用の入口を安全に追加しやすい
#### 2. RDB の URL 仕様は一般的な形式を優先する
最低限そろえる対象:
1. `sqlite:///absolute/path/to/db.sqlite3`
2. `sqlite://relative/path.db` またはこの扱いを不採用とするなら明文化する
3. `mysql://user:pass@host:3306/database`
4. `mariadb://user:pass@host:3306/database`
5. `postgresql://user:pass@host:5432/database`
設計メモ:
- `postgres://...` は `postgresql://...` の alias として受ける
- percent-encoding の decode 要否を明確にする
- query parameter は現段階で未使用でも、少なくとも破壊的に誤解釈しない方針を取る
- database 名や password に `:` `/` `@` が含まれるケースを、単純 `split` で壊さない
### 実装方針
#### 1. URL 解析は共通 helper 化を優先する
方針:
- `scheme`, `user`, `password`, `host`, `port`, `path`, `query` を扱える共通 parser を用意する
- URL 専用の `DatabaseUrl` を導入し、driver ごとの差分は「解析結果からどう接続情報へ落とすか」に限定する
- 既存 driver ファイルの `split` ベース処理は置き換え対象とする
#### 2. SQLite は URL とファイルパスの意味論を分ける
要点:
- 既存 `dbOpen(SQLite3, "/path/to/file.db")` はそのまま維持する
- URL 版は `asDatabaseUrl(...)` で「これは URL」と明示できる形を優先する
- `:memory:` や相対パスとの整合を壊さない
#### 3. 既存 URL 1 引数版は互換維持しつつ内部実装を新 parser に寄せる
要点:
- MySQL / MariaDB / PostgreSQL の既存テストは維持する
- 既存の `ValueError` / `DbError` の期待が妥当なら保つ
- 公開 API は残しつつ、仕様の狭さだけを改善する
#### 4. テストは「構文解析」と「実接続」を分けて考える
候補:
1. URL から接続情報へ正しく分解されることを確認する軽量テスト
2. 既存の integration 系 `dbOpen(...).isConnected()` テスト
3. 不正 scheme・不足情報・不正 port・予約文字を含む入力の異常系テスト
4. SQLite の URL 指定とファイルパス指定の後方互換テスト
5. SurrealDB の namespace / database 解決規則テスト
### 受け入れ基準
1. 既存の `dbOpen` 呼び出しを壊さずに、新しい URL ベースのオーバーロードを追加できている
2. SQLite / MySQL / MariaDB / PostgreSQL の URL 設計が一般的な仕様と整合している
3. SurrealDB の URL 設計が独自要件を満たしつつ、他 driver と読後感が大きく乖離していない
4. 既存の簡易 `split` 実装を置き換え、予約文字や query を誤解釈しにくい構造になっている
5. driver ごとの正常系・異常系・後方互換テストが追加または更新されている
6. example / README / documents / ブランチルールが最終仕様と一致している
### リスク
1. Nim 標準ライブラリだけで URL 解析を行う場合、RFC 3986 の細部を十分に扱えない可能性がある
2. SQLite の URL 仕様を曖昧にすると、既存のファイルパス API と混同されやすい
3. SurrealDB の namespace / database の載せ方を誤ると、RDB に寄せたつもりで逆に分かりにくくなる
4. 既存の `dbOpen(driver, urlString)` と新オーバーロードが衝突すると、Nim の overload 解決で利用者体験が悪化する
5. 文字列解析だけでなく実接続テストも必要なため、driver 横断で確認コストが上がる
### 段階導入案
1. 採用する URL 仕様と新オーバーロードの表面 API を確定する
2. 共通 URL parser / 接続情報変換レイヤを用意する
3. MySQL / MariaDB / PostgreSQL の既存 URL 実装を載せ替える
4. SQLite の URL 入口を追加する
5. テストを整備して後方互換と異常系を固める
6. example / README / documents を同期する
@@ -0,0 +1,167 @@
---
description: 333-prepared-statementブランチでの開発時に読み込む
alwaysApply: false
---
333-prepared-statement ブランチでの高速化内容
===
このブランチで実装することは以下の通りです。
- prepared statement を、高頻度な同一 SQL 実行で通常経路より速くなるように改善する
- とくに PostgreSQL で、prepare/deallocate の無駄と接続拡散を減らす
- benchmark が prepared statement の warm 状態を正しく測れるようにする
## 進捗
- [x] `example/benchmark.nim` の PostgreSQL 計測で prepared update が遅く見える理由を調査した
- [x] prepared statement 高速化の設計方針を整理した
- [ ] PostgreSQL にプール単位の prepared statement cache を追加する
- [ ] `close()` を論理 close 化し、物理破棄は別 API に分離する
- [ ] 接続固定で prepared statement を連続実行できる API を追加する
- [ ] `example/benchmark.nim` を cold/warm 計測に分離し、warm 経路で同一 statement を再利用する
- [ ] prepared cache と接続固定 API のテストを追加する
## 参考資料
- PostgreSQL libpq prepared statements: https://www.postgresql.jp/document/12/html/libpq-exec.html
- `PQsendPrepare`
- `PQsendQueryPrepared`
- `DEALLOCATE`
- PostgreSQL 非同期 libpq: https://www.postgresql.jp/document/12/html/libpq-async.html
- 対象実装
- `src/allographer/query_builder/models/postgres/postgres_exec.nim`
- `src/allographer/query_builder/models/postgres/postgres_types.nim`
- `src/allographer/query_builder/libs/postgres/postgres_impl.nim`
- `example/benchmark.nim`
## 調査結果・設計まとめ
### 現状の問題
PostgreSQL で prepared statement が遅く見える主因は、prepared statement 自体の性質ではなく、現在の実装と benchmark の計測条件にある。
- `benchmark.nim` は計測のたびに `prepare` と `close` を行っており、steady-state の再利用性能ではなくライフサイクル全体を測っている
- PostgreSQL 実装は prepared statement をコネクションごとに lazy prepare するため、プールが大きいと `PREPARE` が広く拡散する
- `first()` と `exec()` が毎回 `getFreeConn()` するため、1 つの業務操作でも接続が変わり、prepared state の局所性が弱い
- 通常経路も `PQsendQueryParams` による bind 実行なので、prepared の利得は parse/plan 再利用ぶんに限られる
### 高速化の基本方針
prepared statement を速くするには、単発 API を追加するだけでは足りない。以下をまとめて入れる必要がある。
- prepare/deallocate の回数を減らす
- 同じ logical operation を同じ接続に寄せる
- warm 済み prepared state をプール内で継続利用する
### 設計方針 1: プール単位の prepared cache
`PreparedStatement` ハンドルごとに物理 state を持つのではなく、`Connections` が SQL ごとの prepared state を保持する。
概念設計:
```nim
type PostgresPreparedEntry = ref object
sql*: string
nArgs*: int
stmtBaseName*: string
stmtNames*: seq[string] ## connI ごとの物理 prepared 名
refCount*: int
lastUsedAt*: int64
type Connections* = ref object
conns*: seq[Connection]
timeout*: int
waiters*: Deque[Future[void]]
columnTypeCache*: Table[string, seq[Row]]
preparedCache*: Table[string, PostgresPreparedEntry]
```
期待効果:
- 同じ SQL に対する `prepare()` の重複を避けられる
- 同一プール内では physical prepare を接続ごとに 1 回へ寄せられる
- 短命な prepared handle を繰り返し作っても warm state を失いにくくなる
### 設計方針 2: `close()` の論理 close 化
現在の `close()` は、その handle が使った接続すべてに `DEALLOCATE` を送る。高速化の観点ではこれは不利なので、意味論を分ける。
- `close()`: handle の参照を閉じるだけ
- `clearPreparedCache()` または `flushPrepared(sql)`: 物理 `DEALLOCATE`
- 接続 close 時: その接続に紐づく prepared state を一括破棄
期待効果:
- 利用者が毎回 `prepare` / `close` しても、プール側は hot SQL を保持できる
- benchmark の warm 計測でも、毎回の物理破棄コストを避けられる
### 設計方針 3: 接続固定 API の追加
prepared statement の locality を高めるため、同じ接続上で複数回の prepared 実行を束ねる API を追加する。
候補 API:
```nim
proc withPreparedConnection*(
self: PostgresConnections,
body: proc (ctx: PostgresPreparedContext): Future[void]
): Future[void]
```
```nim
type PostgresPreparedContext* = ref object
owner*: PostgresConnections
connI*: int
```
prepared statement 側には `ctx` 付き overload を足す。
```nim
proc first*(self: PostgresPreparedStatement, ctx: PostgresPreparedContext, args: seq[string]): Future[Option[JsonNode]]
proc exec*(self: PostgresPreparedStatement, ctx: PostgresPreparedContext, args: seq[string]): Future[void]
```
期待効果:
- `SELECT` と `UPDATE` が別接続に飛ぶのを防げる
- lazy prepare の発生先が必要な接続に限定される
- transaction 中の `transactionConn` と整合しやすい
### benchmark の変更方針
`example/benchmark.nim` は prepared statement の高速化効果を正しく測れるように変更する。
- `selectStmt` / `updateStmt` を `timeProcess` の外で 1 回だけ作る
- 繰り返し計測では同じ prepared statement を再利用する
- `close()` は全計測の最後に 1 回だけ呼ぶ
- benchmark 名を `cold` と `warm` に分ける
- warm 計測では `withPreparedConnection` を使って接続固定経路を測る
### 実装順序
#### Phase 1
- `Connections.preparedCache` を追加する
- `prepare()` を cache lookup ベースに変更する
- `close()` を論理 close 化する
- `clearPreparedCache()` を追加する
#### Phase 2
- `PostgresPreparedContext` を追加する
- `withPreparedConnection` を追加する
- prepared `get/first/exec` に `ctx` overload を追加する
- `benchmark.nim` を warm/cold 計測へ更新する
#### Phase 3
- `preparedCacheMaxEntries` を追加する
- `refCount == 0` の entry を対象に LRU eviction を入れる
- eviction 時に `DEALLOCATE` を発行する
### テスト方針
- 同じ SQL を複数回 `prepare()` しても、同一接続で physical prepare が 1 回に収まること
- `close()` 後に再 `prepare()` しても、cache が残る設計なら physical prepare が増えないこと
- `withPreparedConnection` の block 内で同じ `connI` が使われること
- transaction 中は `transactionConn` が優先されること
- cache eviction 時に `DEALLOCATE` が正しく走ること
@@ -0,0 +1,206 @@
---
description: 336-update-prepared-statementブランチでの開発時に読み込む
alwaysApply: false
---
336-update-prepared-statement ブランチでの prepared statement 横展開
===
このブランチで実装することは以下の通りです。
- 既存の SQLite / PostgreSQL / MySQL / MariaDB の prepared statement API を参照しつつ、SurrealDB 向け prepared statement API を追加する
- SurrealDB v3 の `/sql` API と SurrealQL の `LET` / parameter 仕様を前提に、server-side prepare ではなく client-side template reuse と 1 リクエスト多文実行で prepared statement 的な使い勝手を実現する
- SurrealDB 固有事情は `models/surreal` と `libs/surreal` に閉じ込め、公開 API は既存 driver と可能な限り揃える
- このターンでは実装は行わず、調査結果と実装方針の設計書を固める
## 進捗
- [x] `.cursor/rules/project.mdc` / `.cursor/rules/branch.mdc` / `.cursor/rules/branch/336-update-prepared-statement.mdc` を確認した
- [x] 既存 prepared statement API の到達点を SQLite / PostgreSQL / MariaDB / MySQL で確認した
- [x] 現在の SurrealDB 実装と `/sql` 利用箇所を確認した
- [x] SurrealDB v3 公式ドキュメントで parameter / HTTP `/sql` / transaction の仕様を確認した
- [x] SurrealDB prepared statement の設計と利用例を `documents/surrealdb/prepared_statement.md` に整理した
- [x] `models/surreal` に prepared statement 用の型と公開 API を追加した
- [x] `libs/surreal` に multi-statement 実行向けの共通処理を追加した
- [x] SurrealDB prepared statement のテストを追加した
- [x] `documents/surrealdb/query_builder.md` / `documents/rdb/query_builder.md` を更新した
## 参考資料
- 既存 prepared statement API
- `src/allographer/query_builder/models/sqlite/sqlite_types.nim`
- `src/allographer/query_builder/models/sqlite/sqlite_exec.nim`
- `src/allographer/query_builder/models/postgres/postgres_types.nim`
- `src/allographer/query_builder/models/postgres/postgres_exec.nim`
- `src/allographer/query_builder/models/mysql/mysql_exec.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_exec.nim`
- 現在の SurrealDB 実装
- `src/allographer/query_builder/models/surreal/surreal_types.nim`
- `src/allographer/query_builder/models/surreal/surreal_exec.nim`
- `src/allographer/query_builder/models/surreal/surreal_open.nim`
- `src/allographer/query_builder/libs/surreal/surreal_impl.nim`
- `src/allographer/query_builder/libs/surreal/surreal_lib.nim`
- `src/allographer/schema_builder/queries/surreal/schema_utils.nim`
- 既存ドキュメント
- `documents/surrealdb/query_builder.md`
- `documents/surrealdb/schema_builder.md`
- SurrealDB v3 公式ドキュメント
- Parameters: https://surrealdb.com/docs/surrealql/parameters
- HTTP Protocol (`POST /sql`): https://surrealdb.com/docs/surrealdb/integration/http
- Transactions: https://surrealdb.com/docs/surrealql/transactions
- Security summary (parameterized query): https://surrealdb.com/docs/surrealdb/security/summary
## 調査結果・設計まとめ
### 1. 前提整理
SurrealDB v3 には PostgreSQL や MySQL のような server-side prepared statement を、そのまま同じ意味で `/sql` HTTP 経由に載せる公開 API は見当たらない。一方で、以下は公式仕様として確認できる。
- `/sql` は 1 回の POST で複数の SurrealQL 文を `;` 区切りで送れる
- parameter は `LET $x = ...;` で定義して後続文から参照できる
- SurrealDB 3.x では `$x = ...` だけの旧記法は deprecated で、`LET` を使う必要がある
- statement はデフォルトで文ごとに transaction 境界を持つ。複数文を原子的に扱いたい場合は `BEGIN TRANSACTION; ...; COMMIT TRANSACTION;` が必要
したがって、このブランチでの `prepare()` は「DB が statement を事前コンパイルして保持する API」ではなく、「SQL template の正規化・再利用・安全な値埋め込み・単一 request 化を行う client-side prepared statement」として設計する。
### 2. 公開 API 方針
利用者体験は既存 driver に寄せる。第一候補は次の API である。
```nim
let stmt = surreal.prepare("SELECT * FROM user WHERE id = ?")
let rows = await stmt.get(@["user:alice"])
let row = await stmt.first(%*[1])
await stmt.exec(@["value"])
await stmt.close()
await surreal.clearStmtCache()
await surreal.withConn(proc(ctx: SurrealPreparedContext): Future[void] {.async.} =
discard await stmt.first(ctx, @["user:alice"])
)
```
採用方針:
- `prepare`
- `get`
- `first`
- `exec`
- `close`
- `flushStmt`
- `clearStmtCache`
- `withConn`
- `SurrealPreparedContext`
初期スコープでは `getPlain` / `firstPlain` は後回し候補とする。SurrealDB の戻り値は object 中心で列定義が RDB より弱く、列順の意味が薄いため、まずは既存の `JsonNode` 中心 API を優先する。
### 3. 実装モデル
prepared statement 実行時は、毎回次の 3 段階で 1 リクエストを組み立てる。
1. 元 SQL の `?` を `$a`, `$b`, ... に変換する
2. 各引数を `LET $a = ...; LET $b = ...;` に変換する
3. `LET` 群と本体 SQL を `;` で連結して `/sql` に 1 回だけ POST する
概念的には次の形になる。
```sql
LET $a = "user:alice";
LET $b = <datetime>"2026-04-03T00:00:00Z";
SELECT * FROM user WHERE id = $a AND created_at >= $b;
```
この方式なら、すでに `surreal_lib.nim` にある `questionToDaller` と `dbFormat(queryString, args: JsonNode)` の思想をそのまま再利用できる。prepared statement 専用に別の埋め込み規則を増やす必要はない。
### 4. 型設計
既存 driver に合わせ、プール単位 cache を持つ。
```nim
type SurrealPreparedEntry = ref object
sql*: string
normalizedSql*: string
nArgs*: int
refCount*: int
lastUsedAt*: int64
type Connections* = ref object
conns*: seq[Connection]
timeout*: int
waiters*: Deque[Future[void]]
preparedCache*: Table[string, SurrealPreparedEntry]
type SurrealPreparedContext* = ref object
owner*: SurrealConnections
connI*: int
type SurrealPreparedStatement* = ref object
owner*: SurrealConnections
entry*: SurrealPreparedEntry
sql*: string
isClosed*: bool
```
ポイント:
- Surreal は HTTP `/sql` なので physical statement handle は持たない
- cache の目的は server resource 再利用ではなく、template 正規化と API 一貫性の維持
- `close()` は logical close とし、cache entry 自体は `flushStmt` / `clearStmtCache` まで残す
### 5. 実行結果の扱い
`/sql` の戻り値は statement ごとの配列なので、prepared statement では「最後の本体 SQL の結果」を利用者へ返す。
- `get`: 最終 statement の `result` を `seq[JsonNode]` で返す
- `first`: `get` の先頭 1 件を `Option[JsonNode]` で返す
- `exec`: 最終 statement の status を確認し、副作用系として扱う
- `LET` statement の result は利用者に見せない
ただし error 判定は最後の statement だけでなく全 statement を走査する。`LET` で失敗した場合でも早期に `DbError` を返す必要がある。
### 6. `withConn` を残す理由
HTTP `/sql` だけを見ると、prepared statement は connection 固定が必須ではない。しかし API 統一のため、`withConn` は残す価値がある。
- 既存 driver と同じ呼び出しパターンを維持できる
- SurrealDB の parameter は connection/session scope を持ちうるため、将来 RPC 対応や session 前提最適化へ進む余地を残せる
- 現行の connection pool 制御と整合する
ただし初期実装では、`withConn` の主目的は性能よりも API 一貫性になる。
### 7. multi-statement 利用の境界
このブランチで使う multi-statement は「`LET` 群 + 本体 SQL」を 1 リクエストに束ねる用途を主眼とする。
- `prepare("UPDATE ...")` は 1 つの本体 statement を持つ
- `LET` は前置 statement
- 複数の業務 statement を 1 個の prepared statement に詰め込む設計は初期スコープ外
理由:
- 既存 prepared statement API も基本は 1 SQL を対象にしている
- SurrealDB では複数 statement が自動で 1 transaction にはならない
- 2 個以上の副作用文を 1 本の prepared statement に許すと、`exec()` の返り値・失敗時意味論・テストが急に複雑になる
もし将来 multi-statement business query を扱うなら、別 API として `prepareBatch` あるいは transaction helper を検討する。
### 8. 実装結果
- `surreal_types.nim` に prepared 関連型を追加し、`Connections` に `preparedCache` を持たせた
- `surreal_lib.nim` に prepared SQL 生成の共通関数を追加した
- `surreal_exec.nim` に `prepare` / `get` / `first` / `exec` / `close` / `flushStmt` / `clearStmtCache` / `withConn` を追加した
- `tests/surrealdb/test_prepared_statement.nim` を追加した
- `documents/surrealdb/prepared_statement.md` と既存ドキュメントを同期した
### 9. テスト方針
- `prepare("SELECT ... WHERE id = ?")` で `get` / `first` が通ること
- `prepare("UPDATE ... SET name = ? WHERE id = ?")` で `exec` が通ること
- `close()` 後に同じ SQL を `prepare()` し直しても再利用できること
- `clearStmtCache()` 後に再度 `prepare()` できること
- `withConn` 内の `ctx` overload が通ること
- `JsonNode` 引数で `JInt` / `JString` / `JNull` / `JArray` / `JObject` が `LET` 経由で正しく扱えること
- record id や datetime 文字列の変換が既存 `dbFormat` 規則と一致すること
### 10. 現時点の結論
SurrealDB v3 版 prepared statement は「server-side prepare の移植」ではなく、「既存 prepared statement API と揃った公開インターフェースを、SurrealDB の `LET` と `/sql` multi-statement で安全に再現する」方針が最も自然である。
この方針なら `SYW-ARCH-001` に従って公開 API を共通化しつつ、SurrealDB 固有差分は `libs/surreal` と `models/surreal` に閉じ込められる。
@@ -0,0 +1,271 @@
---
description: 340-aged-connectionブランチでの開発時に読み込む
alwaysApply: false
---
340-aged-connection コネクションプール改善調査
===
このブランチで実装することは以下の通りです。
- 既存の SQLite / PostgreSQL / MySQL / MariaDB のコネクションプール実装を調査し、長寿命化した接続や壊れた接続を再利用し続けるリスクを洗い出す
- https://please-sleep.cou929.nu/go-sql-db-connection-pool.html の `sql.DB` の考え方を参考に、allographer のプールへ取り込める改善点を整理する
- 「使えないコネクションは破棄してから張り直す」方針を、公開 API を壊さず driver 内へ閉じ込めて実装できる設計に落とし込む
- prepared statement cache / columnTypeCache / transaction 中の接続固定など、再接続時に影響する内部状態の整合条件を明確化する
- 調査結果を踏まえて、各 driver の pool slot を差し替える実装へ進める
## 進捗
- [x] `.cursor/rules/project.mdc` / `.cursor/rules/branch.mdc` を確認した
- [x] 現在のブランチ名 `340-aged-connection` に対応するブランチルールを新規作成した
- [x] `src/allographer/query_builder/models/*/*_open.nim` を確認し、各 driver の接続生成方式を調査した
- [x] `src/allographer/query_builder/models/*/*_exec.nim` を確認し、接続取得・返却・待機方式を調査した
- [x] `src/allographer/query_builder/libs/*/*_impl.nim` を確認し、接続異常時の現在の振る舞いを調査した
- [x] 参考記事の `sql.DB` の設計要点を読み、allographer へ適用できる論点を整理した
- [x] 各 driver 共通で使える `ConnectionHealth` / `ConnectionFactory` 相当の内部構造を設計し、`Connections` に lifetime / factory 情報を持たせた
- [x] 接続借用時の寿命判定・再生成手順を driver ごとに実装した
- [x] prepared statement cache の slot 単位無効化を実装し、transaction 中は既存の固定接続をそのまま使う方針を維持した
- [x] 影響範囲に応じた回帰テストを追加した
## 参考資料
- 参考記事
- https://please-sleep.cou929.nu/go-sql-db-connection-pool.html
- 現在の接続初期化
- `src/allographer/query_builder/models/postgres/postgres_open.nim`
- `src/allographer/query_builder/models/sqlite/sqlite_open.nim`
- `src/allographer/query_builder/models/mysql/mysql_open.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_open.nim`
- 現在の接続プール管理
- `src/allographer/query_builder/models/postgres/postgres_exec.nim`
- `src/allographer/query_builder/models/sqlite/sqlite_exec.nim`
- `src/allographer/query_builder/models/mysql/mysql_exec.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_exec.nim`
- 現在の型定義
- `src/allographer/query_builder/models/postgres/postgres_types.nim`
- `src/allographer/query_builder/models/sqlite/sqlite_types.nim`
- `src/allographer/query_builder/models/mysql/mysql_types.nim`
- `src/allographer/query_builder/models/mariadb/mariadb_types.nim`
- 接続利用時の低レベル実装
- `src/allographer/query_builder/libs/postgres/postgres_impl.nim`
- `src/allographer/query_builder/libs/sqlite/sqlite_impl.nim`
- `src/allographer/query_builder/libs/mysql/mysql_impl.nim`
- `src/allographer/query_builder/libs/mariadb/mariadb_impl.nim`
## 調査結果・設計まとめ
### 1. 現在の実装で見えたこと
allographer のプールは、全 driver とも `dbOpen` 時に `maxConnections` 本を先に開いて配列へ保持する方式になっている。
- PostgreSQL: `postgres_open.nim` で全接続を eager に生成し、`createdAt` を持つが、寿命判定にはまだ使っていない
- SQLite: `sqlite_open.nim` でも同様に eager open で、`createdAt` は保持しているが再接続用途には未使用
- MySQL: `mysql_open.nim` で eager open。`ConnectionInfo` はあるため再接続情報は保持しやすい
- MariaDB: `mariadb_open.nim` も eager open。`ConnectionInfo` はある
接続取得は、PostgreSQL / SQLite / MariaDB は waiter キューで通知ベース、MySQL はまだ `sleepAsync(10)` ポーリングで待っている。
一方で、どの driver でも「借り出す前にその接続が寿命切れか」「壊れていないか」を判定して、不要なら捨てて張り直す仕組みはまだない。
### 2. 参考記事から取り込める設計要点
参考記事の `sql.DB` で特に重要だった論点は次の 5 点。
1. idle 接続と利用中接続を分けて扱う
2. 接続取得時に idle 接続を再利用し、必要なら新規接続する
3. 待ち行列を持ち、上限到達時は空き通知で待つ
4. `SetConnMaxLifetime` / `SetConnMaxIdleTime` 相当で、古い接続を使い回しすぎない
5. 使えない接続は `ErrBadConn` 相当として捨て、再試行できるようにする
allographer は 1. と 3. は一部できているが、4. と 5. が弱い。今回のブランチの主眼はここに置くのが自然。
### 3. 今のプールで改善余地が大きい箇所
#### 3.1 aged connection を判定する仕組みがない
各 driver の `Connection` には `createdAt` があるが、現在は接続寿命の上限判定に使っていない。
そのため、
- DB サーバ側 `wait_timeout`
- TCP 切断
- 長時間放置された idle 接続
- LB / proxy 配下でのコネクション寿命超過
といった要因で「見た目はプール内にあるが、実際にはもう使えない接続」を抱え続ける可能性がある。
特に MySQL は `mysql_impl.nim` の各所で `assert conn.ping == 0` を前提にしており、壊れた接続に対して graceful に「捨てて張り直す」制御へ入る前に異常化しやすい。
#### 3.2 bad connection を pool slot 単位で交換できない
現状は `self.pools.conns[i].conn` をそのまま実行系へ渡しており、途中で「この接続は再利用不可」と判断しても、その slot の中身を閉じて新しい接続に差し替える共通処理がない。
必要なのは次のような流れである。
1. 接続借用前に寿命・健全性を判定する
2. 異常ならその slot の接続を close する
3. 同じ slot に新しい接続を張り直す
4. その slot にぶら下がる prepared statement 状態を無効化する
5. その後でクエリ本体へ進む
今は 2. から 4. の共通導線が存在しない。
#### 3.3 reconnect に必要な情報が driver ごとに不揃い
MySQL / MariaDB は `ConnectionInfo` を持つが、PostgreSQL / SQLite の `Connections` には再接続用の接続情報が保存されていない。
したがって共通の「壊れた slot を再接続する」設計を入れるには、少なくとも内部的には各 driver の `Connections` に factory 情報を保持させる必要がある。
例:
- PostgreSQL: database / user / password / host / port / non-blocking 設定
- SQLite: database path
- MySQL / MariaDB: 既存 `ConnectionInfo` を `Connections` から参照できる形へ統一
#### 3.4 prepared statement cache が再接続で壊れうる
PostgreSQL / MySQL / MariaDB / SQLite は SQL 単位 cache を持ちつつ、物理 statement handle は conn index ごとに保持している。
このため slot `i` の接続を捨てて張り直すなら、少なくとも slot `i` に紐づく prepared 情報はクリアしないといけない。
- PostgreSQL: `stmtNames[i]` を空に戻す必要がある
- MySQL / MariaDB: `stmts[i]` を close して nil に戻す必要がある
- SQLite: `stmts[i]` を finalize して nil に戻す必要がある
再接続だけして cache を残すと、「古い接続に prepare されたハンドルを新しい接続で再利用しようとする」不整合になる。
#### 3.5 transaction 中は自動再接続の扱いを厳格に分ける必要がある
通常クエリでは bad connection を破棄して retry できる余地があるが、transaction 中は話が変わる。
- `BEGIN` 後の接続が死んだら、その transaction 文脈は失われる
- 同じ API 呼び出しを別接続へ載せ替えても、意味上は同じ transaction ではない
したがって transaction 中は、
- 自動再接続して継続してよい場面
- 明示的に `DbError` を返して transaction abort を促す場面
を分ける必要がある。初期方針としては「transaction 中は bad connection を検知したら再接続はしても自動リトライしない」が安全。
### 4. このブランチで採るべき基本方針
#### 方針A: pool slot を生かし、接続だけ差し替える
公開 API を崩さないため、接続プール自体を大きく作り変えるより、既存の `conns[i]` 配列を維持したまま「slot 内の接続実体だけ交換する」方がよい。
これにより、
- `getFreeConn` / `returnConn` の外形は維持できる
- prepared cache の添字も維持できる
- driver 差分を `*_open.nim` / `*_exec.nim` / `*_types.nim` に閉じ込めやすい
#### 方針B: 借用時に寿命判定、実行失敗時に bad connection 判定を入れる
初回実装は、次の 2 箇所で接続再生成を行うのがよい。
1. `getFreeConn` で idle 接続を貸し出す直前
2. クエリ / prepare 実行中に「接続断」と判断できる例外を受けた直後
1 は proactive、2 は reactive な対策である。両方あると「古い接続をなるべく使わない」と「想定外に死んだ接続をすぐ交換する」の両立ができる。
#### 方針C: ping 常用よりも age/lifetime と error 分類を優先する
毎回 ping してから貸し出す設計は単純だが、MySQL/MariaDB では同期的な `ping` が待機コストや event loop 停止要因になりうる。
そのため初手は、
- `createdAt` ベースの `maxLifetime`
- 必要なら `lastUsedAt` ベースの `maxIdleTime`
- driver 固有の bad connection エラー分類
を優先し、health check は「寿命超過時のみ」または「失敗後の再接続確認時のみ」に寄せるほうがよい。
### 5. 具体的な内部設計案
#### 5.1 `Connections` に再接続用メタデータを持たせる
各 driver の `Connections` に、少なくとも次を持たせる。
- 接続生成に必要な情報
- `maxLifetimeSeconds`
- `maxIdleSeconds`
- `lastUsedAt` または `returnedAt`
- 必要なら `isBroken`
既存 `createdAt` はそのまま使う。
#### 5.2 `replaceConn(i)` 相当の内部 proc を driver ごとに用意する
責務:
1. slot `i` の古い接続を close
2. slot `i` に紐づく prepared state を破棄
3. 新しい物理接続を開く
4. `createdAt` / `isBusy` / `lastUsedAt` を初期化
この proc は driver ごとの差分が大きいので、共通化しすぎず各 driver 実装へ置く。
#### 5.3 `getFreeConn` に「借り出し前の再生成」フックを入れる
通知ベース待機の有無に関係なく、空き slot を見つけたタイミングで次を行う。
1. `isBusy = true`
2. `shouldRecycle(conn)` を判定
3. true なら `replaceConn(i)`
4. 成功した slot を返す
ここで失敗した場合は、その slot を unusable のまま返さず、別 slot 探索または例外へ進める。
#### 5.4 実行ラッパで bad connection を捕捉して slot を再初期化する
`query`, `exec`, `prepare` など接続を直接使う箇所は多いので、driver ごとに
- `withBorrowedConn`
- `runWithConnRecovery`
のような内部ラッパへ寄せる余地がある。
このラッパは、
1. 実行
2. bad connection 例外なら slot を破棄
3. 非 transaction 時のみ 1 回だけ再接続して再試行
を担当する。
### 6. 影響の大きさから見た優先順位
優先度 P0:
- MySQL / MariaDB / PostgreSQL / SQLite で「壊れた接続を破棄して張り直す」最小導線を作る
- prepared statement の conn index 単位 invalidation を入れる
- transaction 中は自動リトライしない
優先度 P1:
- `maxLifetime` を導入して aged connection の再利用を減らす
- `maxIdleTime` を導入する
- MySQL の pool wait を通知ベースへ寄せる
優先度 P2:
- idle cleaner の別タスク化
- lazy open 化
- 統計情報の公開
今回のブランチ名と依頼内容からすると、まずは P0 と P1 の前半までを対象にするのが適切。
### 7. 現時点の結論
現在のコネクションプールで最も改善効果が大きいのは、「接続をただ保持する」のではなく、「貸し出し時と失敗時に、その接続がまだ使えるかを判断し、ダメなら slot ごと再初期化する」層を追加することだと判断した。
参考記事の `sql.DB` のうち、allographer にいま不足しているのは主に次の部分である。
- 接続寿命管理
- bad connection の廃棄と再試行
- idle connection の掃除
### 8. 実装後の方針
- pool ごとに `maxConnectionLifetime` / `maxConnectionIdleTime` を持たせ、既定値は 300 秒にした
- 借用時に `createdAt` / `lastUsedAt` を見て aged connection を `refreshConn` で差し替える
- 差し替え時は prepared statement cache を slot 単位で無効化し、古い statement handle を新しい physical connection に持ち込まない
- transaction 中は既存の接続固定を優先し、途中で別 slot に載せ替える振る舞いは入れない
特に今回の要望である「コネクションが使えない時は破棄してから、新しくコネクションを張り直す」は、driver ごとの `replaceConn(i)` と、prepared cache invalidation を軸に設計するのが最も自然である。
一方で transaction 中の自動再接続は意味論を壊しやすいため、通常クエリと同列には扱わない。ここは安全側に倒し、まずは「通常クエリのみ 1 回まで回復可能、transaction 中は即エラー」を初期設計とする。
@@ -0,0 +1,35 @@
---
description: fixブランチでの開発時に読み込む
alwaysApply: false
---
fix ブランチルール
===
allographer自体の改善
- `getFreeConn` がタイムアウトすると `errorConnectionNum` を返すが、その後の `getRowPlain` / `exec` / `getAllRows` は例外ではなくそのまま `return` している。結果として、更新できていなくてもアプリ側では成功レスポンスを返せてしまう。
- prepared statement は接続ごとに lazy prepare されるが、プール単位の cache がない。高頻度 SQL が複数接続に散ると、prepare の局所性が弱い。
- `close()` は使った接続全てに `DEALLOCATE` を送る実装なので、短寿命の prepared statement を多用すると warm 状態を毎回捨てる。
- DML 実行時の列型取得は現在は table 単位 cache になっているが、bulk update 用の raw SQL / prepared SQL を多用する場合は、そもそも query builder を通さない高速経路の価値が高い。
改善方針:
- `errorConnectionNum` に到達したときは no-op ではなく `DbError` を投げる。silent failure は benchmark だけでなく通常アプリでも危険。
- `Connections` に SQL 単位の prepared cache を持たせ、同一 SQL の physical prepare を接続ごとに 1 回へ寄せる。
- `close()` は論理 close に寄せ、物理 `DEALLOCATE` は明示 API に分離する。steady-state の benchmark では prepared state を維持できるようにする。
- 接続固定 API、あるいは transaction / prepared context を足し、同一 logical operation の複数クエリを同じ接続に寄せられるようにする。
- bulk update 用に `raw(...).exec()` だけでなく、prepared raw SQL を再利用できる経路を整える。今回のベンチマーク用途では query builder の汎用性よりも固定 SQL の再利用性が効く。
## 進捗
- [x] `errorConnectionNum` 到達時の silent return を `DbError` へ置換(PostgreSQL / MySQL / MariaDB / SQLite
- [x] PostgreSQL に SQL 単位の prepared cache (`Connections.preparedCache`) を追加
- [x] PostgreSQL prepared `close()` を論理 close 化し、`flushStmt(sql)` / `clearStmtCache()` を追加
- [x] PostgreSQL に `withConn` / `PostgresPreparedContext` を追加し、prepared `first/get/exec` の `ctx` overload を追加
- [x] `example/benchmark.nim` を prepared cold/warm 計測へ分離し、warm 側で statement 再利用経路を追加
- [x] PostgreSQL prepared statement テストに論理 close / cache clear / prepared context ケースを追加
- [x] pool wait テストに pool size 0 時の `DbError` 検証を追加(PostgreSQL / MariaDB / SQLite
## 調査結果・設計まとめ
- `errorConnectionNum` の no-op return は、DML 失敗を呼び出し側が検知できないため、全 RDB driver で同じ失敗モードを発生させていた。今回 `DbError` へ統一し、失敗を上位へ伝播させる。
- prepared cache はまず PostgreSQL に導入した。理由は `PREPARE/DEALLOCATE` のネットワーク往復コストがベンチで支配的だったため。
- `close()` の意味を「ハンドルの寿命」と「物理 prepared state の寿命」で分離し、warm 計測で state を保持できるようにした。
@@ -0,0 +1,201 @@
---
alwaysApply: true
---
プロジェクトルール
===
## 0. 規範表現(RFC 2119)と Lint方針
このドキュメントの規範キーワードは以下の意味で扱う。
- **MUST**: 必須。違反はレビューで差し戻し対象
- **SHOULD**: 強い推奨。逸脱時は理由を記録する
- **MAY**: 任意。採用時は周辺整合性を優先する
- **MUST NOT**: 禁止。明示的な合意なしに導入してはならない
各ルールには Rule ID を付与する。
- 形式: `SYW-<DOMAIN>-<NNN>`
- 併記形式: `[ID][LEVEL][CHECK]`
- `CHECK` の意味:
- `grep`: 文字列や配置で確認しやすい
- `manual`: レビューで確認する
- `test`: テストで確認する
- `doc`: 文書整合の確認
本文とルール一覧が矛盾した場合は、ルール一覧を優先する。
### 0.1 ルール一覧(要約)
| ID | LEVEL | CHECK | 対象 | 要件(要約) |
|---|---|---|---|---|
| SYW-GOAL-001 | MUST | manual | 全体 | 本リポジトリは Nim による RDB 向け query builder / migration / seeder を中核成果物とする |
| SYW-GOAL-002 | MUST | manual | API | Laravel Query Builder / Orator に学んだ直感的で連鎖可能な API を保つ |
| SYW-ARCH-001 | MUST | manual | 設計 | DB差分は driver 実装へ閉じ込め、公開 API は可能な限り共通化する |
| SYW-ARCH-002 | MUST NOT | manual | 設計 | 一時的な場当たり分岐を公開 API に持ち込まない |
| SYW-QB-001 | MUST | test | Query Builder | SQL 生成は決定的で、同じ入力に対し同じクエリ文字列・束縛順序を返す |
| SYW-QB-002 | MUST | manual | Query Builder | メソッドチェーンは可読性を優先し、Laravel/Orator 利用者が推測可能な命名を採用する |
| SYW-QB-003 | MUST NOT | manual | Query Builder | RDB 向け API に暗黙の破壊的副作用を持たせない |
| SYW-SCHEMA-001 | MUST | test | Migration | migration は冪等に再実行判定でき、履歴テーブルと整合する |
| SYW-SCHEMA-002 | MUST | test | Schema Builder | create / alter / drop は DB ごとの差異を吸収しつつ意味論を維持する |
| SYW-SEED-001 | MUST | test | Seeder | seeder は空判定または条件判定に基づき安全に再実行できる |
| SYW-COMPAT-001 | MUST | manual | 互換性 | 既存公開 API の破壊的変更は、必要性・移行方針・影響範囲を文書化する |
| SYW-TEST-001 | MUST | test | テスト | 修正した機能レイヤに対応するテストを追加または更新する |
| SYW-TEST-002 | SHOULD | test | テスト | DB 横断の共通仕様は複数 driver で検証する |
| SYW-DOC-001 | MUST | doc | ドキュメント | README / documents / ルール文書は、公開仕様変更時に同期する |
| SYW-SCOPE-001 | MUST NOT | manual | スコープ | ORM 全面実装を前提にせず、query builder・schema builder の完成度を優先する |
## 1. 目的・スコープ
### 1.1 達成目標
[SYW-GOAL-001][MUST][manual]
このプロジェクトの達成目標は、**Nim 言語で Laravel の Query Builder / ORM 的な記述感と Python Orator の使いやすさを参考にした、RDB 向け query builder を実装・改善・保守すること**である。
[SYW-GOAL-002][MUST][manual]
中核機能は以下の 3 系統である。
- Query Builder
- Migration / Schema Builder
- Seeder
[SYW-GOAL-003][MUST][manual]
利用者は「生 SQL を毎回手で組み立てなくても、読みやすいメソッドチェーンで安全に RDB を扱える」ことを期待している。実装判断は常にこの期待を優先する。
### 1.2 主要スコープ
[SYW-SCOPE-001][MUST][manual]
主要スコープは以下である。
- SQLite / PostgreSQL / MySQL / MariaDB などの RDB 向け query builder
- create / alter / drop を扱う schema builder
- migration 履歴管理
- 初期データ投入用 seeder
- 非同期実行を前提とした接続・実行モデル
[SYW-SCOPE-002][SHOULD][manual]
既存コードベースに SurrealDB 実装が存在していても、判断に迷った場合はまず RDB 向け API 品質を優先する。
### 1.3 非スコープ
[SYW-SCOPE-003][MUST NOT][manual]
以下は明示的な要件がない限り優先しない。
- Active Record 的な重い ORM 機能の全面拡張
- マジックに依存した暗黙変換の追加
- driver ごとに大きく振る舞いが異なる独自 API の増殖
## 2. 設計原則
### 2.1 API 原則
[SYW-ARCH-001][MUST][manual]
公開 API は driver 差分より先に、利用者の記述体験を基準に設計する。各 driver の都合は内部実装で吸収する。
[SYW-QB-002][MUST][manual]
メソッド名・引数順・返り値は、Laravel Query Builder / Orator を知る利用者が高い確率で推測できる形を優先する。
[SYW-QB-003][MUST NOT][manual]
`select`, `where`, `join`, `insert`, `update`, `delete`, `first`, `find`, `get` などの基本操作に、利用者が予期しない破壊的副作用を持ち込んではならない。
[SYW-COMPAT-001][MUST][manual]
公開 API の破壊的変更を行う場合は、少なくとも以下を変更箇所に残す。
- 何が壊れるか
- なぜ必要か
- 既存利用者の移行方法
### 2.2 実装分離
[SYW-ARCH-002][MUST NOT][manual]
「特定 driver だけ通すための場当たり的 if 文」を上位 API 層へ散在させてはならない。分岐は generator / lib / model など責務のある層へ閉じ込める。
[SYW-ARCH-003][MUST][manual]
責務分離の目安は以下とする。
- 接続管理: `connection` 系
- API 入口と共通操作: `query_builder` / `schema_builder`
- DB 方言差分: `models/*/query/*`, `libs/*`
- 実行・変換: `*_exec`, `*_types`, `*_query`
[SYW-ARCH-004][SHOULD][manual]
新機能は、まず共通仕様を言語化してから driver 差分へ展開する。最初に 1 driver だけ特殊実装へ逃がさない。
## 3. Query Builder ルール
[SYW-QB-001][MUST][test]
同じ builder 入力は、同じ SQL 文字列と同じ bind 順序を生成しなければならない。出力が非決定的になる変更は禁止する。
[SYW-QB-004][MUST][manual]
where 句、join、group by、order by、limit / offset、paginate などの句の結合順は、利用者の記述順と SQL としての自然順を壊さない。
[SYW-QB-005][SHOULD][manual]
値の埋め込みよりも、既存のプレースホルダ・エスケープ・型変換の仕組みを優先して使う。
[SYW-QB-006][MUST][test]
`first` / `find` / `get` の空結果時の振る舞いは既存仕様を維持する。`Option` や空シーケンスの扱いを無言で変えてはならない。
[SYW-QB-007][SHOULD][manual]
ログ出力やデバッグ補助を追加する場合は、通常経路の性能や API 純度を汚さない。
## 4. Migration / Schema Builder ルール
[SYW-SCHEMA-001][MUST][test]
migration は履歴テーブルにより再実行可否を判定できなければならない。二重適用や履歴不整合を起こす変更は禁止する。
[SYW-SCHEMA-002][MUST][test]
`create`, `alter`, `drop`, `rename`, `add column`, `change column`, `drop column` は、DB ごとの差異があっても利用者にとって一貫した意味を維持する。
[SYW-SCHEMA-003][MUST][manual]
破壊的な schema 操作を追加・変更する場合は、ロールバック不能性やデータ移行影響を必ず確認する。
[SYW-SCHEMA-004][SHOULD][manual]
column 定義 API は Laravel ライクな表現を優先し、命名やオプションの意味が直感に反しないようにする。
## 5. Seeder ルール
[SYW-SEED-001][MUST][test]
seeder は再実行時に重複データを無制限に増やさないよう、空テーブル判定または列条件判定を用いる既存思想を維持する。
[SYW-SEED-002][SHOULD][manual]
サンプル seeder と実装が乖離した場合は、利用者が最初に触れる example を優先して同期する。
## 6. テスト・品質保証
[SYW-TEST-001][MUST][test]
コード変更時は、影響する最小レイヤのテストを追加または更新する。
- query 生成を変えたら query テスト
- schema 操作を変えたら schema / create_schema テスト
- トランザクションを変えたら transaction テスト
- utility を変えたら utils テスト
[SYW-TEST-002][SHOULD][test]
共通 API の変更は、可能な限り SQLite だけでなく PostgreSQL / MySQL / MariaDB 系にも同種の検証を広げる。
[SYW-TEST-003][MUST][manual]
テスト追加が難しい場合は、その理由と未検証リスクを作業記録へ残す。
## 7. ドキュメント・例・後方互換
[SYW-DOC-001][MUST][doc]
公開仕様を変えたら、必要に応じて以下を同期する。
- `README.md`
- `documents/rdb/*.md`
- `example/`
- `.cursor/rules/*.mdc`
[SYW-DOC-002][SHOULD][doc]
サンプルコードは「最短で使い方が伝わる」ことを優先し、実装とズレた古い記法を放置しない。
## 8. 実装判断の優先順位
[SYW-PRIO-001][MUST][manual]
判断に迷った場合の優先順位は以下とする。
1. 利用者にとって API が自然か
2. 既存公開仕様を壊さないか
3. 複数 RDB で意味が揃うか
4. 内部実装が責務分離されているか
5. テストと文書で保守できるか
## 9. このプロジェクトで避けること
[SYW-ANTI-001][MUST NOT][manual]
以下は避ける。
- 一部 driver だけを通すための公開 API 汚染
- テストなしの SQL 生成変更
- migration 履歴や seeder 冪等性を壊す変更
- README と実装の乖離放置
- Nim らしさよりも複雑なマジックを優先すること
+17
View File
@@ -0,0 +1,17 @@
SQLITE_HOST="/root/db.sqlite3"
# SQLITE_HOST=":memory:"
PG_URL="postgresql://user:pass@postgres:5432/database"
MARIA_URL="mariadb://user:pass@mariadb:3306/database"
MY_URL="mysql://user:pass@mysql:3306/database"
SURREAL_HOST="http://surreal"
SURREAL_PORT=8000
DB_USER=user
DB_PASSWORD=pass
DB_DATABASE=database
DB_MAX_CONNECTION=20
DB_TIMEOUT=30
# Logging
LOG_IS_DISPLAY=true
LOG_IS_FILE=false
LOG_DIR="/root/project/logs"
+3
View File
@@ -0,0 +1,3 @@
feature: feature*
bug: hotfix*
chore: chore*
+19
View File
@@ -0,0 +1,19 @@
name-template: 'v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
- title: '🚀 Features'
labels:
- 'feature'
- 'enhancement'
- title: '🐛 Bug Fixes'
labels:
- 'fix'
- 'bugfix'
- 'bug'
- title: '🧰 Maintenance'
label: 'chore'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: |
## Changes
$CHANGES
+33
View File
@@ -0,0 +1,33 @@
name: Deploy API documents
on:
push:
branches:
- main
jobs:
build-docs-deploy:
env:
NIM_VERSION: 1.4.4
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Cache choosenim
id: cache-choosenim
uses: actions/cache@v1
with:
path: ~/.choosenim
key: ${{ runner.os }}-choosenim-${{ env.NIM_VERSION }}
- uses: jiro4989/setup-nim-action@v1
with:
nim-version: ${{ env.NIM_VERSION }}
- name: Build
run: nimble install -Y
- name: Generate documents
run: nimble docs
- name: Deploy
uses: peaceiris/actions-gh-pages@v2.4.0
env:
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./docs
+61
View File
@@ -0,0 +1,61 @@
name: Build and test Nim
# テストはPRだけ
on:
pull_request:
paths-ignore:
- '*.md'
- 'documents/*'
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "test"
cancel-in-progress: false
jobs:
# WIP でジョブがスキップされてもCIが失敗した扱いにならないようにするため
skip:
runs-on: ubuntu-latest
steps:
- run: echo "Skip job"
# WIP がコミットメッセージに含まれているとジョブを起動しない
before:
runs-on: ubuntu-latest
if: "! contains(github.event.head_commit.message, 'WIP')"
steps:
- run: echo "no WIP"
test-on-docker-nim:
runs-on: ubuntu-latest
needs: before
strategy:
fail-fast: false
matrix:
nim-version:
- 2.0.16
- 2.2.8
env:
NIM_VERSION: ${{ matrix.nim-version }}
steps:
- uses: actions/checkout@v2
- name: Build docker image
run: docker compose -f compose.test.yaml build app
- name: Start dependencies
run: docker compose -f compose.test.yaml up -d postgres mysql mariadb surreal
- name: Test
run: docker compose -f compose.test.yaml run --rm --no-deps app nimble test
# アプリケーションの方を使うことにした
# https://github.com/marketplace/actions/release-drafter
# create-tag-draft:
# runs-on: ubuntu-latest
# if: github.ref == 'refs/heads/master'
# needs:
# - test-on-docker
# steps:
# - uses: release-drafter/release-drafter@v5.3.1
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,15 @@
name: labeler
on:
pull_request:
types: [opened]
jobs:
labeler:
runs-on: ubuntu-latest
steps:
- uses: TimonVS/pr-labeler-action@v3.1.0
with:
configuration-path: .github/pr-labeler.yml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+32
View File
@@ -0,0 +1,32 @@
*
!*.*
!*/
!makefile
# Created by https://www.gitignore.io/api/nim
# Edit at https://www.gitignore.io/?templates=nim
### Nim ###
nimcache/
# End of https://www.gitignore.io/api/nim
!LICENSE
!Dockerfile
coverage
lcov.info
*.sqlite3
*.srqlnb
.migration.json
*logs/*
*.log
.diff
testresults
gh-pages*
.DS_Store
pkg
.vscode
+22
View File
@@ -0,0 +1,22 @@
# AGENTS
- `.cursor/rules/project.mdc` を必ず読み、プロジェクトルールと達成目標を確認する。
- `.cursor/rules/branch.mdc` を必ず読み、ブランチルールを確認する。
- 現在のブランチ名と一致するファイル名のファイルが、リポジトリのルートから見て `.cursor/rules/branch/` 配下にあった場合は、それを読み込んでください。
- Think harder.
- Deep research.
- If you output anything other than the final code, the answer is invalid.
- git add, git commitのコマンド操作は禁止。
- 常に日本語で回答する。
- "commit message"と入力されたら次のことを行う
- `cd {project_root} && git diff --cached > .diff` を実行して.diffファイルを作成する
- .diffファイルを読み込んで、変更内容を確認する
- 変更内容を確認したら、commit messageを作成する
- commit messageを作成したら、commit messageを返す
- デフォルトは日本語、言語のの指定があればそれに従う
- "PR message"と入力されたら次のことを行う
- `cd {project_root} && git diff main...HEAD > .diff` を実行して.diffファイルを作成する
- .diffファイルを読み込んで、変更内容を確認する
- 変更内容を確認したら、PR messageを作成する
- PR messageを作成したら、PR messageを返す
- デフォルトは日本語、言語の指定があればそれに従う
+20
View File
@@ -0,0 +1,20 @@
Copyright (c) 2019 Hidenobu Itsumura
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+353
View File
@@ -0,0 +1,353 @@
# План за интеграция на BaraDB в nim-allographer
## Цел
**BaraDB** е пълноценен драйвер в `nim-allographer`. Използва се чист Nim клиент (`BaraClient` / `SyncClient`) без C зависимости. Compile-time switch: `DB_BARADB`.
---
## Актуално състояние (2026-05-21)
### Статус по фази
| Фаза | Състояние | Бележки |
|------|-----------|---------|
| 1. Инфраструктура и типове | **ГОТОВО** | `env.nim`, `connection.nim`, `query_builder.nim`, `schema_builder.nim` — всичко е интегрирано |
| 2. Query Builder — SQL генерация | **ГОТОВО** | `baradb_generator.nim` (397 реда), `baradb_builder.nim` (237 реда) — всички CRUD + агрегати |
| 3. Query Builder — execution | **ГОТОВО** (с бележки) | `baradb_exec.nim` (716 реда) — всички операции работят, но `insertId` използва `SELECT MAX` вместо `RETURNING` |
| 4. Schema Builder | **СКЕЛЕТ** | Flow-ът е налице, но column type mapping е 24 реда вместо 466 (PostgreSQL) |
| 5. Тестове и документация | **МИНИМАЛНО** | Само `test_open.nim` и `test_query.nim` |
---
## Какво е ГОТОВО (не пипай)
### Wire Protocol клиент — `query_builder/libs/baradb/baradb_client.nim` (706 реда)
- Pure Nim, async + sync, без C FFI
- Binary serialization (big-endian) на всички `WireValue` типове (13 типа: fkNull..fkJson)
- `mkQuery`, `mkQueryParams`, `mkAuth`, `mkPing` съобщения
- `readQueryResponse` — парсва `mkData`, `mkComplete`, `mkError`, `mkReady`
- Вграден `QueryBuilder` (fluent) за standalone употреба
### Connection Pool — `baradb_open.nim` + `baradb_exec.nim`
- `dbOpen(Baradb, database, user, pass, host, port, maxConnections, timeout)`
- `getFreeConn()` — async с deque-based waiters и timeout
- `returnConn()` — освобождава и буди чакащи
- Connection aging: `maxConnectionLifetime`, `maxConnectionIdleTime`
- `refreshConn()`, `hasConnExpired()`, `openBaradbConn()`
### Query Builder — `baradb_query.nim` (386 реда)
- Всички fluent методи: `select`, `table`, `distinct`, `join`, `leftJoin`
- `where` / `orWhere` (string|int|float, bool, nil overloads)
- `whereBetween`, `whereNotBetween`, `whereIn`, `whereNotIn`, `whereNull`
- `groupBy`, `having`, `orderBy`, `limit`, `offset`
- `raw(sql, args)` — суров SQL с параметри
### SQL Generator — `baradb_generator.nim` (397 реда)
- Всички SQL конструкции: SELECT, INSERT, UPDATE, DELETE, агрегати
- Quoting с backtick `` ` `` (MySQL/SQLite стил, **не** PostgreSQL `"`)
- Placeholder: `?` (не `$1`)
### Execution — `baradb_exec.nim` (716 реда)
- `get()`, `first()`, `find()``seq[JsonNode]` / `Option[JsonNode]`
- `getPlain()`, `firstPlain()`, `findPlain()``seq[seq[string]]`
- `insert(JsonNode)`, `insert(seq[JsonNode])`, `insertId(...)`
- `update(JsonNode)`, `delete()`, `delete(id)`
- `count()`, `min()`, `max()`, `avg()`, `sum()`
- `begin()`, `commit()`, `rollback()` + `transaction` макро
- Raw query варианти за всички операции
- `seeder` шаблони
### ORM — споделен модул
- `orm()` template работи с BaraDB
### Schema Code Generation — `usecases/baradb/create_schema.nim`
- Четене от `information_schema` и генериране на Nim типове
---
## Какво трябва да се ДОИЗПИПА
### 1. Prepared Statements — САМО типове, НЯМА имплементация
**Текущо състояние:** Типовете са дефинирани в `baradb_types.nim`:
- `BaradbPreparedEntry``sql`, `nArgs`, `refCount`, `lastUsedAt`
- `BaradbPreparedContext``owner`, `connI`
- `BaradbPreparedStatement``owner`, `entry`, `sql`, `nArgs`, `isClosed`
- `preparedCache` е инициализиран в `baradb_open.nim`
**Липсващо:**
- `prepare()` proc — да създава `BaradbPreparedStatement`
- `ensureStmt()` — да кешира и преизползва statement-и
- `get*()` / `exec*()` procs върху `BaradbPreparedStatement`
- `withConn()` proc за context-based изпълнение
- `flushStmt()` / `clearStmtCache()`
**Wire protocol поддръжка:** `baradb_client.nim` вече има `mkQueryParams` — параметризираните заявки са вградени на ниво протокол. Трябва само да се свърже от allographer слоя.
**Проблем:** В момента `baradb_exec.nim` използва **client-side string interpolation** (`formatSql` + `escapeSqlValue`) вместо server-side параметри. Това е по-малко сигурно и по-малко ефективно.
**Референция:** PostgreSQL драйверът има ~300 реда prepared statement код (`postgres_exec.nim``ensureStmt`, `preparedQuery`, `preparedExec`, `deallocate`, `flush`, `clearCache`, context API).
**План:**
```
Файл: baradb_exec.nim
- [ ] prepare(sql: string): BaradbPreparedStatement
- [ ] ensureStmt(conn, sql, nArgs): BaradbPreparedEntry — кеширане в preparedCache
- [ ] preparedGet(stmt, args): seq[JsonNode] — използва mkQueryParams
- [ ] preparedExec(stmt, args): void
- [ ] withConn(pool, callback): auto — context-based
- [ ] flushStmt(stmt): void — deallocate
- [ ] clearStmtCache(): void
```
---
### 2. RETURNING id за INSERT — използва SELECT MAX (race condition)
**Текущо състояние в `baradb_exec.nim`:**
```nim
discard await self.pools.conns[connI].client.exec(sql)
let idSql = &"SELECT MAX(\"{key}\") FROM \"{table}\""
let qr = await self.pools.conns[connI].client.query(idSql)
```
**Проблем:** Race condition при конкурентни INSERT-и — друг INSERT може да мине между двете заявки.
**Варианти:**
1. **`INSERT ... RETURNING id`** — ако BaraDB го поддържа (за предпочитане, атомарно)
2. **`last_insert_rowid()`** — ако BaraDB има такава функция (както SQLite)
3. **`SELECT LAST_INSERT_ID()`** — MySQL-стил
4. **CTE с `INSERT ... RETURNING`**`WITH inserted AS (INSERT ...) SELECT id FROM inserted`
**План:**
```
Файл: baradb_exec.nim — insertId proc
- [ ] Проверка дали BaraDB поддържа RETURNING
- [ ] Ако да: INSERT ... RETURNING "id" (като PostgreSQL)
- [ ] Ако не: използване на заявката за последно вмъкнат ID от wire protocol-а
- [ ] Премахване на SELECT MAX workaround
```
---
### 3. Schema Builder — Column Type Mapping е СКЕЛЕТ
**Текущо състояние в `queries/baradb/sub/create_column_query.nim` (24 реда):**
```nim
query.add(&"`{column.name}` {column.typ}")
# Само: NOT NULL, UNIQUE, DEFAULT
```
**Проблем:** Изкарва raw `RdbTypeKind` enum стойности (`rdbIncrements`, `rdbString`) вместо SQL типове (`SERIAL`, `VARCHAR(256)`).
**Референция:** PostgreSQL `sub/create_column_query.nim`**466 реда**, обработва всички `RdbTypeKind`:
- `rdbIncrements``SERIAL PRIMARY KEY`
- `rdbBigIncrements``BIGSERIAL PRIMARY KEY`
- `rdbInteger``INTEGER`
- `rdbBigInteger``BIGINT`
- `rdbBoolean``BOOLEAN`
- `rdbString(n)``VARCHAR(n)` (default 255)
- `rdbText``TEXT`
- `rdbFloat``DOUBLE PRECISION`
- `rdbDecimal(p,s)``DECIMAL(p,s)`
- `rdbDate``DATE`
- `rdbDateTime` / `rdbTimestamp``TIMESTAMP`
- `rdbTimestampz``TIMESTAMPTZ`
- `rdbTime``TIME`
- `rdbBinary``BYTEA`
- `rdbUuid``UUID`
- `rdbJson` / `rdbJsonb``JSON` / `JSONB`
- `rdbEnum``VARCHAR(255)` + CHECK constraint
- Foreign keys: `REFERENCES "table"("column") ON DELETE/UPDATE CASCADE/SET NULL/...`
- Indexes, comments, unsigned
**План:**
```
Файл: queries/baradb/sub/create_column_query.nim
- [ ] Пълен mapping на RdbTypeKind → SQL тип (по PostgreSQL референцията)
- [ ] Auto-increment: SERIAL / BIGSERIAL PRIMARY KEY
- [ ] String/Text: VARCHAR(n), TEXT с default 255
- [ ] Числови: INTEGER, BIGINT, SMALLINT, DOUBLE PRECISION, DECIMAL(p,s)
- [ ] Дати: DATE, TIME, TIMESTAMP, TIMESTAMPTZ
- [ ] Бинарни: BYTEA
- [ ] Специални: UUID, JSON, JSONB, BOOLEAN, ENUM
- [ ] Foreign key constraints: REFERENCES ... ON DELETE/UPDATE
- [ ] Index генерация
- [ ] Column comments
Файл: queries/baradb/create_table.nim
- [ ] Да използва create_column_query вместо raw {column.typ}
Файлове: rename_column.nim, rename_table.nim
- [ ] Fix: `changeTo` → `previousName` (ако е bug)
Файл: create_migration_table.nim
- [ ] Консистентност: backtick quoting вместо double-quote
Файл: schema_utils.nim
- [ ] shouldRun() — checksum-based skip (вместо винаги true)
```
---
### 4. SQL Quoting Inconsistency
**Проблем:** `baradb_generator.nim` използва backtick `` ` ``, но `create_migration_table.nim` използва double-quote `"`. Трябва да е консистентно.
**Въпрос:** Какво използва BaraDB сървърът? Ако поддържа и двете — изберем едно. Ако само едно — коригираме навсякъде.
---
### 5. Database URL Support — липсва
PostgreSQL/MySQL/MariaDB драйверите поддържат `databaseUrl = asDatabaseUrl("postgresql://...")`. BaraDB `dbOpen` приема само позиционни параметри.
```
Файл: baradb_open.nim
- [ ] Парсване на `baradb://user:pass@host:port/db` URL
- [ ] Интеграция с `libs/database_url.nim`
```
---
### 6. Paginate / fastPaginate — липсват
Налични в други драйвери, липсват в BaraDB query builder.
```
Файл: baradb_exec.nim
- [ ] paginate(page, perPage): seq[JsonNode] + metadata
- [ ] fastPaginate(key, perPage): cursor-based
```
---
### 7. whereNull Bug
**Проблем:** `baradb_generator.nim:205` — `whereNullSql` референцира `row["symbol"]`, но `baradb_query.nim` `whereNull` не задава `"symbol"` ключ. Ще даде runtime crash.
```
Файл: baradb_query.nim — whereNull proc
- [ ] Добавяне на "symbol": "IS" или "IS NOT" в JSON а
```
---
## Тестове — какво липсва
| Тестов файл | Съществува за | Липсва за BaraDB |
|-------------|--------------|------------------|
| `test_open.nim` | postgres, sqlite, mysql, mariadb, surreal, **baradb** | — |
| `test_query.nim` | postgres, sqlite, mysql, mariadb, surreal, **baradb** | — |
| `test_prepared_statement.nim` | postgres, sqlite, mysql, mariadb, surreal | **baradb** |
| `test_schema.nim` | postgres, sqlite, mysql, mariadb, surreal | **baradb** |
| `test_create_schema.nim` | postgres, sqlite, mysql, mariadb, surreal | **baradb** |
| `test_pool_wait.nim` | postgres | **baradb** |
| `test_transaction.nim` | postgres, sqlite, mysql, mariadb, surreal | **baradb** |
---
## Приоритети
| # | Подобрение | Сложност | Ефект | Приоритет |
|---|-----------|----------|-------|-----------|
| 1 | Schema Builder column mapping | Средна | Без него migrations не работят | **ВИСОК** |
| 2 | INSERT RETURNING id | Ниска | Премахва race condition | **ВИСОК** |
| 3 | Prepared Statements | Висока | Security + performance | **СРЕДЕН** |
| 4 | Database URL support | Ниска | UX удобство | **НИСЪК** |
| 5 | Paginate / fastPaginate | Ниска | Feature parity | **НИСЪК** |
| 6 | whereNull fix | Ниска | Bug fix | **ВИСОК** |
| 7 | SQL quoting консистентност | Ниска | Потенциален runtime error | **СРЕДЕН** |
| 8 | Schema utils checksum | Ниска | Migration skip optimization | **НИСЪК** |
---
## Архитектура — файлова карта
```
src/allographer/
├── env.nim # DB_BARADB compile switch ✅
├── connection.nim # Import/export Baradb типове ✅
├── query_builder.nim # Import/export baradb модули ✅
├── schema_builder.nim # Import/export baradb schema ✅
├── query_builder/
│ ├── libs/baradb/
│ │ └── baradb_client.nim # Wire protocol (706 реда) ✅
│ │
│ └── models/baradb/
│ ├── baradb_types.nim # Типове (90 реда) ✅
│ ├── baradb_open.nim # dbOpen + pool (52 реда) ✅
│ ├── baradb_query.nim # Fluent API (386 реда) ✅
│ ├── baradb_exec.nim # Execution (716 реда) ✅⚠️
│ ├── baradb_transaction.nim # Transaction макро (42 реда) ✅
│ └── query/
│ ├── baradb_builder.nim # SQL builder (237 реда) ✅
│ └── baradb_generator.nim # SQL generator (397 реда) ✅
├── schema_builder/
│ ├── queries/baradb/
│ │ ├── baradb_query_type.nim # Типове (14 реда) ✅
│ │ ├── create_table.nim # CREATE TABLE (16 реда) ⚠️ skeletal
│ │ ├── add_column.nim # ADD COLUMN (8 реда) ⚠️ minimal
│ │ ├── change_column.nim # ALTER COLUMN (8 реда) ⚠️ minimal
│ │ ├── drop_column.nim # DROP COLUMN (8 реда) ✅
│ │ ├── drop_table.nim # DROP TABLE (7 реда) ✅
│ │ ├── rename_column.nim # RENAME COLUMN (8 реда) ⚠️ possible bug
│ │ ├── rename_table.nim # RENAME TABLE (7 реда) ⚠️ possible bug
│ │ ├── reset_table.nim # DELETE FROM (7 реда) ✅
│ │ ├── create_migration_table.nim (12 реда) ⚠️ quoting inconsistency
│ │ ├── schema_utils.nim # shouldRun (12 реда) ⚠️ always true
│ │ └── sub/
│ │ ├── create_column_query.nim # (24 реда) ❌ skeletal
│ │ ├── add_column_query.nim # (8 реда) ⚠️ minimal
│ │ └── change_column_query.nim # (6 реда) ⚠️ minimal
│ │
│ └── usecases/baradb/
│ ├── create.nim # Table creation flow (24 реда) ✅
│ ├── alter.nim # Alter flow (45 реда) ✅
│ ├── drop.nim # Drop flow (18 реда) ✅
│ ├── create_schema.nim # Code gen from DB (60 реда) ✅
│ └── create_query_def.nim # Factory (10 реда) ✅
tests/baradb/
├── config.nims # DB_BARADB=true ✅
├── connections.nim # Connection setup ✅
├── test_open.nim # Basic connection test ✅
├── test_query.nim # Integration tests ✅
├── test_prepared_statement.nim # ❌ липсва
├── test_schema.nim # ❌ липсва
├── test_create_schema.nim # ❌ липсва
├── test_pool_wait.nim # ❌ липсва
└── test_transaction.nim # ❌ липсва
```
**Легенда:** ✅ готово | ⚠️ partial/needs work | ❌ липсва | ✅⚠️ работи но с workaround
---
## Краткосрочен план (следващи стъпки)
### Седмица 1: Schema Builder + Bug fixes
1. `sub/create_column_query.nim` — пълен RdbTypeKind → SQL mapping (по PostgreSQL референция)
2. `create_table.nim` — да използва column query вместо raw тип
3. Fix `whereNull` bug в `baradb_query.nim`
4. Fix quoting inconsistency в `create_migration_table.nim`
5. Fix `rename_column.nim` / `rename_table.nim` ако `changeTo` не съществува
### Седмица 2: INSERT RETURNING + Prepared Statements (част 1)
1. `insertId` — проучване дали BaraDB поддържа RETURNING, имплементация
2. `prepare()` / `ensureStmt()` — prepared statement кеш
3. `preparedGet()` / `preparedExec()` — изпълнение през `mkQueryParams`
### Седмица 3: Тестове + Prepared Statements (част 2)
1. `test_schema.nim` — schema builder тестове
2. `test_prepared_statement.nim` — prepared statement тестове
3. `test_transaction.nim` — transaction тестове
4. `test_pool_wait.nim` — pool timeout тестове
### Седмица 4: Polish
1. Database URL support
2. Paginate / fastPaginate
3. Schema utils checksum
4. Документация в `documents/`
+204
View File
@@ -0,0 +1,204 @@
allographer
===
[![nimble](https://raw.githubusercontent.com/yglukhov/nimble-tag/master/nimble.png)](https://github.com/yglukhov/nimble-tag)
![Build Status](https://github.com/itsumura-h/nim-allographer/workflows/Build%20and%20test%20Nim/badge.svg)
An asynchronous query builder library inspired by [Laravel/PHP](https://readouble.com/laravel/6.0/en/queries.html) and [Orator/Python](https://orator-orm.com) for Nim.
Supported Databases are [Sqlite3](https://www.sqlite.org/index.html), [PostgreSQL](https://www.postgresql.org/), [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/) and **BaraDB**. (SurrealDB is planned to be supported in v3)
Supported Nim v2
## Easy to access Rdb
### Query Builder
```nim
import asyncdispatch, json
import allographer/connection
import allographer/query_builder
let maxConnections = 95
let timeout = 30
let rdb = dbOpen(PostgreSQL, "database", "user", "password", "localhost", 5432, maxConnections, timeout)
# also available
# let rdb = dbOpen(SQLite3, "/path/to/db/sqlite3.db", maxConnections=maxConnections, timeout=timeout)
# let rdb = dbOpen(MySQL, "database", "user", "password", "localhost", 3306, maxConnections, timeout)
# let rdb = dbOpen(MariaDB, "database", "user", "password", "localhost", 3306, maxConnections, timeout)
# let rdb = dbOpen(PostgreSQL, databaseUrl = asDatabaseUrl("postgresql://user:password@localhost:5432/database"), maxConnections=maxConnections, timeout=timeout)
# let rdb = dbOpen(Baradb, "database", "user", "password", "localhost", 9472, maxConnections, timeout)
# let surreal = dbOpen(SurrealDB, "test_ns" "test_db", "user", "password" "http://localhost", 8000, maxConnections, timeout)
proc main(){.async.} =
let result = await rdb
.table("users")
.select("id", "email", "name")
.limit(5)
.offset(10)
.get()
echo result
waitFor main()
>> SELECT id, email, name FROM users LIMIT 5 OFFSET 10
>> @[
{"id":11,"email":"user11@gmail.com","name":"user11"},
{"id":12,"email":"user12@gmail.com","name":"user12"},
{"id":13,"email":"user13@gmail.com","name":"user13"},
{"id":14,"email":"user14@gmail.com","name":"user14"},
{"id":15,"email":"user15@gmail.com","name":"user15"}
]
```
### Schema Builder
```nim
import allographer/schema_builder
rdb.create([
table("auth", [
Column.increments("id"),
Column.string("name").nullable(),
Column.timestamp("created_at").default()
]),
table("users", [
Column.increments("id"),
Column.string("name"),
Column.foreign("auth_id").reference("id").on("auth").onDelete(SET_NULL)
])
])
>> CREATE TABLE auth (
id INT NOT NULL PRIMARY KEY,
name VARCHAR,
created_at DATETIME DEFAULT (NOW())
)
>> CREATE TABLE users (
id INT NOT NULL PRIMARY KEY,
name VARCHAR NOT NULL,
auth_id INT,
FOREIGN KEY(auth_id) REFERENCES auth(id) ON DELETE SET NULL
)
rdb.alter(
table("users", [
Column.string("email").unique().default("").add(),
Column.deleteColumn("name")
])
)
>> ALTER TABLE "users" ADD COLUMN 'email' VARCHAR UNIQUE DEFAULT '' CHECK (length("email") <= 255)
>> ALTER TABLE "users" DROP `name`
```
## Index
<!--ts-->
- [allographer](#allographer)
- [Easy to access Rdb](#easy-to-access-rdb)
- [Query Builder](#query-builder)
- [Schema Builder](#schema-builder)
- [Index](#index)
- [Install](#install)
- [Configuation](#configuation)
- [Createing connection](#createing-connection)
- [Logging](#logging)
- [Documents](#documents)
- [Nim API Documents](#nim-api-documents)
- [v2](#v2)
- [Development](#development)
- [Branch naming rule](#branch-naming-rule)
<!-- Created by https://github.com/ekalinin/github-markdown-toc -->
<!-- Added by: root, at: Mon Jul 17 07:46:10 UTC 2023 -->
<!--te-->
---
## Install
```sh
nimble install allographer
```
If you get `SIGSEGV: Illegal storage access. (Attempt to read from nil?)` when trying to use the database you likely have a problem with the library path. On OS X the default is to check for the `brew --prefix` of the chosen driver, if that doesn't work it will look in `/usr/lib` or an environment variable `DYLD_xxx_PATH` where `xxx` if your driver: `SQLITE`, `MARIADB`, `MYSQL` or `POSTGRES`.
## Configuation
Allographer loads emvironment variables of `DB_SQLITE`, `DB_POSTGRES`, `DB_MYSQL`, `DB_MARIADB` and `DB_BARADB` to define which process should be **compiled**.<br>
(`DB_SURREAL` is planned to be supported in v3)<br>
These environment variables have to be set at compile time, so they have to be written in `config.nims` not in `.env`.
config.nims
```nim
import os
putEnv("DB_SQLITE", $true)
putEnv("DB_POSTGRES", $true)
```
In this example, even if your runtime environment lacks `mysqlclient-dev`, execution will success. However if your runtime environment lacks `sqlite3`, execution will fail.
## Createing connection
Database connection should be definded as singleton variable.
database.nim
```nim
import allographer/connection
let rdb* = dbOpen(PostgreSQL, "database", "user", "password", "localhost", 5432, maxConnections, timeout)
# you can create connection for multiple database at same time.
let sqliteRdb* = dbOpen(Sqlite3, "/path/to/db/sqlite3.db", maxConnections=maxConnections, timeout=timeout)
let mysqlRdb* = dbOpen(MySQL, "database", "user", "password", "localhost", 3306, maxConnections, timeout)
let mariaRdb* = dbOpen(MariaDB, "database", "user", "password", "localhost", 3306, maxConnections, timeout)
let pgUrlRdb* = dbOpen(PostgreSQL, databaseUrl = asDatabaseUrl("postgresql://user:password@localhost:5432/database"), maxConnections=maxConnections, timeout=timeout)
let baradbRdb* = dbOpen(Baradb, "database", "user", "password", "localhost", 9472, maxConnections, timeout)
# let surrealDb* = dbOpen(SurrealDb, "test_ns" "test_db", "user", "password" "http://localhost", 8000, maxConnections, timeout) # planned for v3
```
Then, call connection when you run query.
run_sql.nim
```nim
import asyncdispatch
import allographer/query_builder
from database import rdb
proc main(){.async.}=
echo await rdb.table("users").get()
waitFor main()
```
## Logging
Please set args in `dbOpen()`
```nim
proc dbOpen*(driver:Driver, database:string="", user:string="", password:string="",
host: string="", port=0, maxConnections=1, timeout=30,
shouldDisplayLog=false, shouldOutputLogFile=false, logDir=""):Rdb
```
- shouldDisplayLog: Whether display logging in terminal console or not.
- shouldOutputLogFile: Whether output logging in log file or not.
- logDir: Define logging dir path.
## Documents
[Schema Builder for RDB](./documents/rdb/schema_builder.md)
[Query Builder for RDB](./documents/rdb/query_builder.md)
[Schema Builder for SurrealDB](./documents/surrealdb/schema_builder.md) (planned for v3)
[Query Builder for SurrealDB](./documents/surrealdb/query_builder.md) (planned for v3)
## Nim API Documents
### v2
[connection](https://itsumura-h.github.io/nim-allographer/v2/connection.html)
[Schema Builder](https://itsumura-h.github.io/nim-allographer/v2/schema_builder.html)
[Query Builder](https://itsumura-h.github.io/nim-allographer/v2/query_builder.html)
## Development
### Branch naming rule
Please create this branch name when you will create a new pull request.
| Branch | Description |
| ------ | ----------- |
| feature-*** | New feature branch |
| hotfix-*** | Bug fix branch |
| chore-*** | Chore work or maintenance |
This naming rule automatically labels the pull request.
@@ -0,0 +1,68 @@
# Package
version = "0.32.1"
author = "Hidenobu Itsumura @dumblepytech1 as 'medy'"
description = "A Nim query builder library inspired by Laravel/PHP and Orator/Python"
license = "MIT"
srcDir = "src"
# backend = "c"
# bin = @["allographer/cli/dbtool"]
# binDir = "src/bin"
# installExt = @["nim"]
# skipDirs = @["allographer/cli"]
# Dependencies
requires "nim >= 2.0.0"
requires "db_connector >= 0.1.0"
requires "checksums >= 0.1.0"
import strformat, os
task test, "run testament test":
exec &"testament p 'tests/sqlite/test_*.nim'"
exec &"testament p 'tests/postgres/test_*.nim'"
exec &"testament p 'tests/mariadb/test_*.nim'"
exec &"testament p 'tests/mysql/test_*.nim'"
exec &"testament p 'tests/surrealdb/test_*.nim'"
exec &"testament p 'tests/utils/test_*.nim'"
for kind, path in walkDir(getCurrentDir() / "tests"):
if not path.contains(".") and path.fileExists():
exec "rm -f " & path
task docs, "Generate API documents":
let
deployDir = &"docs/v{NimMajor}"
pkgDir = srcDir / "allographer"
srcFiles = @[
"connection",
"query_builder",
"schema_builder",
]
if dirExists(deployDir):
rmDir deployDir
for f in srcFiles:
let srcFile = pkgDir / f & ".nim"
exec &"nim doc --hints:off --project --out:{deployDir} --index:on {srcFile}"
let toolImage = "basolato:tool"
task setupTool, "Setup tool docker image":
exec &"docker build -t {toolImage} -f tool_Dockerfile ."
proc generateToc(dir: string) =
let cwd = getCurrentDir()
for f in listFiles(dir):
if 3 < f.len:
let ext = f[^3..^1]
if ext == ".md":
exec &"docker run --rm -v {cwd}:/work -it {toolImage} --insert --no-backup {f}"
task toc, "Generate TOC":
generateToc(".")
generateToc("./documents/rdb")
generateToc("./documents/surrealdb")
+50
View File
@@ -0,0 +1,50 @@
services:
app:
build:
context: .
dockerfile: ./docker/ubuntu/test.Dockerfile
args:
NIM_VERSION: "${NIM_VERSION:-2.2.8}"
tty: true
volumes:
- .:/root/project
depends_on:
- postgres
- mysql
- mariadb
- surreal
mysql:
image: mysql:8.0-debian
tty: true
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: pass
mariadb:
image: mariadb
tty: true
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: pass
postgres:
image: postgres:alpine
tty: true
environment:
POSTGRES_DB: database
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
surreal:
image: surrealdb/surrealdb:v3.0
tty: true
# command: start --log trace --user user --pass pass memory # like redis
# command: start --log trace --user user --pass pass file://root/.surrealdb # like mongo
command: start --log trace --user user --pass pass memory # like in-memory sqlite
# command: start --log trace --user user --pass pass file://root/.surrealdb # like rdb
+71
View File
@@ -0,0 +1,71 @@
services:
app:
build:
context: .
dockerfile: ./docker/ubuntu/Dockerfile
args:
# VERSION: 1.6.14
NIM_VERSION: 2.2.8
tty: true
volumes:
- .:/application
depends_on:
- postgres
- mysql
- mariadb
- surreal
mysql:
image: mysql:8
tty: true
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: pass
mariadb:
image: mariadb
tty: true
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: pass
postgres:
image: postgres:alpine
tty: true
environment:
POSTGRES_DB: database
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
surreal:
image: surrealdb/surrealdb:v3.0
tty: true
# command: start --log trace --user user --pass pass memory # like redis
# command: start --log trace --user user --pass pass file://root/.surrealdb # like mongo
command: start --log trace --user user --pass pass memory # like in-memory sqlite
# command: start --log trace --user user --pass pass file://root/.surrealdb # like rdb
adminer:
image: adminer:4.8.1-standalone
tty: true
ports:
- 9001:8080
depends_on:
- mysql
- mariadb
- postgres
adminer-sqlite:
build: ./docker/adminer
tty: true
ports:
- 9002:8080
volumes:
- ./:/app
depends_on:
- app
+7
View File
@@ -0,0 +1,7 @@
import os
putEnv("DB_SQLITE", $true)
putEnv("DB_POSTGRES", $true)
putEnv("DB_MYSQL", $true)
putEnv("DB_MARIADB", $true)
putEnv("DB_SURREAL", $true)
@@ -0,0 +1,3 @@
FROM adminer:4.8.1-standalone
USER root
COPY login-password-less.php /var/www/html/plugins-enabled/login-password-less.php
@@ -0,0 +1,9 @@
<?php
require_once('plugins/login-password-less.php');
/** Set allowed password
* @param string result of password_hash
*/
return new AdminerLoginPasswordLess(
$password_hash = password_hash("pass", PASSWORD_DEFAULT)
);
@@ -0,0 +1,28 @@
FROM nimlang/nim:1.6.2-alpine-regular
RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories
RUN apk update && \
apk upgrade --no-cache && \
apk add --no-cache \
curl \
gcc \
musl-dev \
bsd-compat-headers \
openssh-client \
git \
lcov \
sqlite \
libpq \
mariadb-dev \
openssl \
pcre \
&& \
rm /usr/lib/mysqld* -fr && \
rm /usr/bin/mysql* -fr
ENV PATH $PATH:/root/.nimble/bin
WORKDIR /root/project
COPY ./allographer.nimble .
RUN nimble install -y
RUN nimble install -y \
bcrypt \
progress
@@ -0,0 +1,48 @@
FROM ubuntu:24.04
# prevent timezone dialogue
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update
RUN apt upgrade -y
RUN apt install -y \
# for build Nim and make
build-essential \
# for unzip tar.xz
xz-utils \
# for https
ca-certificates \
# for nim regex
libpcre3-dev \
vim \
curl \
git \
sqlite3 \
libpq-dev \
libmariadb-dev
WORKDIR /root
# Nim
ARG NIM_VERSION="2.0.0"
RUN curl https://nim-lang.org/choosenim/init.sh -o init.sh
RUN sh init.sh -y
RUN rm -f init.sh
ENV PATH $PATH:/root/.nimble/bin
RUN choosenim ${NIM_VERSION}
# nimlangserver
# https://github.com/nim-lang/langserver/releases/latest
WORKDIR /root
RUN curl -o nimlangserver.tar.gz -L https://github.com/nim-lang/langserver/releases/latest/download/nimlangserver-linux-amd64.tar.gz
RUN tar zxf nimlangserver.tar.gz
RUN rm -f nimlangserver.tar.gz
RUN mv nimlangserver /root/.nimble/bin/
WORKDIR /application
COPY ./allographer.nimble .
RUN nimble install -y -d
RUN git config --global --add safe.directory /application
WORKDIR /application
@@ -0,0 +1,40 @@
FROM ubuntu:24.04
# prevent timezone dialogue
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update
RUN apt upgrade -y
RUN apt install -y \
gcc \
xz-utils \
ca-certificates \
libpcre3-dev \
curl \
git \
sqlite3 \
libpq-dev \
libmariadb-dev
# gcc... for Nim
# xz-utils... for unzip tar.xz
# ca-certificates... for https
# libpcre3-dev... for nim regex
WORKDIR /root
# Nim
ARG NIM_VERSION="2.0.0"
RUN curl https://nim-lang.org/choosenim/init.sh -o init.sh
RUN sh init.sh -y
RUN rm -f init.sh
ENV PATH $PATH:/root/.nimble/bin
RUN choosenim ${NIM_VERSION}
WORKDIR /root/project
COPY ./allographer.nimble .
RUN nimble install -y -d
RUN git config --global --add safe.directory /root/project
WORKDIR /root/project
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/connection</title>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
<!-- JS -->
<script type="text/javascript" src="dochack.js"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/connection</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" onkeyup="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<a class="reference reference-toplevel" href="#19" id="69">Exports</a>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="env.html">env</a>, <a class="reference external" href="v2/query_builder/models/sqlite/sqlite_types.html">v2/query_builder/models/sqlite/sqlite_types</a>, <a class="reference external" href="v2/query_builder/models/sqlite/sqlite_open.html">v2/query_builder/models/sqlite/sqlite_open</a>, <a class="reference external" href="v2/query_builder/models/postgres/postgres_types.html">v2/query_builder/models/postgres/postgres_types</a>, <a class="reference external" href="v2/query_builder/models/postgres/postgres_open.html">v2/query_builder/models/postgres/postgres_open</a>, <a class="reference external" href="v2/query_builder/models/mariadb/mariadb_types.html">v2/query_builder/models/mariadb/mariadb_types</a>, <a class="reference external" href="v2/query_builder/models/mariadb/mariadb_open.html">v2/query_builder/models/mariadb/mariadb_open</a>, <a class="reference external" href="v2/query_builder/models/mysql/mysql_types.html">v2/query_builder/models/mysql/mysql_types</a>, <a class="reference external" href="v2/query_builder/models/mysql/mysql_open.html">v2/query_builder/models/mysql/mysql_open</a>, <a class="reference external" href="v2/query_builder/models/surreal/surreal_types.html">v2/query_builder/models/surreal/surreal_types</a>, <a class="reference external" href="v2/query_builder/models/surreal/surreal_open.html">v2/query_builder/models/surreal/surreal_open</a>
</dl>
</div>
<div class="section" id="19">
<h1><a class="toc-backref" href="#19">Exports</a></h1>
<dl class="item">
<a href="v2/query_builder/models/sqlite/sqlite_types.html#SQLite3"><span class="Identifier">SQLite3</span></a>, <a href="v2/query_builder/models/sqlite/sqlite_types.html#SqliteConnections"><span class="Identifier">SqliteConnections</span></a>, <a href="v2/query_builder/models/sqlite/sqlite_open.html#dbOpen,typeSQLite3,string,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="v2/query_builder/models/postgres/postgres_types.html#PostgreSQL"><span class="Identifier">PostgreSQL</span></a>, <a href="v2/query_builder/models/postgres/postgres_types.html#PostgresConnections"><span class="Identifier">PostgresConnections</span></a>, <a href="v2/query_builder/models/postgres/postgres_open.html#dbOpen,typePostgreSQL,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="v2/query_builder/models/mariadb/mariadb_types.html#MariaDB"><span class="Identifier">MariaDB</span></a>, <a href="v2/query_builder/models/mariadb/mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a>, <a href="v2/query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="v2/query_builder/models/mysql/mysql_types.html#MySQL"><span class="Identifier">MySQL</span></a>, <a href="v2/query_builder/models/mysql/mysql_types.html#MysqlConnections"><span class="Identifier">MysqlConnections</span></a>, <a href="v2/query_builder/models/mysql/mysql_open.html#dbOpen,typeMySQL,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="v2/query_builder/models/surreal/surreal_types.html#SurrealDB"><span class="Identifier">SurrealDB</span></a>, <a href="v2/query_builder/models/surreal/surreal_types.html#SurrealConnections"><span class="Identifier">SurrealConnections</span></a>, <a href="v2/query_builder/models/surreal/surreal_open.html#dbOpen,typeSurrealDB,string,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2024-04-26 16:50:23 UTC</small>
</div>
</div>
</div>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
</body>
</html>
@@ -0,0 +1 @@
nimTitle connection connection.html module src/allographer/connection 0
File diff suppressed because it is too large Load Diff
+134
View File
@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/env</title>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
<!-- JS -->
<script type="text/javascript" src="dochack.js"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/env</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" onkeyup="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#isExistsMariadb" title="isExistsMariadb = true">isExistsMariadb</a></li>
<li><a class="reference" href="#isExistsMysql" title="isExistsMysql = true">isExistsMysql</a></li>
<li><a class="reference" href="#isExistsPostgres" title="isExistsPostgres = true">isExistsPostgres</a></li>
<li><a class="reference" href="#isExistsSqlite" title="isExistsSqlite = true">isExistsSqlite</a></li>
<li><a class="reference" href="#isExistsSurrealdb" title="isExistsSurrealdb = true">isExistsSurrealdb</a></li>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="isExistsMariadb">
<dt><pre><a href="env.html#isExistsMariadb"><span class="Identifier">isExistsMariadb</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsMysql">
<dt><pre><a href="env.html#isExistsMysql"><span class="Identifier">isExistsMysql</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsPostgres">
<dt><pre><a href="env.html#isExistsPostgres"><span class="Identifier">isExistsPostgres</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsSqlite">
<dt><pre><a href="env.html#isExistsSqlite"><span class="Identifier">isExistsSqlite</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsSurrealdb">
<dt><pre><a href="env.html#isExistsSurrealdb"><span class="Identifier">isExistsSurrealdb</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2024-04-26 16:50:29 UTC</small>
</div>
</div>
</div>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
</body>
</html>
+6
View File
@@ -0,0 +1,6 @@
nimTitle env env.html module src/allographer/env 0
nim isExistsSqlite env.html#isExistsSqlite const isExistsSqlite 22
nim isExistsPostgres env.html#isExistsPostgres const isExistsPostgres 23
nim isExistsMysql env.html#isExistsMysql const isExistsMysql 24
nim isExistsMariadb env.html#isExistsMariadb const isExistsMariadb 25
nim isExistsSurrealdb env.html#isExistsSurrealdb const isExistsSurrealdb 26
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
nimTitle query_builder query_builder.html module src/allographer/query_builder 0
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
nimTitle schema_builder schema_builder.html module src/allographer/schema_builder 0
File diff suppressed because one or more lines are too long
+104
View File
@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/utils</title>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
<!-- JS -->
<script type="text/javascript" src="dochack.js"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/utils</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" onkeyup="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">getOsName
<li><a class="reference" href="#getOsName" title="getOsName(): string">getOsName(): string</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="getOsName-procs-all">
<div id="getOsName">
<dt><pre><span class="Keyword">func</span> <a href="#getOsName"><span class="Identifier">getOsName</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2024-04-26 16:50:31 UTC</small>
</div>
</div>
</div>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
</body>
</html>
+2
View File
@@ -0,0 +1,2 @@
nimTitle utils utils.html module src/allographer/utils 0
nim getOsName utils.html#getOsName proc getOsName(): string 3
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/connection</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/connection</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<a class="reference reference-toplevel" href="#19" id="69">Exports</a>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="env.html">env</a>, <a class="reference external" href="query_builder/libs/database_url.html">query_builder/libs/database_url</a>, <a class="reference external" href="query_builder/models/sqlite/sqlite_types.html">query_builder/models/sqlite/sqlite_types</a>, <a class="reference external" href="query_builder/models/sqlite/sqlite_open.html">query_builder/models/sqlite/sqlite_open</a>, <a class="reference external" href="query_builder/models/postgres/postgres_types.html">query_builder/models/postgres/postgres_types</a>, <a class="reference external" href="query_builder/models/postgres/postgres_open.html">query_builder/models/postgres/postgres_open</a>, <a class="reference external" href="query_builder/models/mariadb/mariadb_types.html">query_builder/models/mariadb/mariadb_types</a>, <a class="reference external" href="query_builder/models/mariadb/mariadb_open.html">query_builder/models/mariadb/mariadb_open</a>, <a class="reference external" href="query_builder/models/mysql/mysql_types.html">query_builder/models/mysql/mysql_types</a>, <a class="reference external" href="query_builder/models/mysql/mysql_open.html">query_builder/models/mysql/mysql_open</a>, <a class="reference external" href="query_builder/models/surreal/surreal_types.html">query_builder/models/surreal/surreal_types</a>, <a class="reference external" href="query_builder/models/surreal/surreal_open.html">query_builder/models/surreal/surreal_open</a>
</dl>
</div>
<div class="section" id="19">
<h1><a class="toc-backref" href="#19">Exports</a></h1>
<dl class="item">
<a href="query_builder/libs/database_url.html#DatabaseUrl"><span class="Identifier">DatabaseUrl</span></a>, <a href="query_builder/libs/database_url.html#DatabaseUrlQuery"><span class="Identifier">DatabaseUrlQuery</span></a>, <a href="query_builder/libs/database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a>, <a href="query_builder/libs/database_url.html#asDatabaseUrl,string"><span class="Identifier">asDatabaseUrl</span></a>, <a href="query_builder/libs/database_url.html#parseDatabaseUrl,string"><span class="Identifier">parseDatabaseUrl</span></a>, <a href="query_builder/libs/database_url.html#parseDatabaseUrl,DatabaseUrl"><span class="Identifier">parseDatabaseUrl</span></a>, <a href="query_builder/libs/database_url.html#databaseName,ParsedDatabaseUrl"><span class="Identifier">databaseName</span></a>, <a href="query_builder/libs/database_url.html#sqliteDatabasePath,ParsedDatabaseUrl"><span class="Identifier">sqliteDatabasePath</span></a>, <a href="query_builder/libs/database_url.html#portOrDefault,ParsedDatabaseUrl,int"><span class="Identifier">portOrDefault</span></a>, <a href="query_builder/libs/database_url.html#requireDatabaseUrlScheme,ParsedDatabaseUrl,openArray[string],string"><span class="Identifier">requireDatabaseUrlScheme</span></a>, <a href="query_builder/models/sqlite/sqlite_types.html#SQLite3"><span class="Identifier">SQLite3</span></a>, <a href="query_builder/models/sqlite/sqlite_types.html#SqliteConnections"><span class="Identifier">SqliteConnections</span></a>, <a href="query_builder/models/sqlite/sqlite_open.html#dbOpen,typeSQLite3,string,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/sqlite/sqlite_open.html#dbOpen,typeSQLite3,DatabaseUrl,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/postgres/postgres_types.html#PostgreSQL"><span class="Identifier">PostgreSQL</span></a>, <a href="query_builder/models/postgres/postgres_types.html#PostgresConnections"><span class="Identifier">PostgresConnections</span></a>, <a href="query_builder/models/postgres/postgres_open.html#dbOpen,typePostgreSQL,DatabaseUrl,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/postgres/postgres_open.html#dbOpen,typePostgreSQL,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/postgres/postgres_open.html#dbOpen,typePostgreSQL,string,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/mariadb/mariadb_types.html#MariaDB"><span class="Identifier">MariaDB</span></a>, <a href="query_builder/models/mariadb/mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a>, <a href="query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,DatabaseUrl,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,string,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/mysql/mysql_types.html#MySQL"><span class="Identifier">MySQL</span></a>, <a href="query_builder/models/mysql/mysql_types.html#MysqlConnections"><span class="Identifier">MysqlConnections</span></a>, <a href="query_builder/models/mysql/mysql_open.html#dbOpen,typeMySQL,DatabaseUrl,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/mysql/mysql_open.html#dbOpen,typeMySQL,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/mysql/mysql_open.html#dbOpen,typeMySQL,string,int,int,string"><span class="Identifier">dbOpen</span></a>, <a href="query_builder/models/surreal/surreal_types.html#SurrealDB"><span class="Identifier">SurrealDB</span></a>, <a href="query_builder/models/surreal/surreal_types.html#SurrealConnections"><span class="Identifier">SurrealConnections</span></a>, <a href="query_builder/models/surreal/surreal_open.html#dbOpen,typeSurrealDB,string,string,string,string,string,int,int,int,string"><span class="Identifier">dbOpen</span></a>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:24 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1 @@
nimTitle connection connection.html module src/allographer/connection 0
File diff suppressed because it is too large Load Diff
+135
View File
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/env</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/env</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#isExistsMariadb" title="isExistsMariadb = true">isExistsMariadb</a></li>
<li><a class="reference" href="#isExistsMysql" title="isExistsMysql = true">isExistsMysql</a></li>
<li><a class="reference" href="#isExistsPostgres" title="isExistsPostgres = true">isExistsPostgres</a></li>
<li><a class="reference" href="#isExistsSqlite" title="isExistsSqlite = true">isExistsSqlite</a></li>
<li><a class="reference" href="#isExistsSurrealdb" title="isExistsSurrealdb = true">isExistsSurrealdb</a></li>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="isExistsMariadb">
<dt><pre><a href="env.html#isExistsMariadb"><span class="Identifier">isExistsMariadb</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsMysql">
<dt><pre><a href="env.html#isExistsMysql"><span class="Identifier">isExistsMysql</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsPostgres">
<dt><pre><a href="env.html#isExistsPostgres"><span class="Identifier">isExistsPostgres</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsSqlite">
<dt><pre><a href="env.html#isExistsSqlite"><span class="Identifier">isExistsSqlite</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
<div id="isExistsSurrealdb">
<dt><pre><a href="env.html#isExistsSurrealdb"><span class="Identifier">isExistsSurrealdb</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:32 UTC</small>
</div>
</div>
</div>
</body>
</html>
+6
View File
@@ -0,0 +1,6 @@
nimTitle env env.html module src/allographer/env 0
nim isExistsSqlite env.html#isExistsSqlite const isExistsSqlite 22
nim isExistsPostgres env.html#isExistsPostgres const isExistsPostgres 23
nim isExistsMysql env.html#isExistsMysql const isExistsMysql 24
nim isExistsMariadb env.html#isExistsMariadb const isExistsMariadb 25
nim isExistsSurrealdb env.html#isExistsSurrealdb const isExistsSurrealdb 26
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
nimTitle query_builder query_builder.html module src/allographer/query_builder 0
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/enums</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/enums</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#Collation" title="Collation = enum
None = &quot;&quot;, Collate = &quot;COLLATE&quot;, Numeric = &quot;NUMERIC&quot;">Collation</a></li>
<li><a class="reference" href="#Order" title="Order = enum
Asc = &quot;ASC&quot;, Desc = &quot;DESC&quot;">Order</a></li>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="Collation">
<dt><pre><a href="enums.html#Collation"><span class="Identifier">Collation</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">None</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">,</span> <span class="Identifier">Collate</span> <span class="Other">=</span> <span class="StringLit">&quot;COLLATE&quot;</span><span class="Other">,</span> <span class="Identifier">Numeric</span> <span class="Other">=</span> <span class="StringLit">&quot;NUMERIC&quot;</span></pre></dt>
<dd>
</dd>
</div>
<div id="Order">
<dt><pre><a href="enums.html#Order"><span class="Identifier">Order</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">Asc</span> <span class="Other">=</span> <span class="StringLit">&quot;ASC&quot;</span><span class="Other">,</span> <span class="Identifier">Desc</span> <span class="Other">=</span> <span class="StringLit">&quot;DESC&quot;</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:33 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,8 @@
nimTitle enums query_builder/enums.html module src/allographer/query_builder/enums 0
nim Asc query_builder/enums.html#Asc Order.Asc 1
nim Desc query_builder/enums.html#Desc Order.Desc 1
nim Order query_builder/enums.html#Order enum Order 1
nim None query_builder/enums.html#None Collation.None 5
nim Collate query_builder/enums.html#Collate Collation.Collate 5
nim Numeric query_builder/enums.html#Numeric Collation.Numeric 5
nim Collation query_builder/enums.html#Collation enum Collation 5
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/error</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/error</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#DbError" title="DbError = object of IOError">DbError</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">dbError
<li><a class="reference" href="#dbError%2Cstring" title="dbError(msg: string)">dbError(msg: string)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="DbError">
<dt><pre><a href="error.html#DbError"><span class="Identifier">DbError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <span class="Identifier">IOError</span></pre></dt>
<dd>
exception that is raised if a database error occurs
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="dbError-procs-all">
<div id="dbError,string">
<dt><pre><span class="Keyword">proc</span> <a href="#dbError%2Cstring"><span class="Identifier">dbError</span></a><span class="Other">(</span><span class="Identifier">msg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span class="Identifier">noreturn</span><span class="Other">,</span> <span class="Identifier">noinline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
raises an DbError exception with message <tt class="docutils literal"><span class="pre"><span class="Identifier">msg</span></span></tt>.
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:32 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,3 @@
nimTitle error query_builder/error.html module src/allographer/query_builder/error 0
nim DbError query_builder/error.html#DbError object DbError 2
nim dbError query_builder/error.html#dbError,string proc dbError(msg: string) 4
@@ -0,0 +1,274 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/database_url</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/database_url</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#DatabaseUrl" title="DatabaseUrl = distinct string">DatabaseUrl</a></li>
<li><a class="reference" href="#DatabaseUrlQuery" title="DatabaseUrlQuery = tuple[key, value: string]">DatabaseUrlQuery</a></li>
<li><a class="reference" href="#ParsedDatabaseUrl" title="ParsedDatabaseUrl = object
raw*: string
scheme*: string
username*: string
password*: string
hostname*: string
port*: int
hasPort*: bool
path*: string
query*: seq[DatabaseUrlQuery]">ParsedDatabaseUrl</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">$
<li><a class="reference" href="#%24%2CDatabaseUrl" title="`$`(value: DatabaseUrl): string">`$`(value: DatabaseUrl): string</a></li>
</ul>
<ul class="simple nested-toc-section">asDatabaseUrl
<li><a class="reference" href="#asDatabaseUrl%2Cstring" title="asDatabaseUrl(value: string): DatabaseUrl">asDatabaseUrl(value: string): DatabaseUrl</a></li>
</ul>
<ul class="simple nested-toc-section">databaseName
<li><a class="reference" href="#databaseName%2CParsedDatabaseUrl" title="databaseName(value: ParsedDatabaseUrl): string">databaseName(value: ParsedDatabaseUrl): string</a></li>
</ul>
<ul class="simple nested-toc-section">parseDatabaseUrl
<li><a class="reference" href="#parseDatabaseUrl%2CDatabaseUrl" title="parseDatabaseUrl(value: DatabaseUrl): ParsedDatabaseUrl">parseDatabaseUrl(value: DatabaseUrl): ParsedDatabaseUrl</a></li>
<li><a class="reference" href="#parseDatabaseUrl%2Cstring" title="parseDatabaseUrl(value: string): ParsedDatabaseUrl">parseDatabaseUrl(value: string): ParsedDatabaseUrl</a></li>
</ul>
<ul class="simple nested-toc-section">portOrDefault
<li><a class="reference" href="#portOrDefault%2CParsedDatabaseUrl%2Cint" title="portOrDefault(value: ParsedDatabaseUrl; defaultPort: int): int">portOrDefault(value: ParsedDatabaseUrl; defaultPort: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">requireDatabaseUrlScheme
<li><a class="reference" href="#requireDatabaseUrlScheme%2CParsedDatabaseUrl%2CopenArray%5Bstring%5D%2Cstring" title="requireDatabaseUrlScheme(value: ParsedDatabaseUrl;
expectedSchemes: openArray[string]; driverName: string)">requireDatabaseUrlScheme(value: ParsedDatabaseUrl;
expectedSchemes: openArray[string]; driverName: string)</a></li>
</ul>
<ul class="simple nested-toc-section">sqliteDatabasePath
<li><a class="reference" href="#sqliteDatabasePath%2CParsedDatabaseUrl" title="sqliteDatabasePath(value: ParsedDatabaseUrl): string">sqliteDatabasePath(value: ParsedDatabaseUrl): string</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="DatabaseUrl">
<dt><pre><a href="database_url.html#DatabaseUrl"><span class="Identifier">DatabaseUrl</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <span class="Identifier">string</span></pre></dt>
<dd>
</dd>
</div>
<div id="DatabaseUrlQuery">
<dt><pre><a href="database_url.html#DatabaseUrlQuery"><span class="Identifier">DatabaseUrlQuery</span></a> <span class="Other">=</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">key</span><span class="Other">,</span> <span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="ParsedDatabaseUrl">
<dt><pre><a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">raw</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">scheme</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">username</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">password</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">hostname</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">port</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">hasPort</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">path</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">query</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="database_url.html#DatabaseUrlQuery"><span class="Identifier">DatabaseUrlQuery</span></a><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="$-procs-all">
<div id="$,DatabaseUrl">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2CDatabaseUrl"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <a href="database_url.html#DatabaseUrl"><span class="Identifier">DatabaseUrl</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="asDatabaseUrl-procs-all">
<div id="asDatabaseUrl,string">
<dt><pre><span class="Keyword">proc</span> <a href="#asDatabaseUrl%2Cstring"><span class="Identifier">asDatabaseUrl</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="database_url.html#DatabaseUrl"><span class="Identifier">DatabaseUrl</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="databaseName-procs-all">
<div id="databaseName,ParsedDatabaseUrl">
<dt><pre><span class="Keyword">proc</span> <a href="#databaseName%2CParsedDatabaseUrl"><span class="Identifier">databaseName</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="parseDatabaseUrl-procs-all">
<div id="parseDatabaseUrl,DatabaseUrl">
<dt><pre><span class="Keyword">proc</span> <a href="#parseDatabaseUrl%2CDatabaseUrl"><span class="Identifier">parseDatabaseUrl</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <a href="database_url.html#DatabaseUrl"><span class="Identifier">DatabaseUrl</span></a><span class="Other">)</span><span class="Other">:</span> <a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="parseDatabaseUrl,string">
<dt><pre><span class="Keyword">proc</span> <a href="#parseDatabaseUrl%2Cstring"><span class="Identifier">parseDatabaseUrl</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="portOrDefault-procs-all">
<div id="portOrDefault,ParsedDatabaseUrl,int">
<dt><pre><span class="Keyword">proc</span> <a href="#portOrDefault%2CParsedDatabaseUrl%2Cint"><span class="Identifier">portOrDefault</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a><span class="Other">;</span> <span class="Identifier">defaultPort</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="requireDatabaseUrlScheme-procs-all">
<div id="requireDatabaseUrlScheme,ParsedDatabaseUrl,openArray[string],string">
<dt><pre><span class="Keyword">proc</span> <a href="#requireDatabaseUrlScheme%2CParsedDatabaseUrl%2CopenArray%5Bstring%5D%2Cstring"><span class="Identifier">requireDatabaseUrlScheme</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a><span class="Other">;</span>
<span class="Identifier">expectedSchemes</span><span class="Other">:</span> <span class="Identifier">openArray</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">driverName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="sqliteDatabasePath-procs-all">
<div id="sqliteDatabasePath,ParsedDatabaseUrl">
<dt><pre><span class="Keyword">proc</span> <a href="#sqliteDatabasePath%2CParsedDatabaseUrl"><span class="Identifier">sqliteDatabasePath</span></a><span class="Other">(</span><span class="Identifier">value</span><span class="Other">:</span> <a href="database_url.html#ParsedDatabaseUrl"><span class="Identifier">ParsedDatabaseUrl</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:23 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,13 @@
nimTitle database_url query_builder/libs/database_url.html module src/allographer/query_builder/libs/database_url 0
nim DatabaseUrl query_builder/libs/database_url.html#DatabaseUrl type DatabaseUrl 5
nim DatabaseUrlQuery query_builder/libs/database_url.html#DatabaseUrlQuery tuple DatabaseUrlQuery 7
nim ParsedDatabaseUrl query_builder/libs/database_url.html#ParsedDatabaseUrl object ParsedDatabaseUrl 9
nim asDatabaseUrl query_builder/libs/database_url.html#asDatabaseUrl,string proc asDatabaseUrl(value: string): DatabaseUrl 21
nim `$` query_builder/libs/database_url.html#$,DatabaseUrl proc `$`(value: DatabaseUrl): string 25
nim parseDatabaseUrl query_builder/libs/database_url.html#parseDatabaseUrl,string proc parseDatabaseUrl(value: string): ParsedDatabaseUrl 44
nim parseDatabaseUrl query_builder/libs/database_url.html#parseDatabaseUrl,DatabaseUrl proc parseDatabaseUrl(value: DatabaseUrl): ParsedDatabaseUrl 60
nim requireDatabaseUrlScheme query_builder/libs/database_url.html#requireDatabaseUrlScheme,ParsedDatabaseUrl,openArray[string],string proc requireDatabaseUrlScheme(value: ParsedDatabaseUrl;\n expectedSchemes: openArray[string]; driverName: string) 64
nim databaseName query_builder/libs/database_url.html#databaseName,ParsedDatabaseUrl proc databaseName(value: ParsedDatabaseUrl): string 82
nim sqliteDatabasePath query_builder/libs/database_url.html#sqliteDatabasePath,ParsedDatabaseUrl proc sqliteDatabasePath(value: ParsedDatabaseUrl): string 86
nim portOrDefault query_builder/libs/database_url.html#portOrDefault,ParsedDatabaseUrl,int proc portOrDefault(value: ParsedDatabaseUrl; defaultPort: int): int 97
nimgrp parsedatabaseurl query_builder/libs/database_url.html#parseDatabaseUrl-procs-all proc 44
@@ -0,0 +1,295 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/mariadb/mariadb_impl</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/mariadb/mariadb_impl</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">exec
<li><a class="reference" href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint" title="exec(db: PMySQL; query: string; args: JsonNode; columns: seq[seq[string]];
timeout: int): owned(Future[void])">exec(db: PMySQL; query: string; args: JsonNode; columns: seq[seq[string]];
timeout: int): owned(Future[void])</a></li>
<li><a class="reference" href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="exec(db: PMySQL; query: string; args: JsonNode; timeout: int): owned(
Future[void])">exec(db: PMySQL; query: string; args: JsonNode; timeout: int): owned(
Future[void])</a></li>
<li><a class="reference" href="#exec%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="exec(db: PMySQL; query: string; args: seq[string]; timeout: int): owned(
Future[void])">exec(db: PMySQL; query: string; args: seq[string]; timeout: int): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">execGetValue
<li><a class="reference" href="#execGetValue%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint" title="execGetValue(db: PMySQL; query: string; args: JsonNode;
columns: seq[seq[string]]; timeout: int): Future[
(seq[database_types.Row], DbRows)]">execGetValue(db: PMySQL; query: string; args: JsonNode;
columns: seq[seq[string]]; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">getColumns
<li><a class="reference" href="#getColumns%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="getColumns(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[string]]">getColumns(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">getColumnTypes
<li><a class="reference" href="#getColumnTypes%2CPMySQL%2Cstring%2Cstring%2Cint" title="getColumnTypes(db: PMySQL; database, table: string; timeout: int): Future[
seq[database_types.Row]]">getColumnTypes(db: PMySQL; database, table: string; timeout: int): Future[
seq[database_types.Row]]</a></li>
</ul>
<ul class="simple nested-toc-section">query
<li><a class="reference" href="#query%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="query(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]">query(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
<li><a class="reference" href="#query%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="query(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
(seq[database_types.Row], DbRows)]">query(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">queryPlain
<li><a class="reference" href="#queryPlain%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="queryPlain(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
seq[database_types.Row]]">queryPlain(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
seq[database_types.Row]]</a></li>
<li><a class="reference" href="#queryPlain%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="queryPlain(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[database_types.Row]]">queryPlain(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[database_types.Row]]</a></li>
</ul>
<ul class="simple nested-toc-section">rawQuery
<li><a class="reference" href="#rawQuery%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="rawQuery(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]">rawQuery(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="mariadb_rdb.html">mariadb_rdb</a>, <a class="reference external" href="mariadb_lib.html">mariadb_lib</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="exec-procs-all">
<div id="exec,PMySQL,string,JsonNode,seq[seq[string]],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="exec,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="exec,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="execGetValue-procs-all">
<div id="execGetValue,PMySQL,string,JsonNode,seq[seq[string]],int">
<dt><pre><span class="Keyword">proc</span> <a href="#execGetValue%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint"><span class="Identifier">execGetValue</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span>
<span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumns-procs-all">
<div id="getColumns,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumns%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">getColumns</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumnTypes-procs-all">
<div id="getColumnTypes,PMySQL,string,string,int">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumnTypes%2CPMySQL%2Cstring%2Cstring%2Cint"><span class="Identifier">getColumnTypes</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">database</span><span class="Other">,</span> <span class="Identifier">table</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="query-procs-all">
<div id="query,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="query,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="queryPlain-procs-all">
<div id="queryPlain,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#queryPlain%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">queryPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="queryPlain,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#queryPlain%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">queryPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span>
<span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="rawQuery-procs-all">
<div id="rawQuery,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#rawQuery%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">rawQuery</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:34 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,15 @@
nimTitle mariadb_impl query_builder/libs/mariadb/mariadb_impl.html module src/allographer/query_builder/libs/mariadb/mariadb_impl 0
nim query query_builder/libs/mariadb/mariadb_impl.html#query,PMySQL,string,seq[string],int proc query(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 178
nim query query_builder/libs/mariadb/mariadb_impl.html#query,PMySQL,string,JsonNode,int proc query(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 212
nim queryPlain query_builder/libs/mariadb/mariadb_impl.html#queryPlain,PMySQL,string,seq[string],int proc queryPlain(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[\n seq[database_types.Row]] 215
nim queryPlain query_builder/libs/mariadb/mariadb_impl.html#queryPlain,PMySQL,string,JsonNode,int proc queryPlain(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[\n seq[database_types.Row]] 241
nim exec query_builder/libs/mariadb/mariadb_impl.html#exec,PMySQL,string,seq[string],int proc exec(db: PMySQL; query: string; args: seq[string]; timeout: int): owned(\n Future[void]) 244
nim exec query_builder/libs/mariadb/mariadb_impl.html#exec,PMySQL,string,JsonNode,int proc exec(db: PMySQL; query: string; args: JsonNode; timeout: int): owned(\n Future[void]) 249
nim exec query_builder/libs/mariadb/mariadb_impl.html#exec,PMySQL,string,JsonNode,seq[seq[string]],int proc exec(db: PMySQL; query: string; args: JsonNode; columns: seq[seq[string]];\n timeout: int): owned(Future[void]) 252
nim execGetValue query_builder/libs/mariadb/mariadb_impl.html#execGetValue,PMySQL,string,JsonNode,seq[seq[string]],int proc execGetValue(db: PMySQL; query: string; args: JsonNode;\n columns: seq[seq[string]]; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 256
nim rawQuery query_builder/libs/mariadb/mariadb_impl.html#rawQuery,PMySQL,string,JsonNode,int proc rawQuery(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 291
nim getColumns query_builder/libs/mariadb/mariadb_impl.html#getColumns,PMySQL,string,seq[string],int proc getColumns(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[\n seq[string]] 294
nim getColumnTypes query_builder/libs/mariadb/mariadb_impl.html#getColumnTypes,PMySQL,string,string,int proc getColumnTypes(db: PMySQL; database, table: string; timeout: int): Future[\n seq[database_types.Row]] 317
nimgrp queryplain query_builder/libs/mariadb/mariadb_impl.html#queryPlain-procs-all proc 215
nimgrp query query_builder/libs/mariadb/mariadb_impl.html#query-procs-all proc 178
nimgrp exec query_builder/libs/mariadb/mariadb_impl.html#exec-procs-all proc 244
@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/mariadb/mariadb_lib</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/mariadb/mariadb_lib</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#MariadbParams" title="MariadbParams = seq[MariadbParamValue]">MariadbParams</a></li>
<li><a class="reference" href="#MariadbParamValue" title="MariadbParamValue = object
value*: string
isBinary*: bool">MariadbParamValue</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">dbError
<li><a class="reference" href="#dbError%2CPMySQL" title="dbError(db: PMySQL)">dbError(db: PMySQL)</a></li>
</ul>
<ul class="simple nested-toc-section">dbFormat
<li><a class="reference" href="#dbFormat%2CPMySQL%2Cstring%2CMariadbParams" title="dbFormat(conn: PMySQL; query: string; args: MariadbParams): string">dbFormat(conn: PMySQL; query: string; args: MariadbParams): string</a></li>
<li><a class="reference" href="#dbFormat%2Cstring%2Cseq%5Bstring%5D" title="dbFormat(formatstr: string; args: seq[string]): string">dbFormat(formatstr: string; args: seq[string]): string</a></li>
</ul>
<ul class="simple nested-toc-section">fromObj
<li><a class="reference" href="#fromObj%2CtypeMariadbParams%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D" title="fromObj(_: type MariadbParams; args: JsonNode; columns: seq[seq[string]]): MariadbParams">fromObj(_: type MariadbParams; args: JsonNode; columns: seq[seq[string]]): MariadbParams</a></li>
</ul>
<ul class="simple nested-toc-section">setColumnInfo
<li><a class="reference" href="#setColumnInfo%2CDbColumns%2CPRES%2Cint" title="setColumnInfo(columns: var DbColumns; res: PRES; L: int)">setColumnInfo(columns: var DbColumns; res: PRES; L: int)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="mariadb_rdb.html">mariadb_rdb</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="MariadbParams">
<dt><pre><a href="mariadb_lib.html#MariadbParams"><span class="Identifier">MariadbParams</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="mariadb_lib.html#MariadbParamValue"><span class="Identifier">MariadbParamValue</span></a><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="MariadbParamValue">
<dt><pre><a href="mariadb_lib.html#MariadbParamValue"><span class="Identifier">MariadbParamValue</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">value</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">isBinary</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="dbError-procs-all">
<div id="dbError,PMySQL">
<dt><pre><span class="Keyword">proc</span> <a href="#dbError%2CPMySQL"><span class="Identifier">dbError</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">)</span> {.<span class="Identifier">noreturn</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
raises a DbError exception.
</dd>
</div>
</div>
<div id="dbFormat-procs-all">
<div id="dbFormat,PMySQL,string,MariadbParams">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2CPMySQL%2Cstring%2CMariadbParams"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">conn</span><span class="Other">:</span> <a href="mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <a href="mariadb_lib.html#MariadbParams"><span class="Identifier">MariadbParams</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="dbFormat,string,seq[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2Cstring%2Cseq%5Bstring%5D"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="fromObj-procs-all">
<div id="fromObj,typeMariadbParams,JsonNode,seq[seq[string]]">
<dt><pre><span class="Keyword">proc</span> <a href="#fromObj%2CtypeMariadbParams%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D"><span class="Identifier">fromObj</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">MariadbParams</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_lib.html#MariadbParams"><span class="Identifier">MariadbParams</span></a></pre></dt>
<dd>
args is JArray <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span><span class="StringLit">&quot;id&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">1</span><span class="Punctuation">}</span><span class="Punctuation">,</span> <span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;name&quot;</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;alice&quot;</span><span class="Punctuation">}</span><span class="Punctuation">]</span></span></tt>
</dd>
</div>
</div>
<div id="setColumnInfo-procs-all">
<div id="setColumnInfo,DbColumns,PRES,int">
<dt><pre><span class="Keyword">proc</span> <a href="#setColumnInfo%2CDbColumns%2CPRES%2Cint"><span class="Identifier">setColumnInfo</span></a><span class="Other">(</span><span class="Identifier">columns</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbColumns"><span class="Identifier">DbColumns</span></a><span class="Other">;</span> <span class="Identifier">res</span><span class="Other">:</span> <a href="mariadb_rdb.html#PRES"><span class="Identifier">PRES</span></a><span class="Other">;</span> <span class="Identifier">L</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:34 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
nimTitle mariadb_lib query_builder/libs/mariadb/mariadb_lib.html module src/allographer/query_builder/libs/mariadb/mariadb_lib 0
nim dbError query_builder/libs/mariadb/mariadb_lib.html#dbError,PMySQL proc dbError(db: PMySQL) 12
nim setColumnInfo query_builder/libs/mariadb/mariadb_lib.html#setColumnInfo,DbColumns,PRES,int proc setColumnInfo(columns: var DbColumns; res: PRES; L: int) 80
nim dbFormat query_builder/libs/mariadb/mariadb_lib.html#dbFormat,string,seq[string] proc dbFormat(formatstr: string; args: seq[string]): string 120
nim MariadbParamValue query_builder/libs/mariadb/mariadb_lib.html#MariadbParamValue object MariadbParamValue 171
nim MariadbParams query_builder/libs/mariadb/mariadb_lib.html#MariadbParams type MariadbParams 175
nim fromObj query_builder/libs/mariadb/mariadb_lib.html#fromObj,typeMariadbParams,JsonNode,seq[seq[string]] proc fromObj(_: type MariadbParams; args: JsonNode; columns: seq[seq[string]]): MariadbParams 177
nim dbFormat query_builder/libs/mariadb/mariadb_lib.html#dbFormat,PMySQL,string,MariadbParams proc dbFormat(conn: PMySQL; query: string; args: MariadbParams): string 211
nimgrp dbformat query_builder/libs/mariadb/mariadb_lib.html#dbFormat-procs-all proc 120
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,156 @@
nimTitle mariadb_rdb query_builder/libs/mariadb/mariadb_rdb.html module src/allographer/query_builder/libs/mariadb/mariadb_rdb 0
nim false query_builder/libs/mariadb/mariadb_rdb.html#false my_bool.false 21
nim true query_builder/libs/mariadb/mariadb_rdb.html#true my_bool.true 21
nim my_bool query_builder/libs/mariadb/mariadb_rdb.html#my_bool type my_bool 21
nim Pmy_bool query_builder/libs/mariadb/mariadb_rdb.html#Pmy_bool type Pmy_bool 22
nim PVIO query_builder/libs/mariadb/mariadb_rdb.html#PVIO type PVIO 23
nim gptr query_builder/libs/mariadb/mariadb_rdb.html#gptr type gptr 25
nim my_socket query_builder/libs/mariadb/mariadb_rdb.html#my_socket type my_socket 27
nim PPByte query_builder/libs/mariadb/mariadb_rdb.html#PPByte type PPByte 28
nim cuint query_builder/libs/mariadb/mariadb_rdb.html#cuint type cuint 29
nim MYSQL_WAIT_READ query_builder/libs/mariadb/mariadb_rdb.html#MYSQL_WAIT_READ const MYSQL_WAIT_READ 44
nim MYSQL_WAIT_WRITE query_builder/libs/mariadb/mariadb_rdb.html#MYSQL_WAIT_WRITE const MYSQL_WAIT_WRITE 45
nim MYSQL_WAIT_EXCEPT query_builder/libs/mariadb/mariadb_rdb.html#MYSQL_WAIT_EXCEPT const MYSQL_WAIT_EXCEPT 46
nim MYSQL_WAIT_TIMEOUT query_builder/libs/mariadb/mariadb_rdb.html#MYSQL_WAIT_TIMEOUT const MYSQL_WAIT_TIMEOUT 47
nim SQLSTATE_LENGTH query_builder/libs/mariadb/mariadb_rdb.html#SQLSTATE_LENGTH const SQLSTATE_LENGTH 52
nim Enum_server_command query_builder/libs/mariadb/mariadb_rdb.html#Enum_server_command enum Enum_server_command 61
nim SCRAMBLE_LENGTH query_builder/libs/mariadb/mariadb_rdb.html#SCRAMBLE_LENGTH const SCRAMBLE_LENGTH 72
nim NOT_NULL_FLAG query_builder/libs/mariadb/mariadb_rdb.html#NOT_NULL_FLAG const NOT_NULL_FLAG 79
nim PRI_KEY_FLAG query_builder/libs/mariadb/mariadb_rdb.html#PRI_KEY_FLAG const PRI_KEY_FLAG 80
nim ERRMSG_SIZE query_builder/libs/mariadb/mariadb_rdb.html#ERRMSG_SIZE const ERRMSG_SIZE 145
nim St_net query_builder/libs/mariadb/mariadb_rdb.html#St_net object St_net 162
nim NET query_builder/libs/mariadb/mariadb_rdb.html#NET type NET 202
nim PNET query_builder/libs/mariadb/mariadb_rdb.html#PNET type PNET 203
nim TYPE_DECIMAL query_builder/libs/mariadb/mariadb_rdb.html#TYPE_DECIMAL Enum_field_types.TYPE_DECIMAL 210
nim TYPE_TINY query_builder/libs/mariadb/mariadb_rdb.html#TYPE_TINY Enum_field_types.TYPE_TINY 210
nim TYPE_SHORT query_builder/libs/mariadb/mariadb_rdb.html#TYPE_SHORT Enum_field_types.TYPE_SHORT 210
nim TYPE_LONG query_builder/libs/mariadb/mariadb_rdb.html#TYPE_LONG Enum_field_types.TYPE_LONG 210
nim TYPE_FLOAT query_builder/libs/mariadb/mariadb_rdb.html#TYPE_FLOAT Enum_field_types.TYPE_FLOAT 210
nim TYPE_DOUBLE query_builder/libs/mariadb/mariadb_rdb.html#TYPE_DOUBLE Enum_field_types.TYPE_DOUBLE 210
nim TYPE_NULL query_builder/libs/mariadb/mariadb_rdb.html#TYPE_NULL Enum_field_types.TYPE_NULL 210
nim TYPE_TIMESTAMP query_builder/libs/mariadb/mariadb_rdb.html#TYPE_TIMESTAMP Enum_field_types.TYPE_TIMESTAMP 210
nim TYPE_LONGLONG query_builder/libs/mariadb/mariadb_rdb.html#TYPE_LONGLONG Enum_field_types.TYPE_LONGLONG 210
nim TYPE_INT24 query_builder/libs/mariadb/mariadb_rdb.html#TYPE_INT24 Enum_field_types.TYPE_INT24 210
nim TYPE_DATE query_builder/libs/mariadb/mariadb_rdb.html#TYPE_DATE Enum_field_types.TYPE_DATE 210
nim TYPE_TIME query_builder/libs/mariadb/mariadb_rdb.html#TYPE_TIME Enum_field_types.TYPE_TIME 210
nim TYPE_DATETIME query_builder/libs/mariadb/mariadb_rdb.html#TYPE_DATETIME Enum_field_types.TYPE_DATETIME 210
nim TYPE_YEAR query_builder/libs/mariadb/mariadb_rdb.html#TYPE_YEAR Enum_field_types.TYPE_YEAR 210
nim TYPE_NEWDATE query_builder/libs/mariadb/mariadb_rdb.html#TYPE_NEWDATE Enum_field_types.TYPE_NEWDATE 210
nim TYPE_VARCHAR query_builder/libs/mariadb/mariadb_rdb.html#TYPE_VARCHAR Enum_field_types.TYPE_VARCHAR 210
nim TYPE_BIT query_builder/libs/mariadb/mariadb_rdb.html#TYPE_BIT Enum_field_types.TYPE_BIT 210
nim TYPE_NEWDECIMAL query_builder/libs/mariadb/mariadb_rdb.html#TYPE_NEWDECIMAL Enum_field_types.TYPE_NEWDECIMAL 210
nim TYPE_ENUM query_builder/libs/mariadb/mariadb_rdb.html#TYPE_ENUM Enum_field_types.TYPE_ENUM 210
nim TYPE_SET query_builder/libs/mariadb/mariadb_rdb.html#TYPE_SET Enum_field_types.TYPE_SET 210
nim TYPE_TINY_BLOB query_builder/libs/mariadb/mariadb_rdb.html#TYPE_TINY_BLOB Enum_field_types.TYPE_TINY_BLOB 210
nim TYPE_MEDIUM_BLOB query_builder/libs/mariadb/mariadb_rdb.html#TYPE_MEDIUM_BLOB Enum_field_types.TYPE_MEDIUM_BLOB 210
nim TYPE_LONG_BLOB query_builder/libs/mariadb/mariadb_rdb.html#TYPE_LONG_BLOB Enum_field_types.TYPE_LONG_BLOB 210
nim TYPE_BLOB query_builder/libs/mariadb/mariadb_rdb.html#TYPE_BLOB Enum_field_types.TYPE_BLOB 210
nim TYPE_VAR_STRING query_builder/libs/mariadb/mariadb_rdb.html#TYPE_VAR_STRING Enum_field_types.TYPE_VAR_STRING 210
nim TYPE_STRING query_builder/libs/mariadb/mariadb_rdb.html#TYPE_STRING Enum_field_types.TYPE_STRING 210
nim TYPE_GEOMETRY query_builder/libs/mariadb/mariadb_rdb.html#TYPE_GEOMETRY Enum_field_types.TYPE_GEOMETRY 210
nim Enum_field_types query_builder/libs/mariadb/mariadb_rdb.html#Enum_field_types enum Enum_field_types 210
nim St_mysql_field query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_field object St_mysql_field 407
nim FIELD query_builder/libs/mariadb/mariadb_rdb.html#FIELD type FIELD 430
nim PFIELD query_builder/libs/mariadb/mariadb_rdb.html#PFIELD type PFIELD 431
nim ROW query_builder/libs/mariadb/mariadb_rdb.html#ROW type ROW 433
nim my_ulonglong query_builder/libs/mariadb/mariadb_rdb.html#my_ulonglong type my_ulonglong 446
nim Pst_mysql_rows query_builder/libs/mariadb/mariadb_rdb.html#Pst_mysql_rows type Pst_mysql_rows 453
nim St_mysql_rows query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_rows object St_mysql_rows 454
nim ROWS query_builder/libs/mariadb/mariadb_rdb.html#ROWS type ROWS 459
nim PROWS query_builder/libs/mariadb/mariadb_rdb.html#PROWS type PROWS 460
nim Pst_used_mem query_builder/libs/mariadb/mariadb_rdb.html#Pst_used_mem type Pst_used_mem 471
nim St_used_mem query_builder/libs/mariadb/mariadb_rdb.html#St_used_mem object St_used_mem 472
nim USED_MEM query_builder/libs/mariadb/mariadb_rdb.html#USED_MEM type USED_MEM 477
nim PUSED_MEM query_builder/libs/mariadb/mariadb_rdb.html#PUSED_MEM type PUSED_MEM 478
nim St_mem_root query_builder/libs/mariadb/mariadb_rdb.html#St_mem_root object St_mem_root 480
nim MEM_ROOT query_builder/libs/mariadb/mariadb_rdb.html#MEM_ROOT type MEM_ROOT 492
nim St_mysql_data query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_data object St_mysql_data 499
nim DATA query_builder/libs/mariadb/mariadb_rdb.html#DATA type DATA 506
nim PDATA query_builder/libs/mariadb/mariadb_rdb.html#PDATA type PDATA 507
nim OPT_CONNECT_TIMEOUT query_builder/libs/mariadb/mariadb_rdb.html#OPT_CONNECT_TIMEOUT Option.OPT_CONNECT_TIMEOUT 508
nim OPT_COMPRESS query_builder/libs/mariadb/mariadb_rdb.html#OPT_COMPRESS Option.OPT_COMPRESS 508
nim OPT_NAMED_PIPE query_builder/libs/mariadb/mariadb_rdb.html#OPT_NAMED_PIPE Option.OPT_NAMED_PIPE 508
nim INIT_COMMAND query_builder/libs/mariadb/mariadb_rdb.html#INIT_COMMAND Option.INIT_COMMAND 508
nim READ_DEFAULT_FILE query_builder/libs/mariadb/mariadb_rdb.html#READ_DEFAULT_FILE Option.READ_DEFAULT_FILE 508
nim READ_DEFAULT_GROUP query_builder/libs/mariadb/mariadb_rdb.html#READ_DEFAULT_GROUP Option.READ_DEFAULT_GROUP 508
nim SET_CHARSET_DIR query_builder/libs/mariadb/mariadb_rdb.html#SET_CHARSET_DIR Option.SET_CHARSET_DIR 508
nim SET_CHARSET_NAME query_builder/libs/mariadb/mariadb_rdb.html#SET_CHARSET_NAME Option.SET_CHARSET_NAME 508
nim OPT_LOCAL_INFILE query_builder/libs/mariadb/mariadb_rdb.html#OPT_LOCAL_INFILE Option.OPT_LOCAL_INFILE 508
nim OPT_PROTOCOL query_builder/libs/mariadb/mariadb_rdb.html#OPT_PROTOCOL Option.OPT_PROTOCOL 508
nim SHARED_MEMORY_BASE_NAME query_builder/libs/mariadb/mariadb_rdb.html#SHARED_MEMORY_BASE_NAME Option.SHARED_MEMORY_BASE_NAME 508
nim OPT_READ_TIMEOUT query_builder/libs/mariadb/mariadb_rdb.html#OPT_READ_TIMEOUT Option.OPT_READ_TIMEOUT 508
nim OPT_WRITE_TIMEOUT query_builder/libs/mariadb/mariadb_rdb.html#OPT_WRITE_TIMEOUT Option.OPT_WRITE_TIMEOUT 508
nim OPT_USE_RESULT query_builder/libs/mariadb/mariadb_rdb.html#OPT_USE_RESULT Option.OPT_USE_RESULT 508
nim OPT_USE_REMOTE_CONNECTION query_builder/libs/mariadb/mariadb_rdb.html#OPT_USE_REMOTE_CONNECTION Option.OPT_USE_REMOTE_CONNECTION 508
nim OPT_USE_EMBEDDED_CONNECTION query_builder/libs/mariadb/mariadb_rdb.html#OPT_USE_EMBEDDED_CONNECTION Option.OPT_USE_EMBEDDED_CONNECTION 508
nim OPT_GUESS_CONNECTION query_builder/libs/mariadb/mariadb_rdb.html#OPT_GUESS_CONNECTION Option.OPT_GUESS_CONNECTION 508
nim SET_CLIENT_IP query_builder/libs/mariadb/mariadb_rdb.html#SET_CLIENT_IP Option.SET_CLIENT_IP 508
nim SECURE_AUTH query_builder/libs/mariadb/mariadb_rdb.html#SECURE_AUTH Option.SECURE_AUTH 508
nim REPORT_DATA_TRUNCATION query_builder/libs/mariadb/mariadb_rdb.html#REPORT_DATA_TRUNCATION Option.REPORT_DATA_TRUNCATION 508
nim OPT_RECONNECT query_builder/libs/mariadb/mariadb_rdb.html#OPT_RECONNECT Option.OPT_RECONNECT 508
nim MYSQL_OPT_NONBLOCK query_builder/libs/mariadb/mariadb_rdb.html#MYSQL_OPT_NONBLOCK Option.MYSQL_OPT_NONBLOCK 508
nim Option query_builder/libs/mariadb/mariadb_rdb.html#Option enum Option 508
nim St_dynamic_array query_builder/libs/mariadb/mariadb_rdb.html#St_dynamic_array object St_dynamic_array 528
nim Pst_dynamic_array query_builder/libs/mariadb/mariadb_rdb.html#Pst_dynamic_array type Pst_dynamic_array 536
nim St_mysql_options query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_options object St_mysql_options 538
nim STATUS_READY query_builder/libs/mariadb/mariadb_rdb.html#STATUS_READY Status.STATUS_READY 584
nim STATUS_GET_RESULT query_builder/libs/mariadb/mariadb_rdb.html#STATUS_GET_RESULT Status.STATUS_GET_RESULT 584
nim STATUS_USE_RESULT query_builder/libs/mariadb/mariadb_rdb.html#STATUS_USE_RESULT Status.STATUS_USE_RESULT 584
nim Status query_builder/libs/mariadb/mariadb_rdb.html#Status enum Status 584
nim Charset_info_st query_builder/libs/mariadb/mariadb_rdb.html#Charset_info_st object Charset_info_st 593
nim Pcharset_info_st query_builder/libs/mariadb/mariadb_rdb.html#Pcharset_info_st type Pcharset_info_st 622
nim Pst_mysql_methods query_builder/libs/mariadb/mariadb_rdb.html#Pst_mysql_methods type Pst_mysql_methods 636
nim Pst_mysql query_builder/libs/mariadb/mariadb_rdb.html#Pst_mysql type Pst_mysql 637
nim St_mysql query_builder/libs/mariadb/mariadb_rdb.html#St_mysql object St_mysql 638
nim MySQL query_builder/libs/mariadb/mariadb_rdb.html#MySQL type MySQL 684
nim PMySQL query_builder/libs/mariadb/mariadb_rdb.html#PMySQL type PMySQL 685
nim St_mysql_res query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_res object St_mysql_res 687
nim RES query_builder/libs/mariadb/mariadb_rdb.html#RES type RES 703
nim PRES query_builder/libs/mariadb/mariadb_rdb.html#PRES type PRES 704
nim Pst_mysql_stmt query_builder/libs/mariadb/mariadb_rdb.html#Pst_mysql_stmt type Pst_mysql_stmt 705
nim PSTMT query_builder/libs/mariadb/mariadb_rdb.html#PSTMT type PSTMT 706
nim St_mysql_methods query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_methods object St_mysql_methods 707
nim STMT_INIT_DONE query_builder/libs/mariadb/mariadb_rdb.html#STMT_INIT_DONE Enum_mysql_stmt_state.STMT_INIT_DONE 755
nim STMT_PREPARE_DONE query_builder/libs/mariadb/mariadb_rdb.html#STMT_PREPARE_DONE Enum_mysql_stmt_state.STMT_PREPARE_DONE 755
nim STMT_EXECUTE_DONE query_builder/libs/mariadb/mariadb_rdb.html#STMT_EXECUTE_DONE Enum_mysql_stmt_state.STMT_EXECUTE_DONE 755
nim STMT_FETCH_DONE query_builder/libs/mariadb/mariadb_rdb.html#STMT_FETCH_DONE Enum_mysql_stmt_state.STMT_FETCH_DONE 755
nim Enum_mysql_stmt_state query_builder/libs/mariadb/mariadb_rdb.html#Enum_mysql_stmt_state enum Enum_mysql_stmt_state 755
nim U query_builder/libs/mariadb/mariadb_rdb.html#U object U 779
nim St_mysql_bind query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_bind object St_mysql_bind 783
nim BIND query_builder/libs/mariadb/mariadb_rdb.html#BIND type BIND 804
nim PBIND query_builder/libs/mariadb/mariadb_rdb.html#PBIND type PBIND 805
nim St_mysql_stmt query_builder/libs/mariadb/mariadb_rdb.html#St_mysql_stmt object St_mysql_stmt 806
nim STMT query_builder/libs/mariadb/mariadb_rdb.html#STMT type STMT 834
nim num_fields query_builder/libs/mariadb/mariadb_rdb.html#num_fields,PRES proc num_fields(res: PRES): cuint 877
nim fetch_field_direct query_builder/libs/mariadb/mariadb_rdb.html#fetch_field_direct,PRES,cuint proc fetch_field_direct(res: PRES; fieldnr: cuint): PFIELD 880
nim error query_builder/libs/mariadb/mariadb_rdb.html#error,PMySQL proc error(MySQL: PMySQL): cstring 895
nim init query_builder/libs/mariadb/mariadb_rdb.html#init,PMySQL proc init(MySQL: PMySQL): PMySQL 905
nim init query_builder/libs/mariadb/mariadb_rdb.html#init,PMySQL_2 proc init(MySQL: var PMySQL) 906
nim real_connect query_builder/libs/mariadb/mariadb_rdb.html#real_connect,PMySQL,cstring,cstring,cstring,cstring,cuint,cstring,int proc real_connect(MySQL: PMySQL; host: cstring; user: cstring; passwd: cstring;\n db: cstring; port: cuint; unix_socket: cstring; clientflag: int): PMySQL 912
nim real_query query_builder/libs/mariadb/mariadb_rdb.html#real_query,PMySQL,cstring,int proc real_query(MySQL: PMySQL; q: cstring; len: int): cint 935
nim use_result query_builder/libs/mariadb/mariadb_rdb.html#use_result,PMySQL proc use_result(MySQL: PMySQL): PRES 939
nim ping query_builder/libs/mariadb/mariadb_rdb.html#ping,PMySQL proc ping(MySQL: PMySQL): cint 995
nim options query_builder/libs/mariadb/mariadb_rdb.html#options,PMySQL,Option,pointer proc options(MySQL: PMySQL; option: Option; arg: pointer): cint 1017
nim optionsv query_builder/libs/mariadb/mariadb_rdb.html#optionsv,PMySQL,Option proc optionsv(MySQL: PMySQL; option: Option): cint 1019
nim get_socket query_builder/libs/mariadb/mariadb_rdb.html#get_socket,PMySQL proc get_socket(MySQL: PMySQL): my_socket 1021
nim get_timeout_value query_builder/libs/mariadb/mariadb_rdb.html#get_timeout_value,PMySQL proc get_timeout_value(MySQL: PMySQL): cuint 1023
nim get_timeout_value_ms query_builder/libs/mariadb/mariadb_rdb.html#get_timeout_value_ms,PMySQL proc get_timeout_value_ms(MySQL: PMySQL): cuint 1025
nim free_result query_builder/libs/mariadb/mariadb_rdb.html#free_result,PRES proc free_result(result: PRES) 1027
nim free_result_start query_builder/libs/mariadb/mariadb_rdb.html#free_result_start,PRES proc free_result_start(result: PRES): cint 1029
nim free_result_cont query_builder/libs/mariadb/mariadb_rdb.html#free_result_cont,PRES,cint proc free_result_cont(result: PRES; status: cint): cint 1031
nim fetch_row query_builder/libs/mariadb/mariadb_rdb.html#fetch_row,PRES proc fetch_row(result: PRES): ROW 1039
nim fetch_row_start query_builder/libs/mariadb/mariadb_rdb.html#fetch_row_start,ptr.ROW,PRES proc fetch_row_start(ret: ptr ROW; result: PRES): cint 1041
nim fetch_row_cont query_builder/libs/mariadb/mariadb_rdb.html#fetch_row_cont,ptr.ROW,PRES,cint proc fetch_row_cont(ret: ptr ROW; result: PRES; status: cint): cint 1043
nim real_escape_string query_builder/libs/mariadb/mariadb_rdb.html#real_escape_string,PMySQL,cstring,cstring,int proc real_escape_string(MySQL: PMySQL; fto: cstring; from: cstring; len: int): int 1055
nim read_query_result query_builder/libs/mariadb/mariadb_rdb.html#read_query_result,PMySQL proc read_query_result(MySQL: PMySQL): my_bool 1077
nim read_query_result_start query_builder/libs/mariadb/mariadb_rdb.html#read_query_result_start,ptr.my_bool,PMySQL proc read_query_result_start(ret: ptr my_bool; MySQL: PMySQL): cint 1079
nim read_query_result_cont query_builder/libs/mariadb/mariadb_rdb.html#read_query_result_cont,ptr.my_bool,PMySQL,cint proc read_query_result_cont(ret: ptr my_bool; MySQL: PMySQL; status: cint): cint 1081
nim real_connect_start query_builder/libs/mariadb/mariadb_rdb.html#real_connect_start,ptr.PMySQL,PMySQL,cstring,cstring,cstring,cstring,cuint,cstring,culong proc real_connect_start(ret: ptr PMySQL; MySQL: PMySQL; host: cstring; user: cstring;\n passwd: cstring; db: cstring; port: cuint;\n unix_socket: cstring; clientflag: culong): cint 1083
nim real_connect_cont query_builder/libs/mariadb/mariadb_rdb.html#real_connect_cont,ptr.PMySQL,PMySQL,cint proc real_connect_cont(ret: ptr PMySQL; MySQL: PMySQL; status: cint): cint 1087
nim real_query_start query_builder/libs/mariadb/mariadb_rdb.html#real_query_start,ptr.cint,PMySQL,cstring,culong proc real_query_start(ret: ptr cint; MySQL: PMySQL; q: cstring; len: culong): cint 1089
nim real_query_cont query_builder/libs/mariadb/mariadb_rdb.html#real_query_cont,ptr.cint,PMySQL,cint proc real_query_cont(ret: ptr cint; MySQL: PMySQL; status: cint): cint 1091
nim store_result_start query_builder/libs/mariadb/mariadb_rdb.html#store_result_start,ptr.PRES,PMySQL proc store_result_start(ret: ptr PRES; MySQL: PMySQL): cint 1093
nim store_result_cont query_builder/libs/mariadb/mariadb_rdb.html#store_result_cont,ptr.PRES,PMySQL,cint proc store_result_cont(ret: ptr PRES; MySQL: PMySQL; status: cint): cint 1095
nim stmt_init query_builder/libs/mariadb/mariadb_rdb.html#stmt_init,PMySQL proc stmt_init(MySQL: PMySQL): PSTMT 1097
nim close query_builder/libs/mariadb/mariadb_rdb.html#close,PMySQL proc close(sock: PMySQL) 1158
nimgrp init query_builder/libs/mariadb/mariadb_rdb.html#init-procs-all proc 905
@@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/mysql/mysql_impl</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/mysql/mysql_impl</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">exec
<li><a class="reference" href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint" title="exec(db: PMySQL; query: string; args: JsonNode; columns: seq[seq[string]];
timeout: int): owned(Future[void])">exec(db: PMySQL; query: string; args: JsonNode; columns: seq[seq[string]];
timeout: int): owned(Future[void])</a></li>
<li><a class="reference" href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="exec(db: PMySQL; query: string; args: JsonNode; timeout: int): owned(
Future[void])">exec(db: PMySQL; query: string; args: JsonNode; timeout: int): owned(
Future[void])</a></li>
<li><a class="reference" href="#exec%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="exec(db: PMySQL; query: string; args: seq[string]; timeout: int): owned(
Future[void])">exec(db: PMySQL; query: string; args: seq[string]; timeout: int): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">execGetValue
<li><a class="reference" href="#execGetValue%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint" title="execGetValue(db: PMySQL; query: string; args: JsonNode;
columns: seq[seq[string]]; timeout: int): Future[
(seq[database_types.Row], DbRows)]">execGetValue(db: PMySQL; query: string; args: JsonNode;
columns: seq[seq[string]]; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">getColumns
<li><a class="reference" href="#getColumns%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="getColumns(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[string]]">getColumns(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">getColumnTypes
<li><a class="reference" href="#getColumnTypes%2CPMySQL%2Cstring%2Cstring%2Cint" title="getColumnTypes(db: PMySQL; database, table: string; timeout: int): Future[
seq[database_types.Row]]">getColumnTypes(db: PMySQL; database, table: string; timeout: int): Future[
seq[database_types.Row]]</a></li>
</ul>
<ul class="simple nested-toc-section">query
<li><a class="reference" href="#query%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="query(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]">query(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
<li><a class="reference" href="#query%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="query(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
(seq[database_types.Row], DbRows)]">query(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">queryPlain
<li><a class="reference" href="#queryPlain%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="queryPlain(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
seq[database_types.Row]]">queryPlain(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
seq[database_types.Row]]</a></li>
<li><a class="reference" href="#queryPlain%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint" title="queryPlain(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[database_types.Row]]">queryPlain(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[
seq[database_types.Row]]</a></li>
</ul>
<ul class="simple nested-toc-section">rawQuery
<li><a class="reference" href="#rawQuery%2CPMySQL%2Cstring%2CJsonNode%2Cint" title="rawQuery(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]">rawQuery(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[
(seq[database_types.Row], DbRows)]</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="mysql_rdb.html">mysql_rdb</a>, <a class="reference external" href="mysql_lib.html">mysql_lib</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="exec-procs-all">
<div id="exec,PMySQL,string,JsonNode,seq[seq[string]],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
args is JArray <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span><span class="StringLit">&quot;id&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">1</span><span class="Punctuation">}</span><span class="Punctuation">,</span> <span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;name&quot;</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;alice&quot;</span><span class="Punctuation">}</span><span class="Punctuation">]</span></span></tt>
</dd>
</div>
<div id="exec,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="exec,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="execGetValue-procs-all">
<div id="execGetValue,PMySQL,string,JsonNode,seq[seq[string]],int">
<dt><pre><span class="Keyword">proc</span> <a href="#execGetValue%2CPMySQL%2Cstring%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D%2Cint"><span class="Identifier">execGetValue</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span>
<span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumns-procs-all">
<div id="getColumns,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumns%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">getColumns</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumnTypes-procs-all">
<div id="getColumnTypes,PMySQL,string,string,int">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumnTypes%2CPMySQL%2Cstring%2Cstring%2Cint"><span class="Identifier">getColumnTypes</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">database</span><span class="Other">,</span> <span class="Identifier">table</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="query-procs-all">
<div id="query,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="query,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="queryPlain-procs-all">
<div id="queryPlain,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#queryPlain%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">queryPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="queryPlain,PMySQL,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#queryPlain%2CPMySQL%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">queryPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="rawQuery-procs-all">
<div id="rawQuery,PMySQL,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#rawQuery%2CPMySQL%2Cstring%2CJsonNode%2Cint"><span class="Identifier">rawQuery</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">database_types</span><span class="Other">.</span><span class="Identifier">Row</span><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:35 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,15 @@
nimTitle mysql_impl query_builder/libs/mysql/mysql_impl.html module src/allographer/query_builder/libs/mysql/mysql_impl 0
nim query query_builder/libs/mysql/mysql_impl.html#query,PMySQL,string,seq[string],int proc query(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 36
nim query query_builder/libs/mysql/mysql_impl.html#query,PMySQL,string,JsonNode,int proc query(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 70
nim queryPlain query_builder/libs/mysql/mysql_impl.html#queryPlain,PMySQL,string,seq[string],int proc queryPlain(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[\n seq[database_types.Row]] 92
nim queryPlain query_builder/libs/mysql/mysql_impl.html#queryPlain,PMySQL,string,JsonNode,int proc queryPlain(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[\n seq[database_types.Row]] 114
nim exec query_builder/libs/mysql/mysql_impl.html#exec,PMySQL,string,seq[string],int proc exec(db: PMySQL; query: string; args: seq[string]; timeout: int): owned(\n Future[void]) 136
nim exec query_builder/libs/mysql/mysql_impl.html#exec,PMySQL,string,JsonNode,int proc exec(db: PMySQL; query: string; args: JsonNode; timeout: int): owned(\n Future[void]) 142
nim exec query_builder/libs/mysql/mysql_impl.html#exec,PMySQL,string,JsonNode,seq[seq[string]],int proc exec(db: PMySQL; query: string; args: JsonNode; columns: seq[seq[string]];\n timeout: int): owned(Future[void]) 164
nim execGetValue query_builder/libs/mysql/mysql_impl.html#execGetValue,PMySQL,string,JsonNode,seq[seq[string]],int proc execGetValue(db: PMySQL; query: string; args: JsonNode;\n columns: seq[seq[string]]; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 172
nim rawQuery query_builder/libs/mysql/mysql_impl.html#rawQuery,PMySQL,string,JsonNode,int proc rawQuery(db: PMySQL; query: string; args: JsonNode; timeout: int): Future[\n (seq[database_types.Row], DbRows)] 207
nim getColumns query_builder/libs/mysql/mysql_impl.html#getColumns,PMySQL,string,seq[string],int proc getColumns(db: PMySQL; query: string; args: seq[string]; timeout: int): Future[\n seq[string]] 229
nim getColumnTypes query_builder/libs/mysql/mysql_impl.html#getColumnTypes,PMySQL,string,string,int proc getColumnTypes(db: PMySQL; database, table: string; timeout: int): Future[\n seq[database_types.Row]] 252
nimgrp queryplain query_builder/libs/mysql/mysql_impl.html#queryPlain-procs-all proc 92
nimgrp query query_builder/libs/mysql/mysql_impl.html#query-procs-all proc 36
nimgrp exec query_builder/libs/mysql/mysql_impl.html#exec-procs-all proc 136
@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/mysql/mysql_lib</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/mysql/mysql_lib</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#MysqlParams" title="MysqlParams = seq[MysqlParamValue]">MysqlParams</a></li>
<li><a class="reference" href="#MysqlParamValue" title="MysqlParamValue = object
value*: string
isBinary*: bool">MysqlParamValue</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">dbError
<li><a class="reference" href="#dbError%2CPMySQL" title="dbError(db: PMySQL)">dbError(db: PMySQL)</a></li>
</ul>
<ul class="simple nested-toc-section">dbFormat
<li><a class="reference" href="#dbFormat%2CPMySQL%2Cstring%2CMysqlParams" title="dbFormat(conn: PMySQL; query: string; args: MysqlParams): string">dbFormat(conn: PMySQL; query: string; args: MysqlParams): string</a></li>
<li><a class="reference" href="#dbFormat%2Cstring%2Cseq%5Bstring%5D" title="dbFormat(formatstr: string; args: seq[string]): string">dbFormat(formatstr: string; args: seq[string]): string</a></li>
</ul>
<ul class="simple nested-toc-section">fromObj
<li><a class="reference" href="#fromObj%2CtypeMysqlParams%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D" title="fromObj(_: type MysqlParams; args: JsonNode; columns: seq[seq[string]]): MysqlParams">fromObj(_: type MysqlParams; args: JsonNode; columns: seq[seq[string]]): MysqlParams</a></li>
</ul>
<ul class="simple nested-toc-section">setColumnInfo
<li><a class="reference" href="#setColumnInfo%2CDbColumns%2CPRES%2Cint" title="setColumnInfo(columns: var DbColumns; res: PRES; L: int)">setColumnInfo(columns: var DbColumns; res: PRES; L: int)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="mysql_rdb.html">mysql_rdb</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="MysqlParams">
<dt><pre><a href="mysql_lib.html#MysqlParams"><span class="Identifier">MysqlParams</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="mysql_lib.html#MysqlParamValue"><span class="Identifier">MysqlParamValue</span></a><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="MysqlParamValue">
<dt><pre><a href="mysql_lib.html#MysqlParamValue"><span class="Identifier">MysqlParamValue</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">value</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">isBinary</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="dbError-procs-all">
<div id="dbError,PMySQL">
<dt><pre><span class="Keyword">proc</span> <a href="#dbError%2CPMySQL"><span class="Identifier">dbError</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">)</span> {.<span class="Identifier">noreturn</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
raises a DbError exception.
</dd>
</div>
</div>
<div id="dbFormat-procs-all">
<div id="dbFormat,PMySQL,string,MysqlParams">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2CPMySQL%2Cstring%2CMysqlParams"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">conn</span><span class="Other">:</span> <a href="mysql_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <a href="mysql_lib.html#MysqlParams"><span class="Identifier">MysqlParams</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="dbFormat,string,seq[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2Cstring%2Cseq%5Bstring%5D"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="fromObj-procs-all">
<div id="fromObj,typeMysqlParams,JsonNode,seq[seq[string]]">
<dt><pre><span class="Keyword">proc</span> <a href="#fromObj%2CtypeMysqlParams%2CJsonNode%2Cseq%5Bseq%5Bstring%5D%5D"><span class="Identifier">fromObj</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">MysqlParams</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mysql_lib.html#MysqlParams"><span class="Identifier">MysqlParams</span></a></pre></dt>
<dd>
args is JArray <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span><span class="StringLit">&quot;id&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">1</span><span class="Punctuation">}</span><span class="Punctuation">,</span> <span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;name&quot;</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;alice&quot;</span><span class="Punctuation">}</span><span class="Punctuation">]</span></span></tt>
</dd>
</div>
</div>
<div id="setColumnInfo-procs-all">
<div id="setColumnInfo,DbColumns,PRES,int">
<dt><pre><span class="Keyword">proc</span> <a href="#setColumnInfo%2CDbColumns%2CPRES%2Cint"><span class="Identifier">setColumnInfo</span></a><span class="Other">(</span><span class="Identifier">columns</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbColumns"><span class="Identifier">DbColumns</span></a><span class="Other">;</span> <span class="Identifier">res</span><span class="Other">:</span> <a href="mysql_rdb.html#PRES"><span class="Identifier">PRES</span></a><span class="Other">;</span> <span class="Identifier">L</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:35 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
nimTitle mysql_lib query_builder/libs/mysql/mysql_lib.html module src/allographer/query_builder/libs/mysql/mysql_lib 0
nim dbError query_builder/libs/mysql/mysql_lib.html#dbError,PMySQL proc dbError(db: PMySQL) 12
nim setColumnInfo query_builder/libs/mysql/mysql_lib.html#setColumnInfo,DbColumns,PRES,int proc setColumnInfo(columns: var DbColumns; res: PRES; L: int) 80
nim dbFormat query_builder/libs/mysql/mysql_lib.html#dbFormat,string,seq[string] proc dbFormat(formatstr: string; args: seq[string]): string 120
nim MysqlParamValue query_builder/libs/mysql/mysql_lib.html#MysqlParamValue object MysqlParamValue 167
nim MysqlParams query_builder/libs/mysql/mysql_lib.html#MysqlParams type MysqlParams 171
nim fromObj query_builder/libs/mysql/mysql_lib.html#fromObj,typeMysqlParams,JsonNode,seq[seq[string]] proc fromObj(_: type MysqlParams; args: JsonNode; columns: seq[seq[string]]): MysqlParams 173
nim dbFormat query_builder/libs/mysql/mysql_lib.html#dbFormat,PMySQL,string,MysqlParams proc dbFormat(conn: PMySQL; query: string; args: MysqlParams): string 207
nimgrp dbformat query_builder/libs/mysql/mysql_lib.html#dbFormat-procs-all proc 120
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,133 @@
nimTitle mysql_rdb query_builder/libs/mysql/mysql_rdb.html module src/allographer/query_builder/libs/mysql/mysql_rdb 0
nim false query_builder/libs/mysql/mysql_rdb.html#false my_bool.false 21
nim true query_builder/libs/mysql/mysql_rdb.html#true my_bool.true 21
nim my_bool query_builder/libs/mysql/mysql_rdb.html#my_bool type my_bool 21
nim Pmy_bool query_builder/libs/mysql/mysql_rdb.html#Pmy_bool type Pmy_bool 22
nim PVIO query_builder/libs/mysql/mysql_rdb.html#PVIO type PVIO 23
nim gptr query_builder/libs/mysql/mysql_rdb.html#gptr type gptr 25
nim my_socket query_builder/libs/mysql/mysql_rdb.html#my_socket type my_socket 27
nim PPByte query_builder/libs/mysql/mysql_rdb.html#PPByte type PPByte 28
nim cuint query_builder/libs/mysql/mysql_rdb.html#cuint type cuint 29
nim SQLSTATE_LENGTH query_builder/libs/mysql/mysql_rdb.html#SQLSTATE_LENGTH const SQLSTATE_LENGTH 48
nim Enum_server_command query_builder/libs/mysql/mysql_rdb.html#Enum_server_command enum Enum_server_command 57
nim SCRAMBLE_LENGTH query_builder/libs/mysql/mysql_rdb.html#SCRAMBLE_LENGTH const SCRAMBLE_LENGTH 68
nim NOT_NULL_FLAG query_builder/libs/mysql/mysql_rdb.html#NOT_NULL_FLAG const NOT_NULL_FLAG 75
nim PRI_KEY_FLAG query_builder/libs/mysql/mysql_rdb.html#PRI_KEY_FLAG const PRI_KEY_FLAG 76
nim ERRMSG_SIZE query_builder/libs/mysql/mysql_rdb.html#ERRMSG_SIZE const ERRMSG_SIZE 141
nim St_net query_builder/libs/mysql/mysql_rdb.html#St_net object St_net 158
nim NET query_builder/libs/mysql/mysql_rdb.html#NET type NET 198
nim PNET query_builder/libs/mysql/mysql_rdb.html#PNET type PNET 199
nim TYPE_DECIMAL query_builder/libs/mysql/mysql_rdb.html#TYPE_DECIMAL Enum_field_types.TYPE_DECIMAL 206
nim TYPE_TINY query_builder/libs/mysql/mysql_rdb.html#TYPE_TINY Enum_field_types.TYPE_TINY 206
nim TYPE_SHORT query_builder/libs/mysql/mysql_rdb.html#TYPE_SHORT Enum_field_types.TYPE_SHORT 206
nim TYPE_LONG query_builder/libs/mysql/mysql_rdb.html#TYPE_LONG Enum_field_types.TYPE_LONG 206
nim TYPE_FLOAT query_builder/libs/mysql/mysql_rdb.html#TYPE_FLOAT Enum_field_types.TYPE_FLOAT 206
nim TYPE_DOUBLE query_builder/libs/mysql/mysql_rdb.html#TYPE_DOUBLE Enum_field_types.TYPE_DOUBLE 206
nim TYPE_NULL query_builder/libs/mysql/mysql_rdb.html#TYPE_NULL Enum_field_types.TYPE_NULL 206
nim TYPE_TIMESTAMP query_builder/libs/mysql/mysql_rdb.html#TYPE_TIMESTAMP Enum_field_types.TYPE_TIMESTAMP 206
nim TYPE_LONGLONG query_builder/libs/mysql/mysql_rdb.html#TYPE_LONGLONG Enum_field_types.TYPE_LONGLONG 206
nim TYPE_INT24 query_builder/libs/mysql/mysql_rdb.html#TYPE_INT24 Enum_field_types.TYPE_INT24 206
nim TYPE_DATE query_builder/libs/mysql/mysql_rdb.html#TYPE_DATE Enum_field_types.TYPE_DATE 206
nim TYPE_TIME query_builder/libs/mysql/mysql_rdb.html#TYPE_TIME Enum_field_types.TYPE_TIME 206
nim TYPE_DATETIME query_builder/libs/mysql/mysql_rdb.html#TYPE_DATETIME Enum_field_types.TYPE_DATETIME 206
nim TYPE_YEAR query_builder/libs/mysql/mysql_rdb.html#TYPE_YEAR Enum_field_types.TYPE_YEAR 206
nim TYPE_NEWDATE query_builder/libs/mysql/mysql_rdb.html#TYPE_NEWDATE Enum_field_types.TYPE_NEWDATE 206
nim TYPE_VARCHAR query_builder/libs/mysql/mysql_rdb.html#TYPE_VARCHAR Enum_field_types.TYPE_VARCHAR 206
nim TYPE_BIT query_builder/libs/mysql/mysql_rdb.html#TYPE_BIT Enum_field_types.TYPE_BIT 206
nim TYPE_NEWDECIMAL query_builder/libs/mysql/mysql_rdb.html#TYPE_NEWDECIMAL Enum_field_types.TYPE_NEWDECIMAL 206
nim TYPE_ENUM query_builder/libs/mysql/mysql_rdb.html#TYPE_ENUM Enum_field_types.TYPE_ENUM 206
nim TYPE_SET query_builder/libs/mysql/mysql_rdb.html#TYPE_SET Enum_field_types.TYPE_SET 206
nim TYPE_TINY_BLOB query_builder/libs/mysql/mysql_rdb.html#TYPE_TINY_BLOB Enum_field_types.TYPE_TINY_BLOB 206
nim TYPE_MEDIUM_BLOB query_builder/libs/mysql/mysql_rdb.html#TYPE_MEDIUM_BLOB Enum_field_types.TYPE_MEDIUM_BLOB 206
nim TYPE_LONG_BLOB query_builder/libs/mysql/mysql_rdb.html#TYPE_LONG_BLOB Enum_field_types.TYPE_LONG_BLOB 206
nim TYPE_BLOB query_builder/libs/mysql/mysql_rdb.html#TYPE_BLOB Enum_field_types.TYPE_BLOB 206
nim TYPE_VAR_STRING query_builder/libs/mysql/mysql_rdb.html#TYPE_VAR_STRING Enum_field_types.TYPE_VAR_STRING 206
nim TYPE_STRING query_builder/libs/mysql/mysql_rdb.html#TYPE_STRING Enum_field_types.TYPE_STRING 206
nim TYPE_GEOMETRY query_builder/libs/mysql/mysql_rdb.html#TYPE_GEOMETRY Enum_field_types.TYPE_GEOMETRY 206
nim Enum_field_types query_builder/libs/mysql/mysql_rdb.html#Enum_field_types enum Enum_field_types 206
nim St_mysql_field query_builder/libs/mysql/mysql_rdb.html#St_mysql_field object St_mysql_field 403
nim FIELD query_builder/libs/mysql/mysql_rdb.html#FIELD type FIELD 426
nim PFIELD query_builder/libs/mysql/mysql_rdb.html#PFIELD type PFIELD 427
nim ROW query_builder/libs/mysql/mysql_rdb.html#ROW type ROW 429
nim my_ulonglong query_builder/libs/mysql/mysql_rdb.html#my_ulonglong type my_ulonglong 442
nim Pst_mysql_rows query_builder/libs/mysql/mysql_rdb.html#Pst_mysql_rows type Pst_mysql_rows 449
nim St_mysql_rows query_builder/libs/mysql/mysql_rdb.html#St_mysql_rows object St_mysql_rows 450
nim ROWS query_builder/libs/mysql/mysql_rdb.html#ROWS type ROWS 455
nim PROWS query_builder/libs/mysql/mysql_rdb.html#PROWS type PROWS 456
nim Pst_used_mem query_builder/libs/mysql/mysql_rdb.html#Pst_used_mem type Pst_used_mem 467
nim St_used_mem query_builder/libs/mysql/mysql_rdb.html#St_used_mem object St_used_mem 468
nim USED_MEM query_builder/libs/mysql/mysql_rdb.html#USED_MEM type USED_MEM 473
nim PUSED_MEM query_builder/libs/mysql/mysql_rdb.html#PUSED_MEM type PUSED_MEM 474
nim St_mem_root query_builder/libs/mysql/mysql_rdb.html#St_mem_root object St_mem_root 476
nim MEM_ROOT query_builder/libs/mysql/mysql_rdb.html#MEM_ROOT type MEM_ROOT 488
nim St_mysql_data query_builder/libs/mysql/mysql_rdb.html#St_mysql_data object St_mysql_data 495
nim DATA query_builder/libs/mysql/mysql_rdb.html#DATA type DATA 502
nim PDATA query_builder/libs/mysql/mysql_rdb.html#PDATA type PDATA 503
nim OPT_CONNECT_TIMEOUT query_builder/libs/mysql/mysql_rdb.html#OPT_CONNECT_TIMEOUT Option.OPT_CONNECT_TIMEOUT 504
nim OPT_COMPRESS query_builder/libs/mysql/mysql_rdb.html#OPT_COMPRESS Option.OPT_COMPRESS 504
nim OPT_NAMED_PIPE query_builder/libs/mysql/mysql_rdb.html#OPT_NAMED_PIPE Option.OPT_NAMED_PIPE 504
nim INIT_COMMAND query_builder/libs/mysql/mysql_rdb.html#INIT_COMMAND Option.INIT_COMMAND 504
nim READ_DEFAULT_FILE query_builder/libs/mysql/mysql_rdb.html#READ_DEFAULT_FILE Option.READ_DEFAULT_FILE 504
nim READ_DEFAULT_GROUP query_builder/libs/mysql/mysql_rdb.html#READ_DEFAULT_GROUP Option.READ_DEFAULT_GROUP 504
nim SET_CHARSET_DIR query_builder/libs/mysql/mysql_rdb.html#SET_CHARSET_DIR Option.SET_CHARSET_DIR 504
nim SET_CHARSET_NAME query_builder/libs/mysql/mysql_rdb.html#SET_CHARSET_NAME Option.SET_CHARSET_NAME 504
nim OPT_LOCAL_INFILE query_builder/libs/mysql/mysql_rdb.html#OPT_LOCAL_INFILE Option.OPT_LOCAL_INFILE 504
nim OPT_PROTOCOL query_builder/libs/mysql/mysql_rdb.html#OPT_PROTOCOL Option.OPT_PROTOCOL 504
nim SHARED_MEMORY_BASE_NAME query_builder/libs/mysql/mysql_rdb.html#SHARED_MEMORY_BASE_NAME Option.SHARED_MEMORY_BASE_NAME 504
nim OPT_READ_TIMEOUT query_builder/libs/mysql/mysql_rdb.html#OPT_READ_TIMEOUT Option.OPT_READ_TIMEOUT 504
nim OPT_WRITE_TIMEOUT query_builder/libs/mysql/mysql_rdb.html#OPT_WRITE_TIMEOUT Option.OPT_WRITE_TIMEOUT 504
nim OPT_USE_RESULT query_builder/libs/mysql/mysql_rdb.html#OPT_USE_RESULT Option.OPT_USE_RESULT 504
nim OPT_USE_REMOTE_CONNECTION query_builder/libs/mysql/mysql_rdb.html#OPT_USE_REMOTE_CONNECTION Option.OPT_USE_REMOTE_CONNECTION 504
nim OPT_USE_EMBEDDED_CONNECTION query_builder/libs/mysql/mysql_rdb.html#OPT_USE_EMBEDDED_CONNECTION Option.OPT_USE_EMBEDDED_CONNECTION 504
nim OPT_GUESS_CONNECTION query_builder/libs/mysql/mysql_rdb.html#OPT_GUESS_CONNECTION Option.OPT_GUESS_CONNECTION 504
nim SET_CLIENT_IP query_builder/libs/mysql/mysql_rdb.html#SET_CLIENT_IP Option.SET_CLIENT_IP 504
nim SECURE_AUTH query_builder/libs/mysql/mysql_rdb.html#SECURE_AUTH Option.SECURE_AUTH 504
nim REPORT_DATA_TRUNCATION query_builder/libs/mysql/mysql_rdb.html#REPORT_DATA_TRUNCATION Option.REPORT_DATA_TRUNCATION 504
nim OPT_RECONNECT query_builder/libs/mysql/mysql_rdb.html#OPT_RECONNECT Option.OPT_RECONNECT 504
nim MYSQL_OPT_NONBLOCK query_builder/libs/mysql/mysql_rdb.html#MYSQL_OPT_NONBLOCK Option.MYSQL_OPT_NONBLOCK 504
nim Option query_builder/libs/mysql/mysql_rdb.html#Option enum Option 504
nim St_dynamic_array query_builder/libs/mysql/mysql_rdb.html#St_dynamic_array object St_dynamic_array 524
nim Pst_dynamic_array query_builder/libs/mysql/mysql_rdb.html#Pst_dynamic_array type Pst_dynamic_array 532
nim St_mysql_options query_builder/libs/mysql/mysql_rdb.html#St_mysql_options object St_mysql_options 534
nim STATUS_READY query_builder/libs/mysql/mysql_rdb.html#STATUS_READY Status.STATUS_READY 580
nim STATUS_GET_RESULT query_builder/libs/mysql/mysql_rdb.html#STATUS_GET_RESULT Status.STATUS_GET_RESULT 580
nim STATUS_USE_RESULT query_builder/libs/mysql/mysql_rdb.html#STATUS_USE_RESULT Status.STATUS_USE_RESULT 580
nim Status query_builder/libs/mysql/mysql_rdb.html#Status enum Status 580
nim Charset_info_st query_builder/libs/mysql/mysql_rdb.html#Charset_info_st object Charset_info_st 589
nim Pcharset_info_st query_builder/libs/mysql/mysql_rdb.html#Pcharset_info_st type Pcharset_info_st 618
nim Pst_mysql_methods query_builder/libs/mysql/mysql_rdb.html#Pst_mysql_methods type Pst_mysql_methods 632
nim Pst_mysql query_builder/libs/mysql/mysql_rdb.html#Pst_mysql type Pst_mysql 633
nim St_mysql query_builder/libs/mysql/mysql_rdb.html#St_mysql object St_mysql 634
nim PMySQL query_builder/libs/mysql/mysql_rdb.html#PMySQL type PMySQL 681
nim St_mysql_res query_builder/libs/mysql/mysql_rdb.html#St_mysql_res object St_mysql_res 683
nim RES query_builder/libs/mysql/mysql_rdb.html#RES type RES 699
nim PRES query_builder/libs/mysql/mysql_rdb.html#PRES type PRES 700
nim Pst_mysql_stmt query_builder/libs/mysql/mysql_rdb.html#Pst_mysql_stmt type Pst_mysql_stmt 701
nim PSTMT query_builder/libs/mysql/mysql_rdb.html#PSTMT type PSTMT 702
nim St_mysql_methods query_builder/libs/mysql/mysql_rdb.html#St_mysql_methods object St_mysql_methods 703
nim STMT_INIT_DONE query_builder/libs/mysql/mysql_rdb.html#STMT_INIT_DONE Enum_mysql_stmt_state.STMT_INIT_DONE 751
nim STMT_PREPARE_DONE query_builder/libs/mysql/mysql_rdb.html#STMT_PREPARE_DONE Enum_mysql_stmt_state.STMT_PREPARE_DONE 751
nim STMT_EXECUTE_DONE query_builder/libs/mysql/mysql_rdb.html#STMT_EXECUTE_DONE Enum_mysql_stmt_state.STMT_EXECUTE_DONE 751
nim STMT_FETCH_DONE query_builder/libs/mysql/mysql_rdb.html#STMT_FETCH_DONE Enum_mysql_stmt_state.STMT_FETCH_DONE 751
nim Enum_mysql_stmt_state query_builder/libs/mysql/mysql_rdb.html#Enum_mysql_stmt_state enum Enum_mysql_stmt_state 751
nim U query_builder/libs/mysql/mysql_rdb.html#U object U 775
nim St_mysql_bind query_builder/libs/mysql/mysql_rdb.html#St_mysql_bind object St_mysql_bind 779
nim BIND query_builder/libs/mysql/mysql_rdb.html#BIND type BIND 800
nim PBIND query_builder/libs/mysql/mysql_rdb.html#PBIND type PBIND 801
nim St_mysql_stmt query_builder/libs/mysql/mysql_rdb.html#St_mysql_stmt object St_mysql_stmt 802
nim STMT query_builder/libs/mysql/mysql_rdb.html#STMT type STMT 830
nim num_fields query_builder/libs/mysql/mysql_rdb.html#num_fields,PRES proc num_fields(res: PRES): cuint 873
nim fetch_field_direct query_builder/libs/mysql/mysql_rdb.html#fetch_field_direct,PRES,cuint proc fetch_field_direct(res: PRES; fieldnr: cuint): PFIELD 876
nim error query_builder/libs/mysql/mysql_rdb.html#error,PMySQL proc error(MySQL: PMySQL): cstring 891
nim init query_builder/libs/mysql/mysql_rdb.html#init,PMySQL proc init(MySQL: PMySQL): PMySQL 901
nim init query_builder/libs/mysql/mysql_rdb.html#init,PMySQL_2 proc init(MySQL: var PMySQL) 902
nim real_connect query_builder/libs/mysql/mysql_rdb.html#real_connect,PMySQL,cstring,cstring,cstring,cstring,cuint,cstring,int proc real_connect(MySQL: PMySQL; host: cstring; user: cstring; passwd: cstring;\n db: cstring; port: cuint; unix_socket: cstring; clientflag: int): PMySQL 908
nim real_query query_builder/libs/mysql/mysql_rdb.html#real_query,PMySQL,cstring,int proc real_query(MySQL: PMySQL; q: cstring; len: int): cint 931
nim use_result query_builder/libs/mysql/mysql_rdb.html#use_result,PMySQL proc use_result(MySQL: PMySQL): PRES 935
nim ping query_builder/libs/mysql/mysql_rdb.html#ping,PMySQL proc ping(MySQL: PMySQL): cint 991
nim free_result query_builder/libs/mysql/mysql_rdb.html#free_result,PRES proc free_result(result: PRES) 1013
nim fetch_row query_builder/libs/mysql/mysql_rdb.html#fetch_row,PRES proc fetch_row(result: PRES): ROW 1021
nim real_escape_string query_builder/libs/mysql/mysql_rdb.html#real_escape_string,PMySQL,cstring,cstring,int proc real_escape_string(MySQL: PMySQL; fto: cstring; from: cstring; len: int): int 1033
nim stmt_init query_builder/libs/mysql/mysql_rdb.html#stmt_init,PMySQL proc stmt_init(MySQL: PMySQL): PSTMT 1055
nim close query_builder/libs/mysql/mysql_rdb.html#close,PMySQL proc close(sock: PMySQL) 1116
nimgrp init query_builder/libs/mysql/mysql_rdb.html#init-procs-all proc 901
@@ -0,0 +1,323 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/postgres/postgres_impl</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/postgres/postgres_impl</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">exec
<li><a class="reference" href="#exec%2CPPGconn%2Cstring%2CJsonNode%2Cseq%5BRow%5D%2Cint" title="exec(db: PPGconn; query: string; args: JsonNode; columns: seq[Row]; timeout: int): owned(
Future[void])">exec(db: PPGconn; query: string; args: JsonNode; columns: seq[Row]; timeout: int): owned(
Future[void])</a></li>
<li><a class="reference" href="#exec%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="exec(db: PPGconn; query: string; args: seq[string]; timeout: int): owned(
Future[void])">exec(db: PPGconn; query: string; args: seq[string]; timeout: int): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">execGetValue
<li><a class="reference" href="#execGetValue%2CPPGconn%2Cstring%2CJsonNode%2Cseq%5BRow%5D%2Cint" title="execGetValue(db: PPGconn; query: string; args: JsonNode; columns: seq[Row];
timeout: int): Future[(seq[Row], DbRows)]">execGetValue(db: PPGconn; query: string; args: JsonNode; columns: seq[Row];
timeout: int): Future[(seq[Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">getColumns
<li><a class="reference" href="#getColumns%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="getColumns(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[
seq[string]]">getColumns(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[
seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">prepare
<li><a class="reference" href="#prepare%2CPPGconn%2Cstring%2Cint%2Cstring" title="prepare(db: PPGconn; query: string; timeout: int; stmtName: string): Future[int]">prepare(db: PPGconn; query: string; timeout: int; stmtName: string): Future[int]</a></li>
</ul>
<ul class="simple nested-toc-section">preparedExec
<li><a class="reference" href="#preparedExec%2CPPGconn%2Cseq%5Bstring%5D%2Cint%2Cint%2Cstring" title="preparedExec(db: PPGconn; args: seq[string]; nArgs: int; timeout: int;
stmtName: string): owned(Future[void])">preparedExec(db: PPGconn; args: seq[string]; nArgs: int; timeout: int;
stmtName: string): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">preparedQuery
<li><a class="reference" href="#preparedQuery%2CPPGconn%2Cseq%5Bstring%5D%2Cint%2Cint%2Cstring" title="preparedQuery(db: PPGconn; args: seq[string]; nArgs: int; timeout: int;
stmtName: string): Future[(seq[Row], DbRows)]">preparedQuery(db: PPGconn; args: seq[string]; nArgs: int; timeout: int;
stmtName: string): Future[(seq[Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">query
<li><a class="reference" href="#query%2CPPGconn%2Cstring%2CJsonNode%2Cint" title="query(db: PPGconn; query: string; args: JsonNode; timeout: int): Future[
(seq[Row], DbRows)]">query(db: PPGconn; query: string; args: JsonNode; timeout: int): Future[
(seq[Row], DbRows)]</a></li>
<li><a class="reference" href="#query%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="query(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[
(seq[Row], DbRows)]">query(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[
(seq[Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">queryPlain
<li><a class="reference" href="#queryPlain%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="queryPlain(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[
seq[Row]]">queryPlain(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[
seq[Row]]</a></li>
</ul>
<ul class="simple nested-toc-section">rawExec
<li><a class="reference" href="#rawExec%2CPPGconn%2Cstring%2CJsonNode%2Cint" title="rawExec(db: PPGconn; query: string; args: JsonNode; timeout: int): owned(
Future[void])">rawExec(db: PPGconn; query: string; args: JsonNode; timeout: int): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">rawQuery
<li><a class="reference" href="#rawQuery%2CPPGconn%2Cstring%2CJsonNode%2Cint" title="rawQuery(db: PPGconn; query: string; args: JsonNode; timeout: int): Future[
(seq[Row], DbRows)]">rawQuery(db: PPGconn; query: string; args: JsonNode; timeout: int): Future[
(seq[Row], DbRows)]</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"><a class="reference external" href="https://www.postgresql.jp/document/12/html/libpq-async.html">https://www.postgresql.jp/document/12/html/libpq-async.html</a></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="postgres_rdb.html">postgres_rdb</a>, <a class="reference external" href="postgres_lib.html">postgres_lib</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="exec-procs-all">
<div id="exec,PPGconn,string,JsonNode,seq[Row],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPPGconn%2Cstring%2CJsonNode%2Cseq%5BRow%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="exec,PPGconn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="execGetValue-procs-all">
<div id="execGetValue,PPGconn,string,JsonNode,seq[Row],int">
<dt><pre><span class="Keyword">proc</span> <a href="#execGetValue%2CPPGconn%2Cstring%2CJsonNode%2Cseq%5BRow%5D%2Cint"><span class="Identifier">execGetValue</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumns-procs-all">
<div id="getColumns,PPGconn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumns%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">getColumns</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="prepare-procs-all">
<div id="prepare,PPGconn,string,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#prepare%2CPPGconn%2Cstring%2Cint%2Cstring"><span class="Identifier">prepare</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">stmtName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">int</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="preparedExec-procs-all">
<div id="preparedExec,PPGconn,seq[string],int,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#preparedExec%2CPPGconn%2Cseq%5Bstring%5D%2Cint%2Cint%2Cstring"><span class="Identifier">preparedExec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">nArgs</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span>
<span class="Identifier">stmtName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="preparedQuery-procs-all">
<div id="preparedQuery,PPGconn,seq[string],int,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#preparedQuery%2CPPGconn%2Cseq%5Bstring%5D%2Cint%2Cint%2Cstring"><span class="Identifier">preparedQuery</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">nArgs</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span>
<span class="Identifier">stmtName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="query-procs-all">
<div id="query,PPGconn,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPPGconn%2Cstring%2CJsonNode%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="query,PPGconn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="queryPlain-procs-all">
<div id="queryPlain,PPGconn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#queryPlain%2CPPGconn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">queryPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="rawExec-procs-all">
<div id="rawExec,PPGconn,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#rawExec%2CPPGconn%2Cstring%2CJsonNode%2Cint"><span class="Identifier">rawExec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="rawQuery-procs-all">
<div id="rawQuery,PPGconn,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#rawQuery%2CPPGconn%2Cstring%2CJsonNode%2Cint"><span class="Identifier">rawQuery</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:33 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,15 @@
nimTitle postgres_impl query_builder/libs/postgres/postgres_impl.html module src/allographer/query_builder/libs/postgres/postgres_impl 0
nim query query_builder/libs/postgres/postgres_impl.html#query,PPGconn,string,JsonNode,int proc query(db: PPGconn; query: string; args: JsonNode; timeout: int): Future[\n (seq[Row], DbRows)] 132
nim exec query_builder/libs/postgres/postgres_impl.html#exec,PPGconn,string,JsonNode,seq[Row],int proc exec(db: PPGconn; query: string; args: JsonNode; columns: seq[Row]; timeout: int): owned(\n Future[void]) 160
nim execGetValue query_builder/libs/postgres/postgres_impl.html#execGetValue,PPGconn,string,JsonNode,seq[Row],int proc execGetValue(db: PPGconn; query: string; args: JsonNode; columns: seq[Row];\n timeout: int): Future[(seq[Row], DbRows)] 176
nim rawQuery query_builder/libs/postgres/postgres_impl.html#rawQuery,PPGconn,string,JsonNode,int proc rawQuery(db: PPGconn; query: string; args: JsonNode; timeout: int): Future[\n (seq[Row], DbRows)] 204
nim rawExec query_builder/libs/postgres/postgres_impl.html#rawExec,PPGconn,string,JsonNode,int proc rawExec(db: PPGconn; query: string; args: JsonNode; timeout: int): owned(\n Future[void]) 232
nim query query_builder/libs/postgres/postgres_impl.html#query,PPGconn,string,seq[string],int proc query(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[\n (seq[Row], DbRows)] 252
nim queryPlain query_builder/libs/postgres/postgres_impl.html#queryPlain,PPGconn,string,seq[string],int proc queryPlain(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[\n seq[Row]] 277
nim exec query_builder/libs/postgres/postgres_impl.html#exec,PPGconn,string,seq[string],int proc exec(db: PPGconn; query: string; args: seq[string]; timeout: int): owned(\n Future[void]) 300
nim getColumns query_builder/libs/postgres/postgres_impl.html#getColumns,PPGconn,string,seq[string],int proc getColumns(db: PPGconn; query: string; args: seq[string]; timeout: int): Future[\n seq[string]] 314
nim prepare query_builder/libs/postgres/postgres_impl.html#prepare,PPGconn,string,int,string proc prepare(db: PPGconn; query: string; timeout: int; stmtName: string): Future[int] 336
nim preparedQuery query_builder/libs/postgres/postgres_impl.html#preparedQuery,PPGconn,seq[string],int,int,string proc preparedQuery(db: PPGconn; args: seq[string]; nArgs: int; timeout: int;\n stmtName: string): Future[(seq[Row], DbRows)] 351
nim preparedExec query_builder/libs/postgres/postgres_impl.html#preparedExec,PPGconn,seq[string],int,int,string proc preparedExec(db: PPGconn; args: seq[string]; nArgs: int; timeout: int;\n stmtName: string): owned(Future[void]) 379
nimgrp query query_builder/libs/postgres/postgres_impl.html#query-procs-all proc 132
nimgrp exec query_builder/libs/postgres/postgres_impl.html#exec-procs-all proc 160
@@ -0,0 +1,314 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/postgres/postgres_lib</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/postgres/postgres_lib</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#PGParams" title="PGParams = object
nParams*: int32
values*: cstringArray
lengths*: seq[int32]
formats*: seq[int32]">PGParams</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">appendDbRowWithBaseColumns
<li><a class="reference" href="#appendDbRowWithBaseColumns%2CPPGresult%2CDbRows%2Cint32%2Cint32%2CDbColumns" title="appendDbRowWithBaseColumns(res: PPGresult; dbRows: var DbRows;
line, cols: int32; base: DbColumns)">appendDbRowWithBaseColumns(res: PPGresult; dbRows: var DbRows;
line, cols: int32; base: DbColumns)</a></li>
</ul>
<ul class="simple nested-toc-section">buildBaseDbColumns
<li><a class="reference" href="#buildBaseDbColumns%2CPPGresult%2Cint32" title="buildBaseDbColumns(res: PPGresult; cols: int32): DbColumns">buildBaseDbColumns(res: PPGresult; cols: int32): DbColumns</a></li>
</ul>
<ul class="simple nested-toc-section">checkError
<li><a class="reference" href="#checkError%2CPPGconn" title="checkError(db: PPGconn)">checkError(db: PPGconn)</a></li>
</ul>
<ul class="simple nested-toc-section">dbError
<li><a class="reference" href="#dbError%2CPPGconn" title="dbError(db: PPGconn)">dbError(db: PPGconn)</a></li>
</ul>
<ul class="simple nested-toc-section">dbFormat
<li><a class="reference" href="#dbFormat%2Cstring%2Cvarargs%5Bstring%5D" title="dbFormat(formatstr: string; args: varargs[string]): string">dbFormat(formatstr: string; args: varargs[string]): string</a></li>
</ul>
<ul class="simple nested-toc-section">fromArray
<li><a class="reference" href="#fromArray%2CtypePGParams%2CJsonNode" title="fromArray(_: type PGParams; args: JsonNode): PGParams">fromArray(_: type PGParams; args: JsonNode): PGParams</a></li>
</ul>
<ul class="simple nested-toc-section">fromObjArray
<li><a class="reference" href="#fromObjArray%2CtypePGParams%2CJsonNode" title="fromObjArray(_: type PGParams; args: JsonNode): PGParams">fromObjArray(_: type PGParams; args: JsonNode): PGParams</a></li>
<li><a class="reference" href="#fromObjArray%2CtypePGParams%2CJsonNode%2Cseq%5BRow%5D" title="fromObjArray(_: type PGParams; args: JsonNode; columns: seq[Row]): PGParams">fromObjArray(_: type PGParams; args: JsonNode; columns: seq[Row]): PGParams</a></li>
</ul>
<ul class="simple nested-toc-section">newRow
<li><a class="reference" href="#newRow%2Cint" title="newRow(L: int): Row">newRow(L: int): Row</a></li>
</ul>
<ul class="simple nested-toc-section">questionToDaller
<li><a class="reference" href="#questionToDaller%2Cstring" title="questionToDaller(s: string): string">questionToDaller(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">setColumnInfo
<li><a class="reference" href="#setColumnInfo%2CPPGresult%2CDbRows%2Cint32%2Cint32" title="setColumnInfo(res: PPGresult; dbRows: var DbRows; line, cols: int32)">setColumnInfo(res: PPGresult; dbRows: var DbRows; line, cols: int32)</a></li>
</ul>
<ul class="simple nested-toc-section">setRow
<li><a class="reference" href="#setRow%2CPPGresult%2CRow%2Cint32%2Cint32" title="setRow(res: PPGresult; r: var Row; line, cols: int32)">setRow(res: PPGresult; r: var Row; line, cols: int32)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="postgres_rdb.html">postgres_rdb</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="PGParams">
<dt><pre><a href="postgres_lib.html#PGParams"><span class="Identifier">PGParams</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">nParams</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int32</span>
<span class="Identifier">values</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">cstringArray</span>
<span class="Identifier">lengths</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int32</span><span class="Other">]</span>
<span class="Identifier">formats</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int32</span><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="appendDbRowWithBaseColumns-procs-all">
<div id="appendDbRowWithBaseColumns,PPGresult,DbRows,int32,int32,DbColumns">
<dt><pre><span class="Keyword">proc</span> <a href="#appendDbRowWithBaseColumns%2CPPGresult%2CDbRows%2Cint32%2Cint32%2CDbColumns"><span class="Identifier">appendDbRowWithBaseColumns</span></a><span class="Other">(</span><span class="Identifier">res</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGresult"><span class="Identifier">PPGresult</span></a><span class="Other">;</span> <span class="Identifier">dbRows</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">;</span>
<span class="Identifier">line</span><span class="Other">,</span> <span class="Identifier">cols</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">base</span><span class="Other">:</span> <a href="../../models/database_types.html#DbColumns"><span class="Identifier">DbColumns</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="buildBaseDbColumns-procs-all">
<div id="buildBaseDbColumns,PPGresult,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#buildBaseDbColumns%2CPPGresult%2Cint32"><span class="Identifier">buildBaseDbColumns</span></a><span class="Other">(</span><span class="Identifier">res</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGresult"><span class="Identifier">PPGresult</span></a><span class="Other">;</span> <span class="Identifier">cols</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <a href="../../models/database_types.html#DbColumns"><span class="Identifier">DbColumns</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="checkError-procs-all">
<div id="checkError,PPGconn">
<dt><pre><span class="Keyword">proc</span> <a href="#checkError%2CPPGconn"><span class="Identifier">checkError</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Raises a DbError exception.
</dd>
</div>
</div>
<div id="dbError-procs-all">
<div id="dbError,PPGconn">
<dt><pre><span class="Keyword">proc</span> <a href="#dbError%2CPPGconn"><span class="Identifier">dbError</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGconn"><span class="Identifier">PPGconn</span></a><span class="Other">)</span> {.<span class="Identifier">noreturn</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
raises a DbError exception.
</dd>
</div>
</div>
<div id="dbFormat-procs-all">
<div id="dbFormat,string,varargs[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2Cstring%2Cvarargs%5Bstring%5D"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="fromArray-procs-all">
<div id="fromArray,typePGParams,JsonNode">
<dt><pre><span class="Keyword">proc</span> <a href="#fromArray%2CtypePGParams%2CJsonNode"><span class="Identifier">fromArray</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">PGParams</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">)</span><span class="Other">:</span> <a href="postgres_lib.html#PGParams"><span class="Identifier">PGParams</span></a></pre></dt>
<dd>
<tt class="docutils literal"><span class="pre"><span class="Identifier">args</span></span></tt> is JArray <tt class="docutils literal"><span class="pre"><span class="Punctuation">{</span><span class="Identifier">true</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="FloatNumber">1.1</span><span class="Punctuation">,</span> <span class="StringLit">&quot;alice&quot;</span><span class="Punctuation">}</span></span></tt>
</dd>
</div>
</div>
<div id="fromObjArray-procs-all">
<div id="fromObjArray,typePGParams,JsonNode">
<dt><pre><span class="Keyword">proc</span> <a href="#fromObjArray%2CtypePGParams%2CJsonNode"><span class="Identifier">fromObjArray</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">PGParams</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">)</span><span class="Other">:</span> <a href="postgres_lib.html#PGParams"><span class="Identifier">PGParams</span></a></pre></dt>
<dd>
<tt class="docutils literal"><span class="pre"><span class="Identifier">args</span></span></tt> is JArray <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;bool&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="Identifier">true</span><span class="Punctuation">}</span><span class="Punctuation">,</span><span class="Punctuation">{</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;int&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;value&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">1</span><span class="Punctuation">}</span><span class="Punctuation">]</span></span></tt>
</dd>
</div>
<div id="fromObjArray,typePGParams,JsonNode,seq[Row]">
<dt><pre><span class="Keyword">proc</span> <a href="#fromObjArray%2CtypePGParams%2CJsonNode%2Cseq%5BRow%5D"><span class="Identifier">fromObjArray</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">PGParams</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="postgres_lib.html#PGParams"><span class="Identifier">PGParams</span></a></pre></dt>
<dd>
</dd>
</div>
</div>
<div id="newRow-procs-all">
<div id="newRow,int">
<dt><pre><span class="Keyword">proc</span> <a href="#newRow%2Cint"><span class="Identifier">newRow</span></a><span class="Other">(</span><span class="Identifier">L</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="questionToDaller-procs-all">
<div id="questionToDaller,string">
<dt><pre><span class="Keyword">proc</span> <a href="#questionToDaller%2Cstring"><span class="Identifier">questionToDaller</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>from <tt class="docutils literal"><span class="pre"><span class="Identifier">UPDATE</span> <span class="Identifier">user</span> <span class="Identifier">SET</span> <span class="Identifier">name</span> <span class="Operator">=</span> <span class="Operator">?</span><span class="Punctuation">,</span> <span class="Identifier">email</span> <span class="Operator">=</span> <span class="Operator">?</span> <span class="Identifier">WHERE</span> <span class="Identifier">id</span> <span class="Operator">=</span> <span class="Operator">?</span></span></tt></p>
<p>to <tt class="docutils literal"><span class="pre"><span class="Identifier">UPDATE</span> <span class="Identifier">user</span> <span class="Identifier">SET</span> <span class="Identifier">name</span> <span class="Operator">=</span> <span class="Operator">$</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="Identifier">email</span> <span class="Operator">=</span> <span class="Operator">$</span><span class="DecNumber">2</span> <span class="Identifier">WHERE</span> <span class="Identifier">id</span> <span class="Operator">=</span> <span class="Operator">$</span><span class="DecNumber">3</span></span></tt></p>
</dd>
</div>
</div>
<div id="setColumnInfo-procs-all">
<div id="setColumnInfo,PPGresult,DbRows,int32,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#setColumnInfo%2CPPGresult%2CDbRows%2Cint32%2Cint32"><span class="Identifier">setColumnInfo</span></a><span class="Other">(</span><span class="Identifier">res</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGresult"><span class="Identifier">PPGresult</span></a><span class="Other">;</span> <span class="Identifier">dbRows</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">;</span> <span class="Identifier">line</span><span class="Other">,</span> <span class="Identifier">cols</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="setRow-procs-all">
<div id="setRow,PPGresult,Row,int32,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#setRow%2CPPGresult%2CRow%2Cint32%2Cint32"><span class="Identifier">setRow</span></a><span class="Other">(</span><span class="Identifier">res</span><span class="Other">:</span> <a href="postgres_rdb.html#PPGresult"><span class="Identifier">PPGresult</span></a><span class="Other">;</span> <span class="Identifier">r</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">;</span> <span class="Identifier">line</span><span class="Other">,</span> <span class="Identifier">cols</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:33 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,15 @@
nimTitle postgres_lib query_builder/libs/postgres/postgres_lib.html module src/allographer/query_builder/libs/postgres/postgres_lib 0
nim dbError query_builder/libs/postgres/postgres_lib.html#dbError,PPGconn proc dbError(db: PPGconn) 8
nim checkError query_builder/libs/postgres/postgres_lib.html#checkError,PPGconn proc checkError(db: PPGconn) 15
nim buildBaseDbColumns query_builder/libs/postgres/postgres_lib.html#buildBaseDbColumns,PPGresult,int32 proc buildBaseDbColumns(res: PPGresult; cols: int32): DbColumns 153
nim appendDbRowWithBaseColumns query_builder/libs/postgres/postgres_lib.html#appendDbRowWithBaseColumns,PPGresult,DbRows,int32,int32,DbColumns proc appendDbRowWithBaseColumns(res: PPGresult; dbRows: var DbRows;\n line, cols: int32; base: DbColumns) 161
nim setColumnInfo query_builder/libs/postgres/postgres_lib.html#setColumnInfo,PPGresult,DbRows,int32,int32 proc setColumnInfo(res: PPGresult; dbRows: var DbRows; line, cols: int32) 168
nim newRow query_builder/libs/postgres/postgres_lib.html#newRow,int proc newRow(L: int): Row 172
nim setRow query_builder/libs/postgres/postgres_lib.html#setRow,PPGresult,Row,int32,int32 proc setRow(res: PPGresult; r: var Row; line, cols: int32) 176
nim dbFormat query_builder/libs/postgres/postgres_lib.html#dbFormat,string,varargs[string] proc dbFormat(formatstr: string; args: varargs[string]): string 207
nim questionToDaller query_builder/libs/postgres/postgres_lib.html#questionToDaller,string proc questionToDaller(s: string): string 226
nim PGParams query_builder/libs/postgres/postgres_lib.html#PGParams object PGParams 245
nim fromObjArray query_builder/libs/postgres/postgres_lib.html#fromObjArray,typePGParams,JsonNode,seq[Row] proc fromObjArray(_: type PGParams; args: JsonNode; columns: seq[Row]): PGParams 307
nim fromObjArray query_builder/libs/postgres/postgres_lib.html#fromObjArray,typePGParams,JsonNode proc fromObjArray(_: type PGParams; args: JsonNode): PGParams 313
nim fromArray query_builder/libs/postgres/postgres_lib.html#fromArray,typePGParams,JsonNode proc fromArray(_: type PGParams; args: JsonNode): PGParams 321
nimgrp fromobjarray query_builder/libs/postgres/postgres_lib.html#fromObjArray-procs-all proc 307
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,187 @@
nimTitle postgres_rdb query_builder/libs/postgres/postgres_rdb.html module src/allographer/query_builder/libs/postgres/postgres_rdb 0
nim POid query_builder/libs/postgres/postgres_rdb.html#POid type POid 14
nim Oid query_builder/libs/postgres/postgres_rdb.html#Oid type Oid 15
nim ERROR_MSG_LENGTH query_builder/libs/postgres/postgres_rdb.html#ERROR_MSG_LENGTH const ERROR_MSG_LENGTH 18
nim CMDSTATUS_LEN query_builder/libs/postgres/postgres_rdb.html#CMDSTATUS_LEN const CMDSTATUS_LEN 19
nim SockAddr query_builder/libs/postgres/postgres_rdb.html#SockAddr type SockAddr 22
nim PGresAttDesc query_builder/libs/postgres/postgres_rdb.html#PGresAttDesc object PGresAttDesc 23
nim PPGresAttDesc query_builder/libs/postgres/postgres_rdb.html#PPGresAttDesc type PPGresAttDesc 28
nim PPPGresAttDesc query_builder/libs/postgres/postgres_rdb.html#PPPGresAttDesc type PPPGresAttDesc 29
nim PGresAttValue query_builder/libs/postgres/postgres_rdb.html#PGresAttValue object PGresAttValue 30
nim PPGresAttValue query_builder/libs/postgres/postgres_rdb.html#PPGresAttValue type PPGresAttValue 34
nim PPPGresAttValue query_builder/libs/postgres/postgres_rdb.html#PPPGresAttValue type PPPGresAttValue 35
nim PExecStatusType query_builder/libs/postgres/postgres_rdb.html#PExecStatusType type PExecStatusType 36
nim PGRES_EMPTY_QUERY query_builder/libs/postgres/postgres_rdb.html#PGRES_EMPTY_QUERY ExecStatusType.PGRES_EMPTY_QUERY 37
nim PGRES_COMMAND_OK query_builder/libs/postgres/postgres_rdb.html#PGRES_COMMAND_OK ExecStatusType.PGRES_COMMAND_OK 37
nim PGRES_TUPLES_OK query_builder/libs/postgres/postgres_rdb.html#PGRES_TUPLES_OK ExecStatusType.PGRES_TUPLES_OK 37
nim PGRES_COPY_OUT query_builder/libs/postgres/postgres_rdb.html#PGRES_COPY_OUT ExecStatusType.PGRES_COPY_OUT 37
nim PGRES_COPY_IN query_builder/libs/postgres/postgres_rdb.html#PGRES_COPY_IN ExecStatusType.PGRES_COPY_IN 37
nim PGRES_BAD_RESPONSE query_builder/libs/postgres/postgres_rdb.html#PGRES_BAD_RESPONSE ExecStatusType.PGRES_BAD_RESPONSE 37
nim PGRES_NONFATAL_ERROR query_builder/libs/postgres/postgres_rdb.html#PGRES_NONFATAL_ERROR ExecStatusType.PGRES_NONFATAL_ERROR 37
nim PGRES_FATAL_ERROR query_builder/libs/postgres/postgres_rdb.html#PGRES_FATAL_ERROR ExecStatusType.PGRES_FATAL_ERROR 37
nim PGRES_COPY_BOTH query_builder/libs/postgres/postgres_rdb.html#PGRES_COPY_BOTH ExecStatusType.PGRES_COPY_BOTH 37
nim PGRES_SINGLE_TUPLE query_builder/libs/postgres/postgres_rdb.html#PGRES_SINGLE_TUPLE ExecStatusType.PGRES_SINGLE_TUPLE 37
nim ExecStatusType query_builder/libs/postgres/postgres_rdb.html#ExecStatusType enum ExecStatusType 37
nim PGlobjfuncs query_builder/libs/postgres/postgres_rdb.html#PGlobjfuncs object PGlobjfuncs 41
nim PPGlobjfuncs query_builder/libs/postgres/postgres_rdb.html#PPGlobjfuncs type PPGlobjfuncs 51
nim PConnStatusType query_builder/libs/postgres/postgres_rdb.html#PConnStatusType type PConnStatusType 52
nim CONNECTION_OK query_builder/libs/postgres/postgres_rdb.html#CONNECTION_OK ConnStatusType.CONNECTION_OK 53
nim CONNECTION_BAD query_builder/libs/postgres/postgres_rdb.html#CONNECTION_BAD ConnStatusType.CONNECTION_BAD 53
nim CONNECTION_STARTED query_builder/libs/postgres/postgres_rdb.html#CONNECTION_STARTED ConnStatusType.CONNECTION_STARTED 53
nim CONNECTION_MADE query_builder/libs/postgres/postgres_rdb.html#CONNECTION_MADE ConnStatusType.CONNECTION_MADE 53
nim CONNECTION_AWAITING_RESPONSE query_builder/libs/postgres/postgres_rdb.html#CONNECTION_AWAITING_RESPONSE ConnStatusType.CONNECTION_AWAITING_RESPONSE 53
nim CONNECTION_AUTH_OK query_builder/libs/postgres/postgres_rdb.html#CONNECTION_AUTH_OK ConnStatusType.CONNECTION_AUTH_OK 53
nim CONNECTION_SETENV query_builder/libs/postgres/postgres_rdb.html#CONNECTION_SETENV ConnStatusType.CONNECTION_SETENV 53
nim CONNECTION_SSL_STARTUP query_builder/libs/postgres/postgres_rdb.html#CONNECTION_SSL_STARTUP ConnStatusType.CONNECTION_SSL_STARTUP 53
nim CONNECTION_NEEDED query_builder/libs/postgres/postgres_rdb.html#CONNECTION_NEEDED ConnStatusType.CONNECTION_NEEDED 53
nim CONNECTION_CHECK_WRITABLE query_builder/libs/postgres/postgres_rdb.html#CONNECTION_CHECK_WRITABLE ConnStatusType.CONNECTION_CHECK_WRITABLE 53
nim CONNECTION_CONSUME query_builder/libs/postgres/postgres_rdb.html#CONNECTION_CONSUME ConnStatusType.CONNECTION_CONSUME 53
nim CONNECTION_GSS_STARTUP query_builder/libs/postgres/postgres_rdb.html#CONNECTION_GSS_STARTUP ConnStatusType.CONNECTION_GSS_STARTUP 53
nim CONNECTION_CHECK_TARGET query_builder/libs/postgres/postgres_rdb.html#CONNECTION_CHECK_TARGET ConnStatusType.CONNECTION_CHECK_TARGET 53
nim ConnStatusType query_builder/libs/postgres/postgres_rdb.html#ConnStatusType enum ConnStatusType 53
nim PGconn query_builder/libs/postgres/postgres_rdb.html#PGconn object PGconn 58
nim PPGconn query_builder/libs/postgres/postgres_rdb.html#PPGconn type PPGconn 79
nim PGresult query_builder/libs/postgres/postgres_rdb.html#PGresult object PGresult 80
nim PGCancel query_builder/libs/postgres/postgres_rdb.html#PGCancel object PGCancel 91
nim PPGcancel query_builder/libs/postgres/postgres_rdb.html#PPGcancel type PPGcancel 92
nim PPGresult query_builder/libs/postgres/postgres_rdb.html#PPGresult type PPGresult 94
nim PPostgresPollingStatusType query_builder/libs/postgres/postgres_rdb.html#PPostgresPollingStatusType type PPostgresPollingStatusType 95
nim PGRES_POLLING_FAILED query_builder/libs/postgres/postgres_rdb.html#PGRES_POLLING_FAILED PostgresPollingStatusType.PGRES_POLLING_FAILED 96
nim PGRES_POLLING_READING query_builder/libs/postgres/postgres_rdb.html#PGRES_POLLING_READING PostgresPollingStatusType.PGRES_POLLING_READING 96
nim PGRES_POLLING_WRITING query_builder/libs/postgres/postgres_rdb.html#PGRES_POLLING_WRITING PostgresPollingStatusType.PGRES_POLLING_WRITING 96
nim PGRES_POLLING_OK query_builder/libs/postgres/postgres_rdb.html#PGRES_POLLING_OK PostgresPollingStatusType.PGRES_POLLING_OK 96
nim PGRES_POLLING_ACTIVE query_builder/libs/postgres/postgres_rdb.html#PGRES_POLLING_ACTIVE PostgresPollingStatusType.PGRES_POLLING_ACTIVE 96
nim PostgresPollingStatusType query_builder/libs/postgres/postgres_rdb.html#PostgresPollingStatusType enum PostgresPollingStatusType 96
nim PPGTransactionStatusType query_builder/libs/postgres/postgres_rdb.html#PPGTransactionStatusType type PPGTransactionStatusType 99
nim PQTRANS_IDLE query_builder/libs/postgres/postgres_rdb.html#PQTRANS_IDLE PGTransactionStatusType.PQTRANS_IDLE 100
nim PQTRANS_ACTIVE query_builder/libs/postgres/postgres_rdb.html#PQTRANS_ACTIVE PGTransactionStatusType.PQTRANS_ACTIVE 100
nim PQTRANS_INTRANS query_builder/libs/postgres/postgres_rdb.html#PQTRANS_INTRANS PGTransactionStatusType.PQTRANS_INTRANS 100
nim PQTRANS_INERROR query_builder/libs/postgres/postgres_rdb.html#PQTRANS_INERROR PGTransactionStatusType.PQTRANS_INERROR 100
nim PQTRANS_UNKNOWN query_builder/libs/postgres/postgres_rdb.html#PQTRANS_UNKNOWN PGTransactionStatusType.PQTRANS_UNKNOWN 100
nim PGTransactionStatusType query_builder/libs/postgres/postgres_rdb.html#PGTransactionStatusType enum PGTransactionStatusType 100
nim PPGVerbosity query_builder/libs/postgres/postgres_rdb.html#PPGVerbosity type PPGVerbosity 103
nim PQERRORS_TERSE query_builder/libs/postgres/postgres_rdb.html#PQERRORS_TERSE PGVerbosity.PQERRORS_TERSE 104
nim PQERRORS_DEFAULT query_builder/libs/postgres/postgres_rdb.html#PQERRORS_DEFAULT PGVerbosity.PQERRORS_DEFAULT 104
nim PQERRORS_VERBOSE query_builder/libs/postgres/postgres_rdb.html#PQERRORS_VERBOSE PGVerbosity.PQERRORS_VERBOSE 104
nim PQERRORS_SQLSTATE query_builder/libs/postgres/postgres_rdb.html#PQERRORS_SQLSTATE PGVerbosity.PQERRORS_SQLSTATE 104
nim PGVerbosity query_builder/libs/postgres/postgres_rdb.html#PGVerbosity enum PGVerbosity 104
nim PPGNotify query_builder/libs/postgres/postgres_rdb.html#PPGNotify type PPGNotify 106
nim pgNotify query_builder/libs/postgres/postgres_rdb.html#pgNotify object pgNotify 107
nim PQnoticeReceiver query_builder/libs/postgres/postgres_rdb.html#PQnoticeReceiver type PQnoticeReceiver 112
nim PQnoticeProcessor query_builder/libs/postgres/postgres_rdb.html#PQnoticeProcessor type PQnoticeProcessor 113
nim Ppqbool query_builder/libs/postgres/postgres_rdb.html#Ppqbool type Ppqbool 114
nim pqbool query_builder/libs/postgres/postgres_rdb.html#pqbool type pqbool 115
nim PPQprintOpt query_builder/libs/postgres/postgres_rdb.html#PPQprintOpt type PPQprintOpt 116
nim PQprintOpt query_builder/libs/postgres/postgres_rdb.html#PQprintOpt object PQprintOpt 117
nim PPQconninfoOption query_builder/libs/postgres/postgres_rdb.html#PPQconninfoOption type PPQconninfoOption 129
nim PQconninfoOption query_builder/libs/postgres/postgres_rdb.html#PQconninfoOption object PQconninfoOption 130
nim PPQArgBlock query_builder/libs/postgres/postgres_rdb.html#PPQArgBlock type PPQArgBlock 139
nim PQArgBlock query_builder/libs/postgres/postgres_rdb.html#PQArgBlock object PQArgBlock 140
nim pqinitOpenSSL query_builder/libs/postgres/postgres_rdb.html#pqinitOpenSSL,int32,int32 proc pqinitOpenSSL(do_ssl: int32; do_crypto: int32) 145
nim pqconnectStart query_builder/libs/postgres/postgres_rdb.html#pqconnectStart,cstring proc pqconnectStart(conninfo: cstring): PPGconn 147
nim pqconnectPoll query_builder/libs/postgres/postgres_rdb.html#pqconnectPoll,PPGconn proc pqconnectPoll(conn: PPGconn): PostgresPollingStatusType 149
nim pqconnectdb query_builder/libs/postgres/postgres_rdb.html#pqconnectdb,cstring proc pqconnectdb(conninfo: cstring): PPGconn 151
nim pqsetdbLogin query_builder/libs/postgres/postgres_rdb.html#pqsetdbLogin,cstring,cstring,cstring,cstring,cstring,cstring,cstring proc pqsetdbLogin(pghost: cstring; pgport: cstring; pgoptions: cstring;\n pgtty: cstring; dbName: cstring; login: cstring; pwd: cstring): PPGconn 153
nim pqsetdb query_builder/libs/postgres/postgres_rdb.html#pqsetdb,cstring,cstring,cstring,cstring,cstring proc pqsetdb(M_PGHOST, M_PGPORT, M_PGOPT, M_PGTTY, M_DBNAME: cstring): PPGconn 156
nim pqfinish query_builder/libs/postgres/postgres_rdb.html#pqfinish,PPGconn proc pqfinish(conn: PPGconn) 157
nim pqconndefaults query_builder/libs/postgres/postgres_rdb.html#pqconndefaults proc pqconndefaults(): PPQconninfoOption 158
nim pqconninfoFree query_builder/libs/postgres/postgres_rdb.html#pqconninfoFree,PPQconninfoOption proc pqconninfoFree(connOptions: PPQconninfoOption) 160
nim pqresetStart query_builder/libs/postgres/postgres_rdb.html#pqresetStart,PPGconn proc pqresetStart(conn: PPGconn): int32 162
nim pqresetPoll query_builder/libs/postgres/postgres_rdb.html#pqresetPoll,PPGconn proc pqresetPoll(conn: PPGconn): PostgresPollingStatusType 164
nim pqreset query_builder/libs/postgres/postgres_rdb.html#pqreset,PPGconn proc pqreset(conn: PPGconn) 166
nim pqGetCancel query_builder/libs/postgres/postgres_rdb.html#pqGetCancel,PPGconn proc pqGetCancel(conn: PPGconn): PPGcancel 170
nim pqFreeCancel query_builder/libs/postgres/postgres_rdb.html#pqFreeCancel,PPGcancel proc pqFreeCancel(cancel: PPGcancel) 171
nim pqCancel query_builder/libs/postgres/postgres_rdb.html#pqCancel,PPGcancel,cstring,int32 proc pqCancel(cancel: PPGcancel; errbuf: cstring; errbufsize: int32): int32 172
nim pqrequestCancel query_builder/libs/postgres/postgres_rdb.html#pqrequestCancel,PPGconn proc pqrequestCancel(conn: PPGconn): int32 174
nim pqdb query_builder/libs/postgres/postgres_rdb.html#pqdb,PPGconn proc pqdb(conn: PPGconn): cstring 176
nim pquser query_builder/libs/postgres/postgres_rdb.html#pquser,PPGconn proc pquser(conn: PPGconn): cstring 177
nim pqpass query_builder/libs/postgres/postgres_rdb.html#pqpass,PPGconn proc pqpass(conn: PPGconn): cstring 178
nim pqhost query_builder/libs/postgres/postgres_rdb.html#pqhost,PPGconn proc pqhost(conn: PPGconn): cstring 179
nim pqport query_builder/libs/postgres/postgres_rdb.html#pqport,PPGconn proc pqport(conn: PPGconn): cstring 180
nim pqtty query_builder/libs/postgres/postgres_rdb.html#pqtty,PPGconn proc pqtty(conn: PPGconn): cstring 181
nim pqoptions query_builder/libs/postgres/postgres_rdb.html#pqoptions,PPGconn proc pqoptions(conn: PPGconn): cstring 182
nim pqstatus query_builder/libs/postgres/postgres_rdb.html#pqstatus,PPGconn proc pqstatus(conn: PPGconn): ConnStatusType 184
nim pqtransactionStatus query_builder/libs/postgres/postgres_rdb.html#pqtransactionStatus,PPGconn proc pqtransactionStatus(conn: PPGconn): PGTransactionStatusType 186
nim pqparameterStatus query_builder/libs/postgres/postgres_rdb.html#pqparameterStatus,PPGconn,cstring proc pqparameterStatus(conn: PPGconn; paramName: cstring): cstring 188
nim pqserverVersion query_builder/libs/postgres/postgres_rdb.html#pqserverVersion,PPGconn proc pqserverVersion(conn: PPGconn): int32 190
nim pqprotocolVersion query_builder/libs/postgres/postgres_rdb.html#pqprotocolVersion,PPGconn proc pqprotocolVersion(conn: PPGconn): int32 192
nim pqerrorMessage query_builder/libs/postgres/postgres_rdb.html#pqerrorMessage,PPGconn proc pqerrorMessage(conn: PPGconn): cstring 194
nim pqsocket query_builder/libs/postgres/postgres_rdb.html#pqsocket,PPGconn proc pqsocket(conn: PPGconn): int32 196
nim pqbackendPID query_builder/libs/postgres/postgres_rdb.html#pqbackendPID,PPGconn proc pqbackendPID(conn: PPGconn): int32 198
nim pqconnectionNeedsPassword query_builder/libs/postgres/postgres_rdb.html#pqconnectionNeedsPassword,PPGconn proc pqconnectionNeedsPassword(conn: PPGconn): int32 200
nim pqconnectionUsedPassword query_builder/libs/postgres/postgres_rdb.html#pqconnectionUsedPassword,PPGconn proc pqconnectionUsedPassword(conn: PPGconn): int32 202
nim pqclientEncoding query_builder/libs/postgres/postgres_rdb.html#pqclientEncoding,PPGconn proc pqclientEncoding(conn: PPGconn): int32 204
nim pqsetClientEncoding query_builder/libs/postgres/postgres_rdb.html#pqsetClientEncoding,PPGconn,cstring proc pqsetClientEncoding(conn: PPGconn; encoding: cstring): int32 206
nim pqsetErrorVerbosity query_builder/libs/postgres/postgres_rdb.html#pqsetErrorVerbosity,PPGconn,PGVerbosity proc pqsetErrorVerbosity(conn: PPGconn; verbosity: PGVerbosity): PGVerbosity 212
nim pqtrace query_builder/libs/postgres/postgres_rdb.html#pqtrace,PPGconn,File proc pqtrace(conn: PPGconn; debug_port: File) 214
nim pquntrace query_builder/libs/postgres/postgres_rdb.html#pquntrace,PPGconn proc pquntrace(conn: PPGconn) 216
nim pqsetNoticeReceiver query_builder/libs/postgres/postgres_rdb.html#pqsetNoticeReceiver,PPGconn,PQnoticeReceiver,pointer proc pqsetNoticeReceiver(conn: PPGconn; theProc: PQnoticeReceiver; arg: pointer): PQnoticeReceiver 217
nim pqsetNoticeProcessor query_builder/libs/postgres/postgres_rdb.html#pqsetNoticeProcessor,PPGconn,PQnoticeProcessor,pointer proc pqsetNoticeProcessor(conn: PPGconn; theProc: PQnoticeProcessor; arg: pointer): PQnoticeProcessor 219
nim pqexec query_builder/libs/postgres/postgres_rdb.html#pqexec,PPGconn,cstring proc pqexec(conn: PPGconn; query: cstring): PPGresult 222
nim pqexecParams query_builder/libs/postgres/postgres_rdb.html#pqexecParams,PPGconn,cstring,int32,POid,cstringArray,ptr.int32,ptr.int32,int32 proc pqexecParams(conn: PPGconn; command: cstring; nParams: int32; paramTypes: POid;\n paramValues: cstringArray; paramLengths, paramFormats: ptr int32;\n resultFormat: int32): PPGresult 224
nim pqprepare query_builder/libs/postgres/postgres_rdb.html#pqprepare,PPGconn,cstring,cstring,int32,POid proc pqprepare(conn: PPGconn; stmtName, query: cstring; nParams: int32;\n paramTypes: POid): PPGresult 228
nim pqexecPrepared query_builder/libs/postgres/postgres_rdb.html#pqexecPrepared,PPGconn,cstring,int32,cstringArray,ptr.int32,ptr.int32,int32 proc pqexecPrepared(conn: PPGconn; stmtName: cstring; nParams: int32;\n paramValues: cstringArray; paramLengths, paramFormats: ptr int32;\n resultFormat: int32): PPGresult 230
nim pqsendQuery query_builder/libs/postgres/postgres_rdb.html#pqsendQuery,PPGconn,cstring proc pqsendQuery(conn: PPGconn; query: cstring): int32 234
nim pqsendQueryParams query_builder/libs/postgres/postgres_rdb.html#pqsendQueryParams,PPGconn,cstring,int32,POid,cstringArray,ptr.int32,ptr.int32,int32 proc pqsendQueryParams(conn: PPGconn; command: cstring; nParams: int32;\n paramTypes: POid; paramValues: cstringArray;\n paramLengths, paramFormats: ptr int32; resultFormat: int32): int32 237
nim pqsendPrepare query_builder/libs/postgres/postgres_rdb.html#pqsendPrepare,PPGconn,cstring,cstring,int32,POid proc pqsendPrepare(conn: PPGconn; stmtName: cstring; query: cstring; nParams: int32;\n paramTypes: POid): int32 242
nim pqsendQueryPrepared query_builder/libs/postgres/postgres_rdb.html#pqsendQueryPrepared,PPGconn,cstring,int32,cstringArray,ptr.int32,ptr.int32,int32 proc pqsendQueryPrepared(conn: PPGconn; stmtName: cstring; nParams: int32;\n paramValues: cstringArray;\n paramLengths, paramFormats: ptr int32; resultFormat: int32): int32 245
nim pqSetSingleRowMode query_builder/libs/postgres/postgres_rdb.html#pqSetSingleRowMode,PPGconn proc pqSetSingleRowMode(conn: PPGconn): int32 250
nim pqgetResult query_builder/libs/postgres/postgres_rdb.html#pqgetResult,PPGconn proc pqgetResult(conn: PPGconn): PPGresult 253
nim pqisBusy query_builder/libs/postgres/postgres_rdb.html#pqisBusy,PPGconn proc pqisBusy(conn: PPGconn): int32 255
nim pqconsumeInput query_builder/libs/postgres/postgres_rdb.html#pqconsumeInput,PPGconn proc pqconsumeInput(conn: PPGconn): int32 257
nim pqnotifies query_builder/libs/postgres/postgres_rdb.html#pqnotifies,PPGconn proc pqnotifies(conn: PPGconn): PPGNotify 259
nim pqputCopyData query_builder/libs/postgres/postgres_rdb.html#pqputCopyData,PPGconn,cstring,int32 proc pqputCopyData(conn: PPGconn; buffer: cstring; nbytes: int32): int32 261
nim pqputCopyEnd query_builder/libs/postgres/postgres_rdb.html#pqputCopyEnd,PPGconn,cstring proc pqputCopyEnd(conn: PPGconn; errormsg: cstring): int32 263
nim pqgetCopyData query_builder/libs/postgres/postgres_rdb.html#pqgetCopyData,PPGconn,cstringArray,int32 proc pqgetCopyData(conn: PPGconn; buffer: cstringArray; async: int32): int32 265
nim pqgetline query_builder/libs/postgres/postgres_rdb.html#pqgetline,PPGconn,cstring,int32 proc pqgetline(conn: PPGconn; str: cstring; len: int32): int32 267
nim pqputline query_builder/libs/postgres/postgres_rdb.html#pqputline,PPGconn,cstring proc pqputline(conn: PPGconn; str: cstring): int32 269
nim pqgetlineAsync query_builder/libs/postgres/postgres_rdb.html#pqgetlineAsync,PPGconn,cstring,int32 proc pqgetlineAsync(conn: PPGconn; buffer: cstring; bufsize: int32): int32 271
nim pqputnbytes query_builder/libs/postgres/postgres_rdb.html#pqputnbytes,PPGconn,cstring,int32 proc pqputnbytes(conn: PPGconn; buffer: cstring; nbytes: int32): int32 273
nim pqendcopy query_builder/libs/postgres/postgres_rdb.html#pqendcopy,PPGconn proc pqendcopy(conn: PPGconn): int32 275
nim pqsetnonblocking query_builder/libs/postgres/postgres_rdb.html#pqsetnonblocking,PPGconn,int32 proc pqsetnonblocking(conn: PPGconn; arg: int32): int32 277
nim pqisnonblocking query_builder/libs/postgres/postgres_rdb.html#pqisnonblocking,PPGconn proc pqisnonblocking(conn: PPGconn): int32 279
nim pqflush query_builder/libs/postgres/postgres_rdb.html#pqflush,PPGconn proc pqflush(conn: PPGconn): int32 281
nim pqfn query_builder/libs/postgres/postgres_rdb.html#pqfn,PPGconn,int32,ptr.int32,ptr.int32,int32,PPQArgBlock,int32 proc pqfn(conn: PPGconn; fnid: int32; result_buf, result_len: ptr int32;\n result_is_int: int32; args: PPQArgBlock; nargs: int32): PPGresult 282
nim pqresultStatus query_builder/libs/postgres/postgres_rdb.html#pqresultStatus,PPGresult proc pqresultStatus(res: PPGresult): ExecStatusType 285
nim pqresStatus query_builder/libs/postgres/postgres_rdb.html#pqresStatus,ExecStatusType proc pqresStatus(status: ExecStatusType): cstring 287
nim pqresultErrorMessage query_builder/libs/postgres/postgres_rdb.html#pqresultErrorMessage,PPGresult proc pqresultErrorMessage(res: PPGresult): cstring 289
nim pqresultErrorField query_builder/libs/postgres/postgres_rdb.html#pqresultErrorField,PPGresult,int32 proc pqresultErrorField(res: PPGresult; fieldcode: int32): cstring 291
nim pqntuples query_builder/libs/postgres/postgres_rdb.html#pqntuples,PPGresult proc pqntuples(res: PPGresult): int32 293
nim pqnfields query_builder/libs/postgres/postgres_rdb.html#pqnfields,PPGresult proc pqnfields(res: PPGresult): int32 295
nim pqbinaryTuples query_builder/libs/postgres/postgres_rdb.html#pqbinaryTuples,PPGresult proc pqbinaryTuples(res: PPGresult): int32 297
nim pqfname query_builder/libs/postgres/postgres_rdb.html#pqfname,PPGresult,int32 proc pqfname(res: PPGresult; field_num: int32): cstring 299
nim pqfnumber query_builder/libs/postgres/postgres_rdb.html#pqfnumber,PPGresult,cstring proc pqfnumber(res: PPGresult; field_name: cstring): int32 301
nim pqftable query_builder/libs/postgres/postgres_rdb.html#pqftable,PPGresult,int32 proc pqftable(res: PPGresult; field_num: int32): Oid 303
nim pqftablecol query_builder/libs/postgres/postgres_rdb.html#pqftablecol,PPGresult,int32 proc pqftablecol(res: PPGresult; field_num: int32): int32 305
nim pqfformat query_builder/libs/postgres/postgres_rdb.html#pqfformat,PPGresult,int32 proc pqfformat(res: PPGresult; field_num: int32): int32 307
nim pqftype query_builder/libs/postgres/postgres_rdb.html#pqftype,PPGresult,int32 proc pqftype(res: PPGresult; field_num: int32): Oid 309
nim pqfsize query_builder/libs/postgres/postgres_rdb.html#pqfsize,PPGresult,int32 proc pqfsize(res: PPGresult; field_num: int32): int32 311
nim pqfmod query_builder/libs/postgres/postgres_rdb.html#pqfmod,PPGresult,int32 proc pqfmod(res: PPGresult; field_num: int32): int32 313
nim pqcmdStatus query_builder/libs/postgres/postgres_rdb.html#pqcmdStatus,PPGresult proc pqcmdStatus(res: PPGresult): cstring 315
nim pqoidStatus query_builder/libs/postgres/postgres_rdb.html#pqoidStatus,PPGresult proc pqoidStatus(res: PPGresult): cstring 317
nim pqoidValue query_builder/libs/postgres/postgres_rdb.html#pqoidValue,PPGresult proc pqoidValue(res: PPGresult): Oid 319
nim pqcmdTuples query_builder/libs/postgres/postgres_rdb.html#pqcmdTuples,PPGresult proc pqcmdTuples(res: PPGresult): cstring 321
nim pqgetvalue query_builder/libs/postgres/postgres_rdb.html#pqgetvalue,PPGresult,int32,int32 proc pqgetvalue(res: PPGresult; tup_num: int32; field_num: int32): cstring 323
nim pqgetlength query_builder/libs/postgres/postgres_rdb.html#pqgetlength,PPGresult,int32,int32 proc pqgetlength(res: PPGresult; tup_num: int32; field_num: int32): int32 325
nim pqgetisnull query_builder/libs/postgres/postgres_rdb.html#pqgetisnull,PPGresult,int32,int32 proc pqgetisnull(res: PPGresult; tup_num: int32; field_num: int32): int32 327
nim pqclear query_builder/libs/postgres/postgres_rdb.html#pqclear,PPGresult proc pqclear(res: PPGresult) 329
nim pqfreemem query_builder/libs/postgres/postgres_rdb.html#pqfreemem,pointer proc pqfreemem(p: pointer) 330
nim pqmakeEmptyPGresult query_builder/libs/postgres/postgres_rdb.html#pqmakeEmptyPGresult,PPGconn,ExecStatusType proc pqmakeEmptyPGresult(conn: PPGconn; status: ExecStatusType): PPGresult 331
nim pqescapeString query_builder/libs/postgres/postgres_rdb.html#pqescapeString,cstring,cstring,int proc pqescapeString(till, from: cstring; len: int): int 333
nim pqescapeBytea query_builder/libs/postgres/postgres_rdb.html#pqescapeBytea,cstring,int,int proc pqescapeBytea(bintext: cstring; binlen: int; bytealen: var int): cstring 335
nim pqunescapeBytea query_builder/libs/postgres/postgres_rdb.html#pqunescapeBytea,cstring,int proc pqunescapeBytea(strtext: cstring; retbuflen: var int): cstring 337
nim pqprint query_builder/libs/postgres/postgres_rdb.html#pqprint,File,PPGresult,PPQprintOpt proc pqprint(fout: File; res: PPGresult; ps: PPQprintOpt) 339
nim pqdisplayTuples query_builder/libs/postgres/postgres_rdb.html#pqdisplayTuples,PPGresult,File,int32,cstring,int32,int32 proc pqdisplayTuples(res: PPGresult; fp: File; fillAlign: int32; fieldSep: cstring;\n printHeader: int32; quiet: int32) 341
nim pqprintTuples query_builder/libs/postgres/postgres_rdb.html#pqprintTuples,PPGresult,File,int32,int32,int32 proc pqprintTuples(res: PPGresult; fout: File; printAttName: int32;\n terseOutput: int32; width: int32) 344
nim lo_open query_builder/libs/postgres/postgres_rdb.html#lo_open,PPGconn,Oid,int32 proc lo_open(conn: PPGconn; lobjId: Oid; mode: int32): int32 347
nim lo_close query_builder/libs/postgres/postgres_rdb.html#lo_close,PPGconn,int32 proc lo_close(conn: PPGconn; fd: int32): int32 349
nim lo_read query_builder/libs/postgres/postgres_rdb.html#lo_read,PPGconn,int32,cstring,int proc lo_read(conn: PPGconn; fd: int32; buf: cstring; length: int): int32 351
nim lo_write query_builder/libs/postgres/postgres_rdb.html#lo_write,PPGconn,int32,cstring,int proc lo_write(conn: PPGconn; fd: int32; buf: cstring; length: int): int32 353
nim lo_lseek query_builder/libs/postgres/postgres_rdb.html#lo_lseek,PPGconn,int32,int32,int32 proc lo_lseek(conn: PPGconn; fd: int32; offset: int32; whence: int32): int32 355
nim lo_creat query_builder/libs/postgres/postgres_rdb.html#lo_creat,PPGconn,int32 proc lo_creat(conn: PPGconn; mode: int32): Oid 357
nim lo_tell query_builder/libs/postgres/postgres_rdb.html#lo_tell,PPGconn,int32 proc lo_tell(conn: PPGconn; fd: int32): int32 359
nim lo_unlink query_builder/libs/postgres/postgres_rdb.html#lo_unlink,PPGconn,Oid proc lo_unlink(conn: PPGconn; lobjId: Oid): int32 361
nim lo_import query_builder/libs/postgres/postgres_rdb.html#lo_import,PPGconn,cstring proc lo_import(conn: PPGconn; filename: cstring): Oid 363
nim lo_export query_builder/libs/postgres/postgres_rdb.html#lo_export,PPGconn,Oid,cstring proc lo_export(conn: PPGconn; lobjId: Oid; filename: cstring): int32 365
nim pqmblen query_builder/libs/postgres/postgres_rdb.html#pqmblen,cstring,int32 proc pqmblen(s: cstring; encoding: int32): int32 367
nim pqenv2encoding query_builder/libs/postgres/postgres_rdb.html#pqenv2encoding proc pqenv2encoding(): int32 369
@@ -0,0 +1,277 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/sqlite/sqlite_impl</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/sqlite/sqlite_impl</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">exec
<li><a class="reference" href="#exec%2CPSqlite3%2Cstring%2CJsonNode%2Cseq%5B%5D%2Cint" title="exec(db: PSqlite3; query: string; args: JsonNode;
columns: seq[(string, string)]; timeout: int): owned(Future[void])">exec(db: PSqlite3; query: string; args: JsonNode;
columns: seq[(string, string)]; timeout: int): owned(Future[void])</a></li>
<li><a class="reference" href="#exec%2CPSqlite3%2Cstring%2CJsonNode%2Cint" title="exec(db: PSqlite3; query: string; args: JsonNode; timeout: int): owned(
Future[void])">exec(db: PSqlite3; query: string; args: JsonNode; timeout: int): owned(
Future[void])</a></li>
<li><a class="reference" href="#exec%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint" title="exec(db: PSqlite3; query: string; args: seq[string]; timeout: int): owned(
Future[void])">exec(db: PSqlite3; query: string; args: seq[string]; timeout: int): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">getColumns
<li><a class="reference" href="#getColumns%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint" title="getColumns(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[
seq[string]]">getColumns(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[
seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">getColumnTypes
<li><a class="reference" href="#getColumnTypes%2CPSqlite3%2Cstring" title="getColumnTypes(db: PSqlite3; query: string): Future[seq[(string, string)]]">getColumnTypes(db: PSqlite3; query: string): Future[seq[(string, string)]]</a></li>
</ul>
<ul class="simple nested-toc-section">prepare
<li><a class="reference" href="#prepare%2CPSqlite3%2Cstring%2Cint" title="prepare(db: PSqlite3; query: string; timeout: int): Future[PStmt]">prepare(db: PSqlite3; query: string; timeout: int): Future[PStmt]</a></li>
</ul>
<ul class="simple nested-toc-section">preparedExec
<li><a class="reference" href="#preparedExec%2CPSqlite3%2Cseq%5Bstring%5D%2CPStmt" title="preparedExec(db: PSqlite3; args: seq[string] = @[]; sqliteStmt: PStmt): owned(
Future[void])">preparedExec(db: PSqlite3; args: seq[string] = @[]; sqliteStmt: PStmt): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">preparedQuery
<li><a class="reference" href="#preparedQuery%2CPSqlite3%2Cseq%5Bstring%5D%2CPStmt" title="preparedQuery(db: PSqlite3; args: seq[string] = @[]; sqliteStmt: PStmt): Future[
(seq[Row], DbRows)]">preparedQuery(db: PSqlite3; args: seq[string] = @[]; sqliteStmt: PStmt): Future[
(seq[Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">query
<li><a class="reference" href="#query%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint" title="query(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[
(seq[Row], DbRows)]">query(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[
(seq[Row], DbRows)]</a></li>
</ul>
<ul class="simple nested-toc-section">queryPlain
<li><a class="reference" href="#queryPlain%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint" title="queryPlain(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[
seq[Row]]">queryPlain(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[
seq[Row]]</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="sqlite_rdb.html">sqlite_rdb</a>, <a class="reference external" href="sqlite_lib.html">sqlite_lib</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="exec-procs-all">
<div id="exec,PSqlite3,string,JsonNode,seq[],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPSqlite3%2Cstring%2CJsonNode%2Cseq%5B%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span>
<span class="Identifier">columns</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
args is <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span></span></tt>
</dd>
</div>
<div id="exec,PSqlite3,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPSqlite3%2Cstring%2CJsonNode%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
used for rdb.raw().exec() args are <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span></span></tt>
</dd>
</div>
<div id="exec,PSqlite3,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Not used anymore
</dd>
</div>
</div>
<div id="getColumns-procs-all">
<div id="getColumns,PSqlite3,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumns%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">getColumns</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumnTypes-procs-all">
<div id="getColumnTypes,PSqlite3,string">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumnTypes%2CPSqlite3%2Cstring"><span class="Identifier">getColumnTypes</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Other">(</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadDbEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="prepare-procs-all">
<div id="prepare,PSqlite3,string,int">
<dt><pre><span class="Keyword">proc</span> <a href="#prepare%2CPSqlite3%2Cstring%2Cint"><span class="Identifier">prepare</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><a href="sqlite_rdb.html#PStmt"><span class="Identifier">PStmt</span></a><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="preparedExec-procs-all">
<div id="preparedExec,PSqlite3,seq[string],PStmt">
<dt><pre><span class="Keyword">proc</span> <a href="#preparedExec%2CPSqlite3%2Cseq%5Bstring%5D%2CPStmt"><span class="Identifier">preparedExec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">sqliteStmt</span><span class="Other">:</span> <a href="sqlite_rdb.html#PStmt"><span class="Identifier">PStmt</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="preparedQuery-procs-all">
<div id="preparedQuery,PSqlite3,seq[string],PStmt">
<dt><pre><span class="Keyword">proc</span> <a href="#preparedQuery%2CPSqlite3%2Cseq%5Bstring%5D%2CPStmt"><span class="Identifier">preparedQuery</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">sqliteStmt</span><span class="Other">:</span> <a href="sqlite_rdb.html#PStmt"><span class="Identifier">PStmt</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadDbEffect</span><span class="Other">,</span> <span class="Identifier">WriteDbEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="query-procs-all">
<div id="query,PSqlite3,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Other">(</span><span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">,</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">)</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadDbEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="queryPlain-procs-all">
<div id="queryPlain,PSqlite3,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#queryPlain%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">queryPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><a href="../../models/database_types.html#Row"><span class="Identifier">Row</span></a><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadDbEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:33 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,12 @@
nimTitle sqlite_impl query_builder/libs/sqlite/sqlite_impl.html module src/allographer/query_builder/libs/sqlite/sqlite_impl 0
nim query query_builder/libs/sqlite/sqlite_impl.html#query,PSqlite3,string,seq[string],int proc query(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[\n (seq[Row], DbRows)] 9
nim queryPlain query_builder/libs/sqlite/sqlite_impl.html#queryPlain,PSqlite3,string,seq[string],int proc queryPlain(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[\n seq[Row]] 22
nim getColumnTypes query_builder/libs/sqlite/sqlite_impl.html#getColumnTypes,PSqlite3,string proc getColumnTypes(db: PSqlite3; query: string): Future[seq[(string, string)]] 34
nim exec query_builder/libs/sqlite/sqlite_impl.html#exec,PSqlite3,string,JsonNode,seq[],int proc exec(db: PSqlite3; query: string; args: JsonNode;\n columns: seq[(string, string)]; timeout: int): owned(Future[void]) 43
nim exec query_builder/libs/sqlite/sqlite_impl.html#exec,PSqlite3,string,JsonNode,int proc exec(db: PSqlite3; query: string; args: JsonNode; timeout: int): owned(\n Future[void]) 96
nim exec query_builder/libs/sqlite/sqlite_impl.html#exec,PSqlite3,string,seq[string],int proc exec(db: PSqlite3; query: string; args: seq[string]; timeout: int): owned(\n Future[void]) 137
nim getColumns query_builder/libs/sqlite/sqlite_impl.html#getColumns,PSqlite3,string,seq[string],int proc getColumns(db: PSqlite3; query: string; args: seq[string]; timeout: int): Future[\n seq[string]] 155
nim prepare query_builder/libs/sqlite/sqlite_impl.html#prepare,PSqlite3,string,int proc prepare(db: PSqlite3; query: string; timeout: int): Future[PStmt] 161
nim preparedQuery query_builder/libs/sqlite/sqlite_impl.html#preparedQuery,PSqlite3,seq[string],PStmt proc preparedQuery(db: PSqlite3; args: seq[string] = @[]; sqliteStmt: PStmt): Future[\n (seq[Row], DbRows)] 167
nim preparedExec query_builder/libs/sqlite/sqlite_impl.html#preparedExec,PSqlite3,seq[string],PStmt proc preparedExec(db: PSqlite3; args: seq[string] = @[]; sqliteStmt: PStmt): owned(\n Future[void]) 185
nimgrp exec query_builder/libs/sqlite/sqlite_impl.html#exec-procs-all proc 43
@@ -0,0 +1,331 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/sqlite/sqlite_lib</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/sqlite/sqlite_lib</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">[]
<li><a class="reference" href="#%5B%5D%2CInstantRow%2Cint32" title="`[]`(row: InstantRow; col: int32): string">`[]`(row: InstantRow; col: int32): string</a></li>
</ul>
<ul class="simple nested-toc-section">bindParam
<li><a class="reference" href="#bindParam%2CPStmt%2Cint%2Cstring" title="bindParam(ps: PStmt; paramIdx: int; val: string; copy = true)">bindParam(ps: PStmt; paramIdx: int; val: string; copy = true)</a></li>
</ul>
<ul class="simple nested-toc-section">dbError
<li><a class="reference" href="#dbError%2CPSqlite3" title="dbError(db: PSqlite3)">dbError(db: PSqlite3)</a></li>
</ul>
<ul class="simple nested-toc-section">dbFormat
<li><a class="reference" href="#dbFormat%2Cstring%2Cvarargs%5Bstring%5D" title="dbFormat(formatstr: string; args: varargs[string]): string">dbFormat(formatstr: string; args: varargs[string]): string</a></li>
</ul>
<ul class="simple nested-toc-section">getColumns
<li><a class="reference" href="#getColumns%2CPSqlite3%2CDbRows%2Cstring%2Cseq%5Bstring%5D" title="getColumns(db: PSqlite3; dbRows: var DbRows; query: string; args: seq[string]): seq[
string]">getColumns(db: PSqlite3; dbRows: var DbRows; query: string; args: seq[string]): seq[
string]</a></li>
</ul>
<ul class="simple nested-toc-section">len
<li><a class="reference" href="#len%2CInstantRow" title="len(row: InstantRow): int32">len(row: InstantRow): int32</a></li>
</ul>
<ul class="simple nested-toc-section">sqliteQuoteIdent
<li><a class="reference" href="#sqliteQuoteIdent%2Cstring" title="sqliteQuoteIdent(name: string): string">sqliteQuoteIdent(name: string): string</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#15" id="65">Iterators</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">instantRows
<li><a class="reference" href="#instantRows.i%2CPSqlite3%2CDbRows%2Cstring%2Cseq%5Bstring%5D" title="instantRows(db: PSqlite3; dbRows: var DbRows; query: string; args: seq[string]): InstantRow">instantRows(db: PSqlite3; dbRows: var DbRows; query: string; args: seq[string]): InstantRow</a></li>
<li><a class="reference" href="#instantRows.i%2CPSqlite3%2CDbRows%2CPStmt" title="instantRows(db: PSqlite3; dbRows: var DbRows; sqliteStmt: PStmt): InstantRow">instantRows(db: PSqlite3; dbRows: var DbRows; sqliteStmt: PStmt): InstantRow</a></li>
</ul>
<ul class="simple nested-toc-section">instantRowsPlain
<li><a class="reference" href="#instantRowsPlain.i%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D" title="instantRowsPlain(db: PSqlite3; query: string; args: seq[string]): InstantRow">instantRowsPlain(db: PSqlite3; query: string; args: seq[string]): InstantRow</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">dbBindParamError
<li><a class="reference" href="#dbBindParamError.t%2Cint%2Cvarargs%5Buntyped%5D" title="dbBindParamError(paramIdx: int; val: varargs[untyped])">dbBindParamError(paramIdx: int; val: varargs[untyped])</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../models/database_types.html">../../models/database_types</a>, <a class="reference external" href="sqlite_rdb.html">sqlite_rdb</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="[]-procs-all">
<div id="[],InstantRow,int32">
<dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%2CInstantRow%2Cint32"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">row</span><span class="Other">:</span> <a href="sqlite_rdb.html#InstantRow"><span class="Identifier">InstantRow</span></a><span class="Other">;</span> <span class="Identifier">col</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns text for given column of the row.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#instantRows.i,DbConn,SqlQuery,varargs[string,]">instantRows iterator</a> example code</li>
</ul>
</dd>
</div>
</div>
<div id="bindParam-procs-all">
<div id="bindParam,PStmt,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#bindParam%2CPStmt%2Cint%2Cstring"><span class="Identifier">bindParam</span></a><span class="Other">(</span><span class="Identifier">ps</span><span class="Other">:</span> <a href="sqlite_rdb.html#PStmt"><span class="Identifier">PStmt</span></a><span class="Other">;</span> <span class="Identifier">paramIdx</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">copy</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Binds a string to the specified paramIndex. if copy is true then SQLite makes its own private copy of the data immediately
</dd>
</div>
</div>
<div id="dbError-procs-all">
<div id="dbError,PSqlite3">
<dt><pre><span class="Keyword">proc</span> <a href="#dbError%2CPSqlite3"><span class="Identifier">dbError</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">)</span> {.<span class="Identifier">noreturn</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Raises a <tt class="docutils literal"><span class="pre"><span class="Identifier">DbError</span></span></tt> exception.</p>
<p><strong>Examples:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">db</span> <span class="Operator">=</span> <span class="Identifier">open</span><span class="Punctuation">(</span><span class="StringLit">&quot;mytest.db&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">)</span>
<span class="Keyword">if</span> <span class="Keyword">not</span> <span class="Identifier">db</span><span class="Operator">.</span><span class="Identifier">tryExec</span><span class="Punctuation">(</span><span class="RawData">sql&quot;SELECT * FROM not_exist_table&quot;</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">dbError</span><span class="Punctuation">(</span><span class="Identifier">db</span><span class="Punctuation">)</span>
<span class="Identifier">db</span><span class="Operator">.</span><span class="Identifier">close</span><span class="Punctuation">(</span><span class="Punctuation">)</span></pre>
</dd>
</div>
</div>
<div id="dbFormat-procs-all">
<div id="dbFormat,string,varargs[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2Cstring%2Cvarargs%5Bstring%5D"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="getColumns-procs-all">
<div id="getColumns,PSqlite3,DbRows,string,seq[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#getColumns%2CPSqlite3%2CDbRows%2Cstring%2Cseq%5Bstring%5D"><span class="Identifier">getColumns</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">dbRows</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="len-procs-all">
<div id="len,InstantRow">
<dt><pre><span class="Keyword">proc</span> <a href="#len%2CInstantRow"><span class="Identifier">len</span></a><span class="Other">(</span><span class="Identifier">row</span><span class="Other">:</span> <a href="sqlite_rdb.html#InstantRow"><span class="Identifier">InstantRow</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">int32</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns number of columns in a row.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#instantRows.i,DbConn,SqlQuery,varargs[string,]">instantRows iterator</a> example code</li>
</ul>
</dd>
</div>
</div>
<div id="sqliteQuoteIdent-procs-all">
<div id="sqliteQuoteIdent,string">
<dt><pre><span class="Keyword">proc</span> <a href="#sqliteQuoteIdent%2Cstring"><span class="Identifier">sqliteQuoteIdent</span></a><span class="Other">(</span><span class="Identifier">name</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<tt class="docutils literal"><span class="pre"><span class="Identifier">PRAGMA</span></span></tt> 等で使う SQLite の二重引用符識別子(内部の <tt class="docutils literal"><span class="pre"><span class="StringLit">&quot;</span></span></tt><tt class="docutils literal"><span class="pre"><span class="StringLit">&quot;&quot;</span></span></tt> にエスケープ)。
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="15">
<h1><a class="toc-backref" href="#15">Iterators</a></h1>
<dl class="item">
<div id="instantRows-iterators-all">
<div id="instantRows.i,PSqlite3,DbRows,string,seq[string]">
<dt><pre><span class="Keyword">iterator</span> <a href="#instantRows.i%2CPSqlite3%2CDbRows%2Cstring%2Cseq%5Bstring%5D"><span class="Identifier">instantRows</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">dbRows</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="sqlite_rdb.html#InstantRow"><span class="Identifier">InstantRow</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><a href="../../models/database_types.html#ReadDbEffect"><span class="Identifier">ReadDbEffect</span></a><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Similar to <a class="reference external" href="#instantRows.i,DbConn,SqlQuery,varargs[string,]">instantRows iterator</a>, but sets information about columns to <tt class="docutils literal"><span class="pre"><span class="Identifier">columns</span></span></tt>.</p>
<p><strong>Examples:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">db</span> <span class="Operator">=</span> <span class="Identifier">open</span><span class="Punctuation">(</span><span class="StringLit">&quot;mytest.db&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">)</span>
<span class="Comment"># Records of my_table:</span>
<span class="Comment"># | id | name |</span>
<span class="Comment"># |----|----------|</span>
<span class="Comment"># | 1 | item#1 |</span>
<span class="Comment"># | 2 | item#2 |</span>
<span class="Keyword">var</span> <span class="Identifier">columns</span><span class="Punctuation">:</span> <span class="Identifier">DbColumns</span>
<span class="Keyword">for</span> <span class="Identifier">row</span> <span class="Keyword">in</span> <span class="Identifier">db</span><span class="Operator">.</span><span class="Identifier">instantRows</span><span class="Punctuation">(</span><span class="Identifier">columns</span><span class="Punctuation">,</span> <span class="RawData">sql&quot;SELECT * FROM my_table&quot;</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Keyword">discard</span>
<span class="Identifier">echo</span> <span class="Identifier">columns</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">]</span>
<span class="Comment"># Output:</span>
<span class="Comment"># (name: &quot;id&quot;, tableName: &quot;my_table&quot;, typ: (kind: dbNull,</span>
<span class="Comment"># notNull: false, name: &quot;INTEGER&quot;, size: 0, maxReprLen: 0, precision: 0,</span>
<span class="Comment"># scale: 0, min: 0, max: 0, validValues: @[]), primaryKey: false,</span>
<span class="Comment"># foreignKey: false)</span>
<span class="Identifier">db</span><span class="Operator">.</span><span class="Identifier">close</span><span class="Punctuation">(</span><span class="Punctuation">)</span></pre>
</dd>
</div>
<div id="instantRows.i,PSqlite3,DbRows,PStmt">
<dt><pre><span class="Keyword">iterator</span> <a href="#instantRows.i%2CPSqlite3%2CDbRows%2CPStmt"><span class="Identifier">instantRows</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">dbRows</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="../../models/database_types.html#DbRows"><span class="Identifier">DbRows</span></a><span class="Other">;</span> <span class="Identifier">sqliteStmt</span><span class="Other">:</span> <a href="sqlite_rdb.html#PStmt"><span class="Identifier">PStmt</span></a><span class="Other">)</span><span class="Other">:</span> <a href="sqlite_rdb.html#InstantRow"><span class="Identifier">InstantRow</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><a href="../../models/database_types.html#ReadDbEffect"><span class="Identifier">ReadDbEffect</span></a><span class="Other">,</span> <a href="../../models/database_types.html#WriteDbEffect"><span class="Identifier">WriteDbEffect</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="instantRowsPlain-iterators-all">
<div id="instantRowsPlain.i,PSqlite3,string,seq[string]">
<dt><pre><span class="Keyword">iterator</span> <a href="#instantRowsPlain.i%2CPSqlite3%2Cstring%2Cseq%5Bstring%5D"><span class="Identifier">instantRowsPlain</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="sqlite_rdb.html#PSqlite3"><span class="Identifier">PSqlite3</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="sqlite_rdb.html#InstantRow"><span class="Identifier">InstantRow</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><a href="../../models/database_types.html#ReadDbEffect"><span class="Identifier">ReadDbEffect</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="18">
<h1><a class="toc-backref" href="#18">Templates</a></h1>
<dl class="item">
<div id="dbBindParamError-templates-all">
<div id="dbBindParamError.t,int,varargs[untyped]">
<dt><pre><span class="Keyword">template</span> <a href="#dbBindParamError.t%2Cint%2Cvarargs%5Buntyped%5D"><span class="Identifier">dbBindParamError</span></a><span class="Other">(</span><span class="Identifier">paramIdx</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">untyped</span><span class="Other">]</span><span class="Other">)</span></pre></dt>
<dd>
Raises a <tt class="docutils literal"><span class="pre"><span class="Identifier">DbError</span></span></tt> exception.
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:33 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,13 @@
nimTitle sqlite_lib query_builder/libs/sqlite/sqlite_lib.html module src/allographer/query_builder/libs/sqlite/sqlite_lib 0
nim sqliteQuoteIdent query_builder/libs/sqlite/sqlite_lib.html#sqliteQuoteIdent,string proc sqliteQuoteIdent(name: string): string 23
nim dbError query_builder/libs/sqlite/sqlite_lib.html#dbError,PSqlite3 proc dbError(db: PSqlite3) 34
nim dbFormat query_builder/libs/sqlite/sqlite_lib.html#dbFormat,string,varargs[string] proc dbFormat(formatstr: string; args: varargs[string]): string 50
nim instantRows query_builder/libs/sqlite/sqlite_lib.html#instantRows.i,PSqlite3,DbRows,string,seq[string] iterator instantRows(db: PSqlite3; dbRows: var DbRows; query: string; args: seq[string]): InstantRow 97
nim instantRowsPlain query_builder/libs/sqlite/sqlite_lib.html#instantRowsPlain.i,PSqlite3,string,seq[string] iterator instantRowsPlain(db: PSqlite3; query: string; args: seq[string]): InstantRow 137
nim instantRows query_builder/libs/sqlite/sqlite_lib.html#instantRows.i,PSqlite3,DbRows,PStmt iterator instantRows(db: PSqlite3; dbRows: var DbRows; sqliteStmt: PStmt): InstantRow 146
nim getColumns query_builder/libs/sqlite/sqlite_lib.html#getColumns,PSqlite3,DbRows,string,seq[string] proc getColumns(db: PSqlite3; dbRows: var DbRows; query: string; args: seq[string]): seq[\n string] 159
nim len query_builder/libs/sqlite/sqlite_lib.html#len,InstantRow proc len(row: InstantRow): int32 173
nim `[]` query_builder/libs/sqlite/sqlite_lib.html#[],InstantRow,int32 proc `[]`(row: InstantRow; col: int32): string 181
nim dbBindParamError query_builder/libs/sqlite/sqlite_lib.html#dbBindParamError.t,int,varargs[untyped] template dbBindParamError(paramIdx: int; val: varargs[untyped]) 189
nim bindParam query_builder/libs/sqlite/sqlite_lib.html#bindParam,PStmt,int,string proc bindParam(ps: PStmt; paramIdx: int; val: string; copy = true) 196
nimgrp instantrows query_builder/libs/sqlite/sqlite_lib.html#instantRows-iterators-all iterator 97
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,196 @@
nimTitle sqlite_rdb query_builder/libs/sqlite/sqlite_rdb.html module src/allographer/query_builder/libs/sqlite/sqlite_rdb 0
nim SQLITE_INTEGER query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_INTEGER const SQLITE_INTEGER 25
nim SQLITE_FLOAT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_FLOAT const SQLITE_FLOAT 26
nim SQLITE_BLOB query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_BLOB const SQLITE_BLOB 27
nim SQLITE_NULL query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_NULL const SQLITE_NULL 28
nim SQLITE_TEXT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_TEXT const SQLITE_TEXT 29
nim SQLITE_UTF8 query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_UTF8 const SQLITE_UTF8 30
nim SQLITE_UTF16LE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_UTF16LE const SQLITE_UTF16LE 31
nim SQLITE_UTF16BE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_UTF16BE const SQLITE_UTF16BE 32
nim SQLITE_UTF16 query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_UTF16 const SQLITE_UTF16 33
nim SQLITE_ANY query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_ANY const SQLITE_ANY 34
nim SQLITE_OK query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_OK const SQLITE_OK 35
nim SQLITE_ERROR query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_ERROR const SQLITE_ERROR 36
nim SQLITE_INTERNAL query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_INTERNAL const SQLITE_INTERNAL 37
nim SQLITE_PERM query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_PERM const SQLITE_PERM 38
nim SQLITE_ABORT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_ABORT const SQLITE_ABORT 39
nim SQLITE_BUSY query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_BUSY const SQLITE_BUSY 40
nim SQLITE_LOCKED query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_LOCKED const SQLITE_LOCKED 41
nim SQLITE_NOMEM query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_NOMEM const SQLITE_NOMEM 42
nim SQLITE_READONLY query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_READONLY const SQLITE_READONLY 43
nim SQLITE_INTERRUPT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_INTERRUPT const SQLITE_INTERRUPT 44
nim SQLITE_IOERR query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_IOERR const SQLITE_IOERR 45
nim SQLITE_CORRUPT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CORRUPT const SQLITE_CORRUPT 46
nim SQLITE_NOTFOUND query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_NOTFOUND const SQLITE_NOTFOUND 47
nim SQLITE_FULL query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_FULL const SQLITE_FULL 48
nim SQLITE_CANTOPEN query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CANTOPEN const SQLITE_CANTOPEN 49
nim SQLITE_PROTOCOL query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_PROTOCOL const SQLITE_PROTOCOL 50
nim SQLITE_EMPTY query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_EMPTY const SQLITE_EMPTY 51
nim SQLITE_SCHEMA query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_SCHEMA const SQLITE_SCHEMA 52
nim SQLITE_TOOBIG query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_TOOBIG const SQLITE_TOOBIG 53
nim SQLITE_CONSTRAINT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CONSTRAINT const SQLITE_CONSTRAINT 54
nim SQLITE_MISMATCH query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_MISMATCH const SQLITE_MISMATCH 55
nim SQLITE_MISUSE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_MISUSE const SQLITE_MISUSE 56
nim SQLITE_NOLFS query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_NOLFS const SQLITE_NOLFS 57
nim SQLITE_AUTH query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_AUTH const SQLITE_AUTH 58
nim SQLITE_FORMAT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_FORMAT const SQLITE_FORMAT 59
nim SQLITE_RANGE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_RANGE const SQLITE_RANGE 60
nim SQLITE_NOTADB query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_NOTADB const SQLITE_NOTADB 61
nim SQLITE_ROW query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_ROW const SQLITE_ROW 62
nim SQLITE_DONE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DONE const SQLITE_DONE 63
nim SQLITE_COPY query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_COPY const SQLITE_COPY 64
nim SQLITE_CREATE_INDEX query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_INDEX const SQLITE_CREATE_INDEX 65
nim SQLITE_CREATE_TABLE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_TABLE const SQLITE_CREATE_TABLE 66
nim SQLITE_CREATE_TEMP_INDEX query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_TEMP_INDEX const SQLITE_CREATE_TEMP_INDEX 67
nim SQLITE_CREATE_TEMP_TABLE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_TEMP_TABLE const SQLITE_CREATE_TEMP_TABLE 68
nim SQLITE_CREATE_TEMP_TRIGGER query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_TEMP_TRIGGER const SQLITE_CREATE_TEMP_TRIGGER 69
nim SQLITE_CREATE_TEMP_VIEW query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_TEMP_VIEW const SQLITE_CREATE_TEMP_VIEW 70
nim SQLITE_CREATE_TRIGGER query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_TRIGGER const SQLITE_CREATE_TRIGGER 71
nim SQLITE_CREATE_VIEW query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_CREATE_VIEW const SQLITE_CREATE_VIEW 72
nim SQLITE_DELETE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DELETE const SQLITE_DELETE 73
nim SQLITE_DROP_INDEX query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_INDEX const SQLITE_DROP_INDEX 74
nim SQLITE_DROP_TABLE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_TABLE const SQLITE_DROP_TABLE 75
nim SQLITE_DROP_TEMP_INDEX query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_TEMP_INDEX const SQLITE_DROP_TEMP_INDEX 76
nim SQLITE_DROP_TEMP_TABLE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_TEMP_TABLE const SQLITE_DROP_TEMP_TABLE 77
nim SQLITE_DROP_TEMP_TRIGGER query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_TEMP_TRIGGER const SQLITE_DROP_TEMP_TRIGGER 78
nim SQLITE_DROP_TEMP_VIEW query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_TEMP_VIEW const SQLITE_DROP_TEMP_VIEW 79
nim SQLITE_DROP_TRIGGER query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_TRIGGER const SQLITE_DROP_TRIGGER 80
nim SQLITE_DROP_VIEW query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DROP_VIEW const SQLITE_DROP_VIEW 81
nim SQLITE_INSERT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_INSERT const SQLITE_INSERT 82
nim SQLITE_PRAGMA query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_PRAGMA const SQLITE_PRAGMA 83
nim SQLITE_READ query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_READ const SQLITE_READ 84
nim SQLITE_SELECT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_SELECT const SQLITE_SELECT 85
nim SQLITE_TRANSACTION query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_TRANSACTION const SQLITE_TRANSACTION 86
nim SQLITE_UPDATE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_UPDATE const SQLITE_UPDATE 87
nim SQLITE_ATTACH query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_ATTACH const SQLITE_ATTACH 88
nim SQLITE_DETACH query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DETACH const SQLITE_DETACH 89
nim SQLITE_ALTER_TABLE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_ALTER_TABLE const SQLITE_ALTER_TABLE 90
nim SQLITE_REINDEX query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_REINDEX const SQLITE_REINDEX 91
nim SQLITE_DENY query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DENY const SQLITE_DENY 92
nim SQLITE_IGNORE query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_IGNORE const SQLITE_IGNORE 93
nim SQLITE_DETERMINISTIC query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_DETERMINISTIC const SQLITE_DETERMINISTIC 96
nim PSqlite3 query_builder/libs/sqlite/sqlite_rdb.html#PSqlite3 type PSqlite3 100
nim PPSqlite3 query_builder/libs/sqlite/sqlite_rdb.html#PPSqlite3 type PPSqlite3 101
nim PSqlite3_Backup query_builder/libs/sqlite/sqlite_rdb.html#PSqlite3_Backup type PSqlite3_Backup 103
nim PPSqlite3_Backup query_builder/libs/sqlite/sqlite_rdb.html#PPSqlite3_Backup type PPSqlite3_Backup 104
nim Pcontext query_builder/libs/sqlite/sqlite_rdb.html#Pcontext type Pcontext 106
nim PStmt query_builder/libs/sqlite/sqlite_rdb.html#PStmt type PStmt 108
nim InstantRow query_builder/libs/sqlite/sqlite_rdb.html#InstantRow type InstantRow 109
nim PValue query_builder/libs/sqlite/sqlite_rdb.html#PValue type PValue 111
nim PValueArg query_builder/libs/sqlite/sqlite_rdb.html#PValueArg type PValueArg 112
nim Callback query_builder/libs/sqlite/sqlite_rdb.html#Callback type Callback 114
nim Tbind_destructor_func query_builder/libs/sqlite/sqlite_rdb.html#Tbind_destructor_func type Tbind_destructor_func 116
nim Create_function_step_func query_builder/libs/sqlite/sqlite_rdb.html#Create_function_step_func type Create_function_step_func 117
nim Create_function_func_func query_builder/libs/sqlite/sqlite_rdb.html#Create_function_func_func type Create_function_func_func 119
nim Create_function_final_func query_builder/libs/sqlite/sqlite_rdb.html#Create_function_final_func type Create_function_final_func 121
nim Result_func query_builder/libs/sqlite/sqlite_rdb.html#Result_func type Result_func 122
nim Create_collation_func query_builder/libs/sqlite/sqlite_rdb.html#Create_collation_func type Create_collation_func 123
nim Collation_needed_func query_builder/libs/sqlite/sqlite_rdb.html#Collation_needed_func type Collation_needed_func 125
nim SQLITE_STATIC query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_STATIC const SQLITE_STATIC 129
nim SQLITE_TRANSIENT query_builder/libs/sqlite/sqlite_rdb.html#SQLITE_TRANSIENT const SQLITE_TRANSIENT 130
nim close query_builder/libs/sqlite/sqlite_rdb.html#close,PSqlite3 proc close(para1: PSqlite3): int32 132
nim exec query_builder/libs/sqlite/sqlite_rdb.html#exec,PSqlite3,cstring,Callback,pointer,cstring proc exec(para1: PSqlite3; sql: cstring; para3: Callback; para4: pointer;\n errmsg: var cstring): int32 133
nim last_insert_rowid query_builder/libs/sqlite/sqlite_rdb.html#last_insert_rowid,PSqlite3 proc last_insert_rowid(para1: PSqlite3): int64 136
nim changes query_builder/libs/sqlite/sqlite_rdb.html#changes,PSqlite3 proc changes(para1: PSqlite3): int32 138
nim total_changes query_builder/libs/sqlite/sqlite_rdb.html#total_changes,PSqlite3 proc total_changes(para1: PSqlite3): int32 139
nim interrupt query_builder/libs/sqlite/sqlite_rdb.html#interrupt,PSqlite3 proc interrupt(para1: PSqlite3) 141
nim complete query_builder/libs/sqlite/sqlite_rdb.html#complete,cstring proc complete(sql: cstring): int32 142
nim complete16 query_builder/libs/sqlite/sqlite_rdb.html#complete16,pointer proc complete16(sql: pointer): int32 144
nim busy_handler query_builder/libs/sqlite/sqlite_rdb.html#busy_handler,PSqlite3,proc(pointer,int32),pointer proc busy_handler(para1: PSqlite3;\n para2: proc (para1: pointer; para2: int32): int32 {.cdecl.};\n para3: pointer): int32 146
nim busy_timeout query_builder/libs/sqlite/sqlite_rdb.html#busy_timeout,PSqlite3,int32 proc busy_timeout(para1: PSqlite3; ms: int32): int32 150
nim get_table query_builder/libs/sqlite/sqlite_rdb.html#get_table,PSqlite3,cstring,cstringArray,cint,cint,ptr.cstring proc get_table(para1: PSqlite3; sql: cstring; resultp: var cstringArray;\n nrow, ncolumn: var cint; errmsg: ptr cstring): int32 152
nim free_table query_builder/libs/sqlite/sqlite_rdb.html#free_table,cstringArray proc free_table(result: cstringArray) 155
nim mprintf query_builder/libs/sqlite/sqlite_rdb.html#mprintf,cstring proc mprintf(para1: cstring): cstring 159
nim free query_builder/libs/sqlite/sqlite_rdb.html#free,cstring proc free(z: cstring) 162
nim snprintf query_builder/libs/sqlite/sqlite_rdb.html#snprintf,int32,cstring,cstring proc snprintf(para1: int32; para2: cstring; para3: cstring): cstring 164
nim set_authorizer query_builder/libs/sqlite/sqlite_rdb.html#set_authorizer,PSqlite3,proc(pointer,int32,cstring,cstring,cstring,cstring),pointer proc set_authorizer(para1: PSqlite3; xAuth: proc (para1: pointer; para2: int32;\n para3: cstring; para4: cstring; para5: cstring; para6: cstring): int32 {.\n cdecl.}; pUserData: pointer): int32 166
nim trace query_builder/libs/sqlite/sqlite_rdb.html#trace,PSqlite3,proc(pointer,cstring),pointer proc trace(para1: PSqlite3; xTrace: proc (para1: pointer; para2: cstring) {.cdecl.};\n para3: pointer): pointer 170
nim progress_handler query_builder/libs/sqlite/sqlite_rdb.html#progress_handler,PSqlite3,int32,proc(pointer),pointer proc progress_handler(para1: PSqlite3; para2: int32;\n para3: proc (para1: pointer): int32 {.cdecl.}; para4: pointer) 173
nim commit_hook query_builder/libs/sqlite/sqlite_rdb.html#commit_hook,PSqlite3,proc(pointer),pointer proc commit_hook(para1: PSqlite3; para2: proc (para1: pointer): int32 {.cdecl.};\n para3: pointer): pointer 177
nim open query_builder/libs/sqlite/sqlite_rdb.html#open,cstring,PSqlite3 proc open(filename: cstring; ppDb: var PSqlite3): int32 180
nim open16 query_builder/libs/sqlite/sqlite_rdb.html#open16,pointer,PSqlite3 proc open16(filename: pointer; ppDb: var PSqlite3): int32 182
nim errcode query_builder/libs/sqlite/sqlite_rdb.html#errcode,PSqlite3 proc errcode(db: PSqlite3): int32 184
nim errmsg query_builder/libs/sqlite/sqlite_rdb.html#errmsg,PSqlite3 proc errmsg(para1: PSqlite3): cstring 185
nim errmsg16 query_builder/libs/sqlite/sqlite_rdb.html#errmsg16,PSqlite3 proc errmsg16(para1: PSqlite3): pointer 186
nim prepare query_builder/libs/sqlite/sqlite_rdb.html#prepare,PSqlite3,cstring,int32,PStmt,ptr.cstring proc prepare(db: PSqlite3; zSql: cstring; nBytes: int32; ppStmt: var PStmt;\n pzTail: ptr cstring): int32 188
nim prepare_v2 query_builder/libs/sqlite/sqlite_rdb.html#prepare_v2,PSqlite3,cstring,cint,PStmt,ptr.cstring proc prepare_v2(db: PSqlite3; zSql: cstring; nByte: cint; ppStmt: var PStmt;\n pzTail: ptr cstring): cint 192
nim prepare16 query_builder/libs/sqlite/sqlite_rdb.html#prepare16,PSqlite3,pointer,int32,PStmt,pointer proc prepare16(db: PSqlite3; zSql: pointer; nBytes: int32; ppStmt: var PStmt;\n pzTail: var pointer): int32 196
nim bind_blob query_builder/libs/sqlite/sqlite_rdb.html#bind_blob,PStmt,int32,pointer,int32,Tbind_destructor_func proc bind_blob(para1: PStmt; para2: int32; para3: pointer; n: int32;\n para5: Tbind_destructor_func): int32 199
nim bind_double query_builder/libs/sqlite/sqlite_rdb.html#bind_double,PStmt,int32,float64 proc bind_double(para1: PStmt; para2: int32; para3: float64): int32 202
nim bind_int query_builder/libs/sqlite/sqlite_rdb.html#bind_int,PStmt,int32,int32 proc bind_int(para1: PStmt; para2: int32; para3: int32): int32 204
nim bind_int64 query_builder/libs/sqlite/sqlite_rdb.html#bind_int64,PStmt,int32,int64 proc bind_int64(para1: PStmt; para2: int32; para3: int64): int32 206
nim bind_null query_builder/libs/sqlite/sqlite_rdb.html#bind_null,PStmt,int32 proc bind_null(para1: PStmt; para2: int32): int32 208
nim bind_text query_builder/libs/sqlite/sqlite_rdb.html#bind_text,PStmt,int32,cstring,int32,Tbind_destructor_func proc bind_text(para1: PStmt; para2: int32; para3: cstring; n: int32;\n para5: Tbind_destructor_func): int32 210
nim bind_text16 query_builder/libs/sqlite/sqlite_rdb.html#bind_text16,PStmt,int32,pointer,int32,Tbind_destructor_func proc bind_text16(para1: PStmt; para2: int32; para3: pointer; para4: int32;\n para5: Tbind_destructor_func): int32 213
nim bind_blob query_builder/libs/sqlite/sqlite_rdb.html#bind_blob,PStmt,int32,pointer,int32,int32 proc bind_blob(para1: PStmt; para2: int32; para3: pointer; n: int32; para5: int32): int32 219
nim bind_text query_builder/libs/sqlite/sqlite_rdb.html#bind_text,PStmt,int32,cstring,int32,int32 proc bind_text(para1: PStmt; para2: int32; para3: cstring; n: int32; para5: int32): int32 222
nim bind_text16 query_builder/libs/sqlite/sqlite_rdb.html#bind_text16,PStmt,int32,pointer,int32,int32 proc bind_text16(para1: PStmt; para2: int32; para3: pointer; para4: int32;\n para5: int32): int32 225
nim bind_parameter_count query_builder/libs/sqlite/sqlite_rdb.html#bind_parameter_count,PStmt proc bind_parameter_count(para1: PStmt): int32 228
nim bind_parameter_name query_builder/libs/sqlite/sqlite_rdb.html#bind_parameter_name,PStmt,int32 proc bind_parameter_name(para1: PStmt; para2: int32): cstring 230
nim bind_parameter_index query_builder/libs/sqlite/sqlite_rdb.html#bind_parameter_index,PStmt,cstring proc bind_parameter_index(para1: PStmt; zName: cstring): int32 232
nim clear_bindings query_builder/libs/sqlite/sqlite_rdb.html#clear_bindings,PStmt proc clear_bindings(para1: PStmt): int32 234
nim column_count query_builder/libs/sqlite/sqlite_rdb.html#column_count,PStmt proc column_count(PStmt: PStmt): int32 236
nim column_name query_builder/libs/sqlite/sqlite_rdb.html#column_name,PStmt,int32 proc column_name(para1: PStmt; para2: int32): cstring 238
nim column_table_name query_builder/libs/sqlite/sqlite_rdb.html#column_table_name,PStmt,int32 proc column_table_name(para1: PStmt; para2: int32): cstring 240
nim column_name16 query_builder/libs/sqlite/sqlite_rdb.html#column_name16,PStmt,int32 proc column_name16(para1: PStmt; para2: int32): pointer 242
nim column_decltype query_builder/libs/sqlite/sqlite_rdb.html#column_decltype,PStmt,int32 proc column_decltype(para1: PStmt; i: int32): cstring 244
nim column_decltype16 query_builder/libs/sqlite/sqlite_rdb.html#column_decltype16,PStmt,int32 proc column_decltype16(para1: PStmt; para2: int32): pointer 246
nim step query_builder/libs/sqlite/sqlite_rdb.html#step,PStmt proc step(para1: PStmt): int32 248
nim data_count query_builder/libs/sqlite/sqlite_rdb.html#data_count,PStmt proc data_count(PStmt: PStmt): int32 249
nim column_blob query_builder/libs/sqlite/sqlite_rdb.html#column_blob,PStmt,int32 proc column_blob(para1: PStmt; iCol: int32): pointer 251
nim column_bytes query_builder/libs/sqlite/sqlite_rdb.html#column_bytes,PStmt,int32 proc column_bytes(para1: PStmt; iCol: int32): int32 253
nim column_bytes16 query_builder/libs/sqlite/sqlite_rdb.html#column_bytes16,PStmt,int32 proc column_bytes16(para1: PStmt; iCol: int32): int32 255
nim column_double query_builder/libs/sqlite/sqlite_rdb.html#column_double,PStmt,int32 proc column_double(para1: PStmt; iCol: int32): float64 257
nim column_int query_builder/libs/sqlite/sqlite_rdb.html#column_int,PStmt,int32 proc column_int(para1: PStmt; iCol: int32): int32 259
nim column_int64 query_builder/libs/sqlite/sqlite_rdb.html#column_int64,PStmt,int32 proc column_int64(para1: PStmt; iCol: int32): int64 261
nim column_text query_builder/libs/sqlite/sqlite_rdb.html#column_text,PStmt,int32 proc column_text(para1: PStmt; iCol: int32): cstring 263
nim column_text16 query_builder/libs/sqlite/sqlite_rdb.html#column_text16,PStmt,int32 proc column_text16(para1: PStmt; iCol: int32): pointer 265
nim column_type query_builder/libs/sqlite/sqlite_rdb.html#column_type,PStmt,int32 proc column_type(para1: PStmt; iCol: int32): int32 267
nim finalize query_builder/libs/sqlite/sqlite_rdb.html#finalize,PStmt proc finalize(PStmt: PStmt): int32 269
nim reset query_builder/libs/sqlite/sqlite_rdb.html#reset,PStmt proc reset(PStmt: PStmt): int32 271
nim create_function query_builder/libs/sqlite/sqlite_rdb.html#create_function,PSqlite3,cstring,int32,int32,pointer,Create_function_func_func,Create_function_step_func,Create_function_final_func proc create_function(para1: PSqlite3; zFunctionName: cstring; nArg: int32;\n eTextRep: int32; para5: pointer;\n xFunc: Create_function_func_func;\n xStep: Create_function_step_func;\n xFinal: Create_function_final_func): int32 272
nim create_function16 query_builder/libs/sqlite/sqlite_rdb.html#create_function16,PSqlite3,pointer,int32,int32,pointer,Create_function_func_func,Create_function_step_func,Create_function_final_func proc create_function16(para1: PSqlite3; zFunctionName: pointer; nArg: int32;\n eTextRep: int32; para5: pointer;\n xFunc: Create_function_func_func;\n xStep: Create_function_step_func;\n xFinal: Create_function_final_func): int32 278
nim aggregate_count query_builder/libs/sqlite/sqlite_rdb.html#aggregate_count,Pcontext proc aggregate_count(para1: Pcontext): int32 284
nim value_blob query_builder/libs/sqlite/sqlite_rdb.html#value_blob,PValue proc value_blob(para1: PValue): pointer 286
nim value_bytes query_builder/libs/sqlite/sqlite_rdb.html#value_bytes,PValue proc value_bytes(para1: PValue): int32 288
nim value_bytes16 query_builder/libs/sqlite/sqlite_rdb.html#value_bytes16,PValue proc value_bytes16(para1: PValue): int32 290
nim value_double query_builder/libs/sqlite/sqlite_rdb.html#value_double,PValue proc value_double(para1: PValue): float64 292
nim value_int query_builder/libs/sqlite/sqlite_rdb.html#value_int,PValue proc value_int(para1: PValue): int32 294
nim value_int64 query_builder/libs/sqlite/sqlite_rdb.html#value_int64,PValue proc value_int64(para1: PValue): int64 296
nim value_text query_builder/libs/sqlite/sqlite_rdb.html#value_text,PValue proc value_text(para1: PValue): cstring 298
nim value_text16 query_builder/libs/sqlite/sqlite_rdb.html#value_text16,PValue proc value_text16(para1: PValue): pointer 300
nim value_text16le query_builder/libs/sqlite/sqlite_rdb.html#value_text16le,PValue proc value_text16le(para1: PValue): pointer 302
nim value_text16be query_builder/libs/sqlite/sqlite_rdb.html#value_text16be,PValue proc value_text16be(para1: PValue): pointer 304
nim value_type query_builder/libs/sqlite/sqlite_rdb.html#value_type,PValue proc value_type(para1: PValue): int32 306
nim aggregate_context query_builder/libs/sqlite/sqlite_rdb.html#aggregate_context,Pcontext,int32 proc aggregate_context(para1: Pcontext; nBytes: int32): pointer 308
nim user_data query_builder/libs/sqlite/sqlite_rdb.html#user_data,Pcontext proc user_data(para1: Pcontext): pointer 310
nim get_auxdata query_builder/libs/sqlite/sqlite_rdb.html#get_auxdata,Pcontext,int32 proc get_auxdata(para1: Pcontext; para2: int32): pointer 312
nim set_auxdata query_builder/libs/sqlite/sqlite_rdb.html#set_auxdata,Pcontext,int32,pointer,proc(pointer) proc set_auxdata(para1: Pcontext; para2: int32; para3: pointer;\n para4: proc (para1: pointer) {.cdecl.}) 314
nim result_blob query_builder/libs/sqlite/sqlite_rdb.html#result_blob,Pcontext,pointer,int32,Result_func proc result_blob(para1: Pcontext; para2: pointer; para3: int32; para4: Result_func) 317
nim result_double query_builder/libs/sqlite/sqlite_rdb.html#result_double,Pcontext,float64 proc result_double(para1: Pcontext; para2: float64) 320
nim result_error query_builder/libs/sqlite/sqlite_rdb.html#result_error,Pcontext,cstring,int32 proc result_error(para1: Pcontext; para2: cstring; para3: int32) 322
nim result_error16 query_builder/libs/sqlite/sqlite_rdb.html#result_error16,Pcontext,pointer,int32 proc result_error16(para1: Pcontext; para2: pointer; para3: int32) 324
nim result_int query_builder/libs/sqlite/sqlite_rdb.html#result_int,Pcontext,int32 proc result_int(para1: Pcontext; para2: int32) 326
nim result_int64 query_builder/libs/sqlite/sqlite_rdb.html#result_int64,Pcontext,int64 proc result_int64(para1: Pcontext; para2: int64) 328
nim result_null query_builder/libs/sqlite/sqlite_rdb.html#result_null,Pcontext proc result_null(para1: Pcontext) 330
nim result_text query_builder/libs/sqlite/sqlite_rdb.html#result_text,Pcontext,cstring,int32,Result_func proc result_text(para1: Pcontext; para2: cstring; para3: int32; para4: Result_func) 332
nim result_text16 query_builder/libs/sqlite/sqlite_rdb.html#result_text16,Pcontext,pointer,int32,Result_func proc result_text16(para1: Pcontext; para2: pointer; para3: int32; para4: Result_func) 335
nim result_text16le query_builder/libs/sqlite/sqlite_rdb.html#result_text16le,Pcontext,pointer,int32,Result_func proc result_text16le(para1: Pcontext; para2: pointer; para3: int32;\n para4: Result_func) 338
nim result_text16be query_builder/libs/sqlite/sqlite_rdb.html#result_text16be,Pcontext,pointer,int32,Result_func proc result_text16be(para1: Pcontext; para2: pointer; para3: int32;\n para4: Result_func) 341
nim result_value query_builder/libs/sqlite/sqlite_rdb.html#result_value,Pcontext,PValue proc result_value(para1: Pcontext; para2: PValue) 344
nim create_collation query_builder/libs/sqlite/sqlite_rdb.html#create_collation,PSqlite3,cstring,int32,pointer,Create_collation_func proc create_collation(para1: PSqlite3; zName: cstring; eTextRep: int32;\n para4: pointer; xCompare: Create_collation_func): int32 346
nim create_collation16 query_builder/libs/sqlite/sqlite_rdb.html#create_collation16,PSqlite3,cstring,int32,pointer,Create_collation_func proc create_collation16(para1: PSqlite3; zName: cstring; eTextRep: int32;\n para4: pointer; xCompare: Create_collation_func): int32 349
nim collation_needed query_builder/libs/sqlite/sqlite_rdb.html#collation_needed,PSqlite3,pointer,Collation_needed_func proc collation_needed(para1: PSqlite3; para2: pointer; para3: Collation_needed_func): int32 352
nim collation_needed16 query_builder/libs/sqlite/sqlite_rdb.html#collation_needed16,PSqlite3,pointer,Collation_needed_func proc collation_needed16(para1: PSqlite3; para2: pointer; para3: Collation_needed_func): int32 354
nim libversion query_builder/libs/sqlite/sqlite_rdb.html#libversion proc libversion(): cstring 356
nim version query_builder/libs/sqlite/sqlite_rdb.html#version proc version(): cstring 358
nim libversion_number query_builder/libs/sqlite/sqlite_rdb.html#libversion_number proc libversion_number(): int32 360
nim backup_init query_builder/libs/sqlite/sqlite_rdb.html#backup_init,PSqlite3,cstring,PSqlite3,cstring proc backup_init(pDest: PSqlite3; zDestName: cstring; pSource: PSqlite3;\n zSourceName: cstring): PSqlite3_Backup 363
nim backup_step query_builder/libs/sqlite/sqlite_rdb.html#backup_step,PSqlite3_Backup,int32 proc backup_step(pBackup: PSqlite3_Backup; nPage: int32): int32 366
nim backup_finish query_builder/libs/sqlite/sqlite_rdb.html#backup_finish,PSqlite3_Backup proc backup_finish(pBackup: PSqlite3_Backup): int32 368
nim backup_pagecount query_builder/libs/sqlite/sqlite_rdb.html#backup_pagecount,PSqlite3_Backup proc backup_pagecount(pBackup: PSqlite3_Backup): int32 370
nim backup_remaining query_builder/libs/sqlite/sqlite_rdb.html#backup_remaining,PSqlite3_Backup proc backup_remaining(pBackup: PSqlite3_Backup): int32 372
nim sqlite3_sleep query_builder/libs/sqlite/sqlite_rdb.html#sqlite3_sleep,int64 proc sqlite3_sleep(t: int64): int64 374
nimgrp bindtext16 query_builder/libs/sqlite/sqlite_rdb.html#bind_text16-procs-all proc 213
nimgrp bindtext query_builder/libs/sqlite/sqlite_rdb.html#bind_text-procs-all proc 210
nimgrp bindblob query_builder/libs/sqlite/sqlite_rdb.html#bind_blob-procs-all proc 199
@@ -0,0 +1,230 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/surreal/surreal_impl</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/surreal/surreal_impl</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#SurrealImpl" title="SurrealImpl = ref object">SurrealImpl</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">exec
<li><a class="reference" href="#exec%2CSurrealConn%2Cstring%2CJsonNode%2Cint" title="exec(db: SurrealConn; query: string; args: JsonNode; timeout: int): owned(
Future[void])">exec(db: SurrealConn; query: string; args: JsonNode; timeout: int): owned(
Future[void])</a></li>
<li><a class="reference" href="#exec%2CSurrealConn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="exec(db: SurrealConn; query: string; args: seq[string]; timeout: int): owned(
Future[void])">exec(db: SurrealConn; query: string; args: seq[string]; timeout: int): owned(
Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">info
<li><a class="reference" href="#info%2CSurrealConn%2Cstring%2CJsonNode%2Cint" title="info(db: SurrealConn; query: string; args: JsonNode; timeout: int): Future[
JsonNode]">info(db: SurrealConn; query: string; args: JsonNode; timeout: int): Future[
JsonNode]</a></li>
<li><a class="reference" href="#info%2CSurrealConn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="info(db: SurrealConn; query: string; args: seq[string]; timeout: int): Future[
JsonNode]">info(db: SurrealConn; query: string; args: seq[string]; timeout: int): Future[
JsonNode]</a></li>
</ul>
<ul class="simple nested-toc-section">query
<li><a class="reference" href="#query%2CSurrealConn%2Cstring%2CJsonNode%2Cint" title="query(db: SurrealConn; query: string; args: JsonNode; timeout: int): Future[
JsonNode]">query(db: SurrealConn; query: string; args: JsonNode; timeout: int): Future[
JsonNode]</a></li>
<li><a class="reference" href="#query%2CSurrealConn%2Cstring%2Cseq%5Bstring%5D%2Cint" title="query(db: SurrealConn; query: string; args: seq[string]; timeout: int): Future[
JsonNode]">query(db: SurrealConn; query: string; args: seq[string]; timeout: int): Future[
JsonNode]</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="surreal_rdb.html">surreal_rdb</a>, <a class="reference external" href="surreal_lib.html">surreal_lib</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="SurrealImpl">
<dt><pre><a href="surreal_impl.html#SurrealImpl"><span class="Identifier">SurrealImpl</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="exec-procs-all">
<div id="exec,SurrealConn,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CSurrealConn%2Cstring%2CJsonNode%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span>
<span class="Identifier">HttpRequestError</span><span class="Other">,</span> <span class="Identifier">LibraryError</span><span class="Other">,</span> <span class="Identifier">SslError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ProtocolError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="exec,SurrealConn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CSurrealConn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span>
<span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span>
<span class="Identifier">HttpRequestError</span><span class="Other">,</span> <span class="Identifier">LibraryError</span><span class="Other">,</span> <span class="Identifier">SslError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ProtocolError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="info-procs-all">
<div id="info,SurrealConn,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#info%2CSurrealConn%2Cstring%2CJsonNode%2Cint"><span class="Identifier">info</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">JsonNode</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span>
<span class="Identifier">HttpRequestError</span><span class="Other">,</span> <span class="Identifier">LibraryError</span><span class="Other">,</span> <span class="Identifier">SslError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ProtocolError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="info,SurrealConn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#info%2CSurrealConn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">info</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">JsonNode</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span>
<span class="Identifier">HttpRequestError</span><span class="Other">,</span> <span class="Identifier">LibraryError</span><span class="Other">,</span> <span class="Identifier">SslError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ProtocolError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="query-procs-all">
<div id="query,SurrealConn,string,JsonNode,int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CSurrealConn%2Cstring%2CJsonNode%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">JsonNode</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span>
<span class="Identifier">HttpRequestError</span><span class="Other">,</span> <span class="Identifier">LibraryError</span><span class="Other">,</span> <span class="Identifier">SslError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ProtocolError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
return JArray
</dd>
</div>
<div id="query,SurrealConn,string,seq[string],int">
<dt><pre><span class="Keyword">proc</span> <a href="#query%2CSurrealConn%2Cstring%2Cseq%5Bstring%5D%2Cint"><span class="Identifier">query</span></a><span class="Other">(</span><span class="Identifier">db</span><span class="Other">:</span> <a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a><span class="Other">;</span> <span class="Identifier">query</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">timeout</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">JsonNode</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span>
<span class="Identifier">HttpRequestError</span><span class="Other">,</span> <span class="Identifier">LibraryError</span><span class="Other">,</span> <span class="Identifier">SslError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ProtocolError</span><span class="Other">,</span>
<span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
return JArray
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:36 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,11 @@
nimTitle surreal_impl query_builder/libs/surreal/surreal_impl.html module src/allographer/query_builder/libs/surreal/surreal_impl 0
nim SurrealImpl query_builder/libs/surreal/surreal_impl.html#SurrealImpl type SurrealImpl 10
nim query query_builder/libs/surreal/surreal_impl.html#query,SurrealConn,string,seq[string],int proc query(db: SurrealConn; query: string; args: seq[string]; timeout: int): Future[\n JsonNode] 109
nim query query_builder/libs/surreal/surreal_impl.html#query,SurrealConn,string,JsonNode,int proc query(db: SurrealConn; query: string; args: JsonNode; timeout: int): Future[\n JsonNode] 118
nim exec query_builder/libs/surreal/surreal_impl.html#exec,SurrealConn,string,seq[string],int proc exec(db: SurrealConn; query: string; args: seq[string]; timeout: int): owned(\n Future[void]) 127
nim exec query_builder/libs/surreal/surreal_impl.html#exec,SurrealConn,string,JsonNode,int proc exec(db: SurrealConn; query: string; args: JsonNode; timeout: int): owned(\n Future[void]) 134
nim info query_builder/libs/surreal/surreal_impl.html#info,SurrealConn,string,seq[string],int proc info(db: SurrealConn; query: string; args: seq[string]; timeout: int): Future[\n JsonNode] 141
nim info query_builder/libs/surreal/surreal_impl.html#info,SurrealConn,string,JsonNode,int proc info(db: SurrealConn; query: string; args: JsonNode; timeout: int): Future[\n JsonNode] 146
nimgrp info query_builder/libs/surreal/surreal_impl.html#info-procs-all proc 141
nimgrp query query_builder/libs/surreal/surreal_impl.html#query-procs-all proc 109
nimgrp exec query_builder/libs/surreal/surreal_impl.html#exec-procs-all proc 127
@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/surreal/surreal_lib</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/surreal/surreal_lib</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">dbFormat
<li><a class="reference" href="#dbFormat%2Cstring%2Cvarargs%5Bstring%5D" title="dbFormat(formatstr: string; args: varargs[string]): string">dbFormat(formatstr: string; args: varargs[string]): string</a></li>
<li><a class="reference" href="#dbFormat%2Cstring%2CJsonNode" title="dbFormat(queryString: string; args: JsonNode): string">dbFormat(queryString: string; args: JsonNode): string</a></li>
</ul>
<ul class="simple nested-toc-section">numToAlphabet
<li><a class="reference" href="#numToAlphabet%2Cint" title="numToAlphabet(n: int): string">numToAlphabet(n: int): string</a></li>
</ul>
<ul class="simple nested-toc-section">questionToDaller
<li><a class="reference" href="#questionToDaller%2Cstring" title="questionToDaller(s: string): string">questionToDaller(s: string): string</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="dbFormat-procs-all">
<div id="dbFormat,string,varargs[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2Cstring%2Cvarargs%5Bstring%5D"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">formatstr</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="dbFormat,string,JsonNode">
<dt><pre><span class="Keyword">proc</span> <a href="#dbFormat%2Cstring%2CJsonNode"><span class="Identifier">dbFormat</span></a><span class="Other">(</span><span class="Identifier">queryString</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="numToAlphabet-procs-all">
<div id="numToAlphabet,int">
<dt><pre><span class="Keyword">proc</span> <a href="#numToAlphabet%2Cint"><span class="Identifier">numToAlphabet</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
1 =&gt; &quot;a&quot;, 26 =&gt; &quot;z&quot;, 27 =&gt; &quot;aa&quot;, 28 =&gt; &quot;ab&quot;, 52 =&gt; &quot;az&quot;, 53 =&gt; &quot;ba&quot;
</dd>
</div>
</div>
<div id="questionToDaller-procs-all">
<div id="questionToDaller,string">
<dt><pre><span class="Keyword">proc</span> <a href="#questionToDaller%2Cstring"><span class="Identifier">questionToDaller</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>from <tt class="docutils literal"><span class="pre"><span class="Identifier">UPDATE</span> <span class="Identifier">user</span> <span class="Identifier">SET</span> <span class="Identifier">name</span> <span class="Operator">=</span> <span class="Operator">?</span><span class="Punctuation">,</span> <span class="Identifier">email</span> <span class="Operator">=</span> <span class="Operator">?</span> <span class="Identifier">WHERE</span> <span class="Identifier">id</span> <span class="Operator">=</span> <span class="Operator">?</span></span></tt></p>
<p>to <tt class="docutils literal"><span class="pre"><span class="Identifier">UPDATE</span> <span class="Identifier">user</span> <span class="Identifier">SET</span> <span class="Identifier">name</span> <span class="Operator">=</span> <span class="Operator">$</span><span class="Identifier">a</span><span class="Punctuation">,</span> <span class="Identifier">email</span> <span class="Operator">=</span> <span class="Operator">$</span><span class="Identifier">b</span> <span class="Identifier">WHERE</span> <span class="Identifier">id</span> <span class="Operator">=</span> <span class="Operator">$</span><span class="Identifier">c</span></span></tt></p>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:36 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,6 @@
nimTitle surreal_lib query_builder/libs/surreal/surreal_lib.html module src/allographer/query_builder/libs/surreal/surreal_lib 0
nim dbFormat query_builder/libs/surreal/surreal_lib.html#dbFormat,string,varargs[string] proc dbFormat(formatstr: string; args: varargs[string]): string 97
nim numToAlphabet query_builder/libs/surreal/surreal_lib.html#numToAlphabet,int proc numToAlphabet(n: int): string 112
nim questionToDaller query_builder/libs/surreal/surreal_lib.html#questionToDaller,string proc questionToDaller(s: string): string 118
nim dbFormat query_builder/libs/surreal/surreal_lib.html#dbFormat,string,JsonNode proc dbFormat(queryString: string; args: JsonNode): string 169
nimgrp dbformat query_builder/libs/surreal/surreal_lib.html#dbFormat-procs-all proc 97
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/libs/surreal/surreal_rdb</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/libs/surreal/surreal_rdb</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#SurrealConn" title="SurrealConn = object
client*: AsyncHttpClient
host*: string
port*: int32">SurrealConn</a></li>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="SurrealConn">
<dt><pre><a href="surreal_rdb.html#SurrealConn"><span class="Identifier">SurrealConn</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">client</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">AsyncHttpClient</span>
<span class="Identifier">host</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">port</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int32</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:36 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,2 @@
nimTitle surreal_rdb query_builder/libs/surreal/surreal_rdb.html module src/allographer/query_builder/libs/surreal/surreal_rdb 0
nim SurrealConn query_builder/libs/surreal/surreal_rdb.html#SurrealConn object SurrealConn 3
@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/log</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/log</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#LogSetting" title="LogSetting = ref object
shouldDisplayLog*: bool
shouldOutputLogFile*: bool
logDir*: string">LogSetting</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">echoErrorMsg
<li><a class="reference" href="#echoErrorMsg%2CLogSetting%2Cstring%2Cseq%5Bstring%5D" title="echoErrorMsg(self: LogSetting; msg: string; args: seq[string] = @[])">echoErrorMsg(self: LogSetting; msg: string; args: seq[string] = @[])</a></li>
</ul>
<ul class="simple nested-toc-section">echoWarningMsg
<li><a class="reference" href="#echoWarningMsg%2CLogSetting%2Cstring" title="echoWarningMsg(self: LogSetting; msg: string)">echoWarningMsg(self: LogSetting; msg: string)</a></li>
</ul>
<ul class="simple nested-toc-section">logger
<li><a class="reference" href="#logger%2CLogSetting%2Cauto" title="logger(self: LogSetting; output: auto)">logger(self: LogSetting; output: auto)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="LogSetting">
<dt><pre><a href="log.html#LogSetting"><span class="Identifier">LogSetting</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">shouldDisplayLog</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">shouldOutputLogFile</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">logDir</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="echoErrorMsg-procs-all">
<div id="echoErrorMsg,LogSetting,string,seq[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#echoErrorMsg%2CLogSetting%2Cstring%2Cseq%5Bstring%5D"><span class="Identifier">echoErrorMsg</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="log.html#LogSetting"><span class="Identifier">LogSetting</span></a><span class="Other">;</span> <span class="Identifier">msg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">args</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span>
<span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="echoWarningMsg-procs-all">
<div id="echoWarningMsg,LogSetting,string">
<dt><pre><span class="Keyword">proc</span> <a href="#echoWarningMsg%2CLogSetting%2Cstring"><span class="Identifier">echoWarningMsg</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="log.html#LogSetting"><span class="Identifier">LogSetting</span></a><span class="Other">;</span> <span class="Identifier">msg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span>
<span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="logger-procs-all">
<div id="logger,LogSetting,auto">
<dt><pre><span class="Keyword">proc</span> <a href="#logger%2CLogSetting%2Cauto"><span class="Identifier">logger</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="log.html#LogSetting"><span class="Identifier">LogSetting</span></a><span class="Other">;</span> <span class="Identifier">output</span><span class="Other">:</span> <span class="Identifier">auto</span><span class="Other">)</span></pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:32 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
nimTitle log query_builder/log.html module src/allographer/query_builder/log 0
nim LogSetting query_builder/log.html#LogSetting type LogSetting 10
nim logger query_builder/log.html#logger,LogSetting,auto proc logger(self: LogSetting; output: auto) 15
nim echoErrorMsg query_builder/log.html#echoErrorMsg,LogSetting,string,seq[string] proc echoErrorMsg(self: LogSetting; msg: string; args: seq[string] = @[]) 33
nim echoWarningMsg query_builder/log.html#echoWarningMsg,LogSetting,string proc echoWarningMsg(self: LogSetting; msg: string) 47
@@ -0,0 +1,304 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/models/database_types</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/models/database_types</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#DbColumn" title="DbColumn = object
name*: string ## name of the column
tableName*: string ## name of the table the column belongs to (optional)
typ*: DbType ## type of the column
primaryKey*: bool ## is this a primary key?
foreignKey*: bool ## is this a foreign key?">DbColumn</a></li>
<li><a class="reference" href="#DbColumns" title="DbColumns = seq[DbColumn]">DbColumns</a></li>
<li><a class="reference" href="#DbEffect" title="DbEffect = object of IOEffect">DbEffect</a></li>
<li><a class="reference" href="#DbRows" title="DbRows = seq[DbColumns]">DbRows</a></li>
<li><a class="reference" href="#DbType" title="DbType = object
kind*: DbTypeKind ## the kind of the described type
notNull*: bool ## does the type contain NULL?
name*: string ## the name of the type
size*: Natural ## the size of the datatype; 0 if of variable size
maxReprLen*: Natural ## maximal length required for the representation
precision*, scale*: Natural ## precision and scale of the number
min*, max*: BiggestInt ## the minimum and maximum of allowed values
validValues*: seq[string] ## valid values of an enum or a set">DbType</a></li>
<li><a class="reference" href="#DbTypeKind" title="DbTypeKind = enum
dbUnknown, ## unknown datatype
dbSerial, ## datatype used for primary auto-increment keys
dbNull, ## datatype used for the NULL value
dbBit, ## bit datatype
dbBool, ## boolean datatype
dbBlob, ## blob datatype
dbFixedChar, ## string of fixed length
dbVarchar, ## string datatype
dbJson, ## JSON datatype
dbXml, ## XML datatype
dbInt, ## some integer type
dbUInt, ## some unsigned integer type
dbDecimal, ## decimal numbers (fixed-point number)
dbFloat, ## some floating point type
dbDate, ## a year-month-day description
dbTime, ## HH:MM:SS information
dbDatetime, ## year-month-day and HH:MM:SS information,
## plus optional time or timezone information
dbTimestamp, ## Timestamp values are stored as the number of seconds
## since the epoch ('1970-01-01 00:00:00' UTC).
dbTimeInterval, ## an interval [a,b] of times
dbEnum, ## some enum
dbSet, ## set of enum values
dbArray, ## an array of values
dbComposite, ## composite type (record, struct, etc)
dbUrl, ## a URL
dbUuid, ## a UUID
dbInet, ## an IP address
dbMacAddress, ## a MAC address
dbGeometry, ## some geometric type
dbPoint, ## Point on a plane (x,y)
dbLine, ## Infinite line ((x1,y1),(x2,y2))
dbLseg, ## Finite line segment ((x1,y1),(x2,y2))
dbBox, ## Rectangular box ((x1,y1),(x2,y2))
dbPath, ## Closed or open path (similar to polygon) ((x1,y1),...)
dbPolygon, ## Polygon (similar to closed path) ((x1,y1),...)
dbCircle, ## Circle &lt;(x,y),r&gt; (center point and radius)
dbUser1, ## user definable datatype 1 (for unknown extensions)
dbUser2, ## user definable datatype 2 (for unknown extensions)
dbUser3, ## user definable datatype 3 (for unknown extensions)
dbUser4, ## user definable datatype 4 (for unknown extensions)
dbUser5 ## user definable datatype 5 (for unknown extensions)">DbTypeKind</a></li>
<li><a class="reference" href="#ReadDbEffect" title="ReadDbEffect = object of DbEffect">ReadDbEffect</a></li>
<li><a class="reference" href="#Row" title="Row = seq[string]">Row</a></li>
<li><a class="reference" href="#WriteDbEffect" title="WriteDbEffect = object of DbEffect">WriteDbEffect</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#errorConnectionNum" title="errorConnectionNum = 99999">errorConnectionNum</a></li>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="DbColumn">
<dt><pre><a href="database_types.html#DbColumn"><span class="Identifier">DbColumn</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## name of the column</span>
<span class="Identifier">tableName</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## name of the table the column belongs to (optional)</span>
<span class="Identifier">typ</span><span class="Operator">*</span><span class="Other">:</span> <a href="database_types.html#DbType"><span class="Identifier">DbType</span></a> <span class="Comment">## type of the column</span>
<span class="Identifier">primaryKey</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Comment">## is this a primary key?</span>
<span class="Identifier">foreignKey</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Comment">## is this a foreign key?</span></pre></dt>
<dd>
information about a database column
</dd>
</div>
<div id="DbColumns">
<dt><pre><a href="database_types.html#DbColumns"><span class="Identifier">DbColumns</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="database_types.html#DbColumn"><span class="Identifier">DbColumn</span></a><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="DbEffect">
<dt><pre><a href="database_types.html#DbEffect"><span class="Identifier">DbEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <span class="Identifier">IOEffect</span></pre></dt>
<dd>
effect that denotes a database operation
</dd>
</div>
<div id="DbRows">
<dt><pre><a href="database_types.html#DbRows"><span class="Identifier">DbRows</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="database_types.html#DbColumns"><span class="Identifier">DbColumns</span></a><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="DbType">
<dt><pre><a href="database_types.html#DbType"><span class="Identifier">DbType</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="database_types.html#DbTypeKind"><span class="Identifier">DbTypeKind</span></a> <span class="Comment">## the kind of the described type</span>
<span class="Identifier">notNull</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span> <span class="Comment">## does the type contain NULL?</span>
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## the name of the type</span>
<span class="Identifier">size</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Natural</span> <span class="Comment">## the size of the datatype; 0 if of variable size</span>
<span class="Identifier">maxReprLen</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Natural</span> <span class="Comment">## maximal length required for the representation</span>
<span class="Identifier">precision</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">scale</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Natural</span> <span class="Comment">## precision and scale of the number</span>
<span class="Identifier">min</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">max</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">BiggestInt</span> <span class="Comment">## the minimum and maximum of allowed values</span>
<span class="Identifier">validValues</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Comment">## valid values of an enum or a set</span></pre></dt>
<dd>
describes a database type
</dd>
</div>
<div id="DbTypeKind">
<dt><pre><a href="database_types.html#DbTypeKind"><span class="Identifier">DbTypeKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">dbUnknown</span><span class="Other">,</span> <span class="Comment">## unknown datatype</span>
<span class="Identifier">dbSerial</span><span class="Other">,</span> <span class="Comment">## datatype used for primary auto-increment keys</span>
<span class="Identifier">dbNull</span><span class="Other">,</span> <span class="Comment">## datatype used for the NULL value</span>
<span class="Identifier">dbBit</span><span class="Other">,</span> <span class="Comment">## bit datatype</span>
<span class="Identifier">dbBool</span><span class="Other">,</span> <span class="Comment">## boolean datatype</span>
<span class="Identifier">dbBlob</span><span class="Other">,</span> <span class="Comment">## blob datatype</span>
<span class="Identifier">dbFixedChar</span><span class="Other">,</span> <span class="Comment">## string of fixed length</span>
<span class="Identifier">dbVarchar</span><span class="Other">,</span> <span class="Comment">## string datatype</span>
<span class="Identifier">dbJson</span><span class="Other">,</span> <span class="Comment">## JSON datatype</span>
<span class="Identifier">dbXml</span><span class="Other">,</span> <span class="Comment">## XML datatype</span>
<span class="Identifier">dbInt</span><span class="Other">,</span> <span class="Comment">## some integer type</span>
<span class="Identifier">dbUInt</span><span class="Other">,</span> <span class="Comment">## some unsigned integer type</span>
<span class="Identifier">dbDecimal</span><span class="Other">,</span> <span class="Comment">## decimal numbers (fixed-point number)</span>
<span class="Identifier">dbFloat</span><span class="Other">,</span> <span class="Comment">## some floating point type</span>
<span class="Identifier">dbDate</span><span class="Other">,</span> <span class="Comment">## a year-month-day description</span>
<span class="Identifier">dbTime</span><span class="Other">,</span> <span class="Comment">## HH:MM:SS information</span>
<span class="Identifier">dbDatetime</span><span class="Other">,</span> <span class="Comment">## year-month-day and HH:MM:SS information,</span>
<span class="Comment">## plus optional time or timezone information</span>
<span class="Identifier">dbTimestamp</span><span class="Other">,</span> <span class="Comment">## Timestamp values are stored as the number of seconds</span>
<span class="Comment">## since the epoch ('1970-01-01 00:00:00' UTC).</span>
<span class="Identifier">dbTimeInterval</span><span class="Other">,</span> <span class="Comment">## an interval [a,b] of times</span>
<span class="Identifier">dbEnum</span><span class="Other">,</span> <span class="Comment">## some enum</span>
<span class="Identifier">dbSet</span><span class="Other">,</span> <span class="Comment">## set of enum values</span>
<span class="Identifier">dbArray</span><span class="Other">,</span> <span class="Comment">## an array of values</span>
<span class="Identifier">dbComposite</span><span class="Other">,</span> <span class="Comment">## composite type (record, struct, etc)</span>
<span class="Identifier">dbUrl</span><span class="Other">,</span> <span class="Comment">## a URL</span>
<span class="Identifier">dbUuid</span><span class="Other">,</span> <span class="Comment">## a UUID</span>
<span class="Identifier">dbInet</span><span class="Other">,</span> <span class="Comment">## an IP address</span>
<span class="Identifier">dbMacAddress</span><span class="Other">,</span> <span class="Comment">## a MAC address</span>
<span class="Identifier">dbGeometry</span><span class="Other">,</span> <span class="Comment">## some geometric type</span>
<span class="Identifier">dbPoint</span><span class="Other">,</span> <span class="Comment">## Point on a plane (x,y)</span>
<span class="Identifier">dbLine</span><span class="Other">,</span> <span class="Comment">## Infinite line ((x1,y1),(x2,y2))</span>
<span class="Identifier">dbLseg</span><span class="Other">,</span> <span class="Comment">## Finite line segment ((x1,y1),(x2,y2))</span>
<span class="Identifier">dbBox</span><span class="Other">,</span> <span class="Comment">## Rectangular box ((x1,y1),(x2,y2))</span>
<span class="Identifier">dbPath</span><span class="Other">,</span> <span class="Comment">## Closed or open path (similar to polygon) ((x1,y1),...)</span>
<span class="Identifier">dbPolygon</span><span class="Other">,</span> <span class="Comment">## Polygon (similar to closed path) ((x1,y1),...)</span>
<span class="Identifier">dbCircle</span><span class="Other">,</span> <span class="Comment">## Circle &lt;(x,y),r&gt; (center point and radius)</span>
<span class="Identifier">dbUser1</span><span class="Other">,</span> <span class="Comment">## user definable datatype 1 (for unknown extensions)</span>
<span class="Identifier">dbUser2</span><span class="Other">,</span> <span class="Comment">## user definable datatype 2 (for unknown extensions)</span>
<span class="Identifier">dbUser3</span><span class="Other">,</span> <span class="Comment">## user definable datatype 3 (for unknown extensions)</span>
<span class="Identifier">dbUser4</span><span class="Other">,</span> <span class="Comment">## user definable datatype 4 (for unknown extensions)</span>
<span class="Identifier">dbUser5</span> <span class="Comment">## user definable datatype 5 (for unknown extensions)</span></pre></dt>
<dd>
a superset of datatypes that might be supported.
</dd>
</div>
<div id="ReadDbEffect">
<dt><pre><a href="database_types.html#ReadDbEffect"><span class="Identifier">ReadDbEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="database_types.html#DbEffect"><span class="Identifier">DbEffect</span></a></pre></dt>
<dd>
effect that denotes a read operation
</dd>
</div>
<div id="Row">
<dt><pre><a href="database_types.html#Row"><span class="Identifier">Row</span></a> <span class="Other">=</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="WriteDbEffect">
<dt><pre><a href="database_types.html#WriteDbEffect"><span class="Identifier">WriteDbEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="database_types.html#DbEffect"><span class="Identifier">DbEffect</span></a></pre></dt>
<dd>
effect that denotes a write operation
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="errorConnectionNum">
<dt><pre><a href="database_types.html#errorConnectionNum"><span class="Identifier">errorConnectionNum</span></a> <span class="Other">=</span> <span class="DecNumber">99999</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:32 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,51 @@
nimTitle database_types query_builder/models/database_types.html module src/allographer/query_builder/models/database_types 0
nim Row query_builder/models/database_types.html#Row type Row 2
nim dbUnknown query_builder/models/database_types.html#dbUnknown DbTypeKind.dbUnknown 4
nim dbSerial query_builder/models/database_types.html#dbSerial DbTypeKind.dbSerial 4
nim dbNull query_builder/models/database_types.html#dbNull DbTypeKind.dbNull 4
nim dbBit query_builder/models/database_types.html#dbBit DbTypeKind.dbBit 4
nim dbBool query_builder/models/database_types.html#dbBool DbTypeKind.dbBool 4
nim dbBlob query_builder/models/database_types.html#dbBlob DbTypeKind.dbBlob 4
nim dbFixedChar query_builder/models/database_types.html#dbFixedChar DbTypeKind.dbFixedChar 4
nim dbVarchar query_builder/models/database_types.html#dbVarchar DbTypeKind.dbVarchar 4
nim dbJson query_builder/models/database_types.html#dbJson DbTypeKind.dbJson 4
nim dbXml query_builder/models/database_types.html#dbXml DbTypeKind.dbXml 4
nim dbInt query_builder/models/database_types.html#dbInt DbTypeKind.dbInt 4
nim dbUInt query_builder/models/database_types.html#dbUInt DbTypeKind.dbUInt 4
nim dbDecimal query_builder/models/database_types.html#dbDecimal DbTypeKind.dbDecimal 4
nim dbFloat query_builder/models/database_types.html#dbFloat DbTypeKind.dbFloat 4
nim dbDate query_builder/models/database_types.html#dbDate DbTypeKind.dbDate 4
nim dbTime query_builder/models/database_types.html#dbTime DbTypeKind.dbTime 4
nim dbDatetime query_builder/models/database_types.html#dbDatetime DbTypeKind.dbDatetime 4
nim dbTimestamp query_builder/models/database_types.html#dbTimestamp DbTypeKind.dbTimestamp 4
nim dbTimeInterval query_builder/models/database_types.html#dbTimeInterval DbTypeKind.dbTimeInterval 4
nim dbEnum query_builder/models/database_types.html#dbEnum DbTypeKind.dbEnum 4
nim dbSet query_builder/models/database_types.html#dbSet DbTypeKind.dbSet 4
nim dbArray query_builder/models/database_types.html#dbArray DbTypeKind.dbArray 4
nim dbComposite query_builder/models/database_types.html#dbComposite DbTypeKind.dbComposite 4
nim dbUrl query_builder/models/database_types.html#dbUrl DbTypeKind.dbUrl 4
nim dbUuid query_builder/models/database_types.html#dbUuid DbTypeKind.dbUuid 4
nim dbInet query_builder/models/database_types.html#dbInet DbTypeKind.dbInet 4
nim dbMacAddress query_builder/models/database_types.html#dbMacAddress DbTypeKind.dbMacAddress 4
nim dbGeometry query_builder/models/database_types.html#dbGeometry DbTypeKind.dbGeometry 4
nim dbPoint query_builder/models/database_types.html#dbPoint DbTypeKind.dbPoint 4
nim dbLine query_builder/models/database_types.html#dbLine DbTypeKind.dbLine 4
nim dbLseg query_builder/models/database_types.html#dbLseg DbTypeKind.dbLseg 4
nim dbBox query_builder/models/database_types.html#dbBox DbTypeKind.dbBox 4
nim dbPath query_builder/models/database_types.html#dbPath DbTypeKind.dbPath 4
nim dbPolygon query_builder/models/database_types.html#dbPolygon DbTypeKind.dbPolygon 4
nim dbCircle query_builder/models/database_types.html#dbCircle DbTypeKind.dbCircle 4
nim dbUser1 query_builder/models/database_types.html#dbUser1 DbTypeKind.dbUser1 4
nim dbUser2 query_builder/models/database_types.html#dbUser2 DbTypeKind.dbUser2 4
nim dbUser3 query_builder/models/database_types.html#dbUser3 DbTypeKind.dbUser3 4
nim dbUser4 query_builder/models/database_types.html#dbUser4 DbTypeKind.dbUser4 4
nim dbUser5 query_builder/models/database_types.html#dbUser5 DbTypeKind.dbUser5 4
nim DbTypeKind query_builder/models/database_types.html#DbTypeKind enum DbTypeKind 4
nim DbType query_builder/models/database_types.html#DbType object DbType 48
nim DbColumn query_builder/models/database_types.html#DbColumn object DbColumn 58
nim DbColumns query_builder/models/database_types.html#DbColumns type DbColumns 65
nim DbRows query_builder/models/database_types.html#DbRows type DbRows 66
nim DbEffect query_builder/models/database_types.html#DbEffect object DbEffect 67
nim ReadDbEffect query_builder/models/database_types.html#ReadDbEffect object ReadDbEffect 68
nim WriteDbEffect query_builder/models/database_types.html#WriteDbEffect object WriteDbEffect 69
nim errorConnectionNum query_builder/models/database_types.html#errorConnectionNum const errorConnectionNum 71
@@ -0,0 +1,674 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/models/mariadb/mariadb_exec</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/models/mariadb/mariadb_exec</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">avg
<li><a class="reference" href="#avg%2CMariadbQuery%2Cstring" title="avg(self: MariadbQuery; column: string): Future[Option[float]]">avg(self: MariadbQuery; column: string): Future[Option[float]]</a></li>
</ul>
<ul class="simple nested-toc-section">begin
<li><a class="reference" href="#begin%2CMariadbConnections" title="begin(self: MariadbConnections): owned(Future[void])">begin(self: MariadbConnections): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">columns
<li><a class="reference" href="#columns%2CMariadbQuery" title="columns(self: MariadbQuery): Future[seq[string]]">columns(self: MariadbQuery): Future[seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">commit
<li><a class="reference" href="#commit%2CMariadbConnections" title="commit(self: MariadbConnections): owned(Future[void])">commit(self: MariadbConnections): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">count
<li><a class="reference" href="#count%2CMariadbQuery" title="count(self: MariadbQuery): Future[int]">count(self: MariadbQuery): Future[int]</a></li>
</ul>
<ul class="simple nested-toc-section">delete
<li><a class="reference" href="#delete%2CMariadbQuery" title="delete(self: MariadbQuery): owned(Future[void])">delete(self: MariadbQuery): owned(Future[void])</a></li>
<li><a class="reference" href="#delete%2CMariadbQuery%2Cint%2Cstring" title="delete(self: MariadbQuery; id: int; key = &quot;id&quot;): owned(Future[void])">delete(self: MariadbQuery; id: int; key = &quot;id&quot;): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">exec
<li><a class="reference" href="#exec%2CRawMariadbQuery" title="exec(self: RawMariadbQuery): owned(Future[void])">exec(self: RawMariadbQuery): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">find
<li><a class="reference" href="#find%2CMariadbQuery%2Cint%2Cstring" title="find(self: MariadbQuery; id: int; key = &quot;id&quot;): Future[Option[JsonNode]]">find(self: MariadbQuery; id: int; key = &quot;id&quot;): Future[Option[JsonNode]]</a></li>
<li><a class="reference" href="#find%2CMariadbQuery%2Cstring%2Cstring" title="find(self: MariadbQuery; id: string; key = &quot;id&quot;): Future[Option[JsonNode]]">find(self: MariadbQuery; id: string; key = &quot;id&quot;): Future[Option[JsonNode]]</a></li>
</ul>
<ul class="simple nested-toc-section">findPlain
<li><a class="reference" href="#findPlain%2CMariadbQuery%2Cint%2Cstring" title="findPlain(self: MariadbQuery; id: int; key = &quot;id&quot;): Future[seq[string]]">findPlain(self: MariadbQuery; id: int; key = &quot;id&quot;): Future[seq[string]]</a></li>
<li><a class="reference" href="#findPlain%2CMariadbQuery%2Cstring%2Cstring" title="findPlain(self: MariadbQuery; id: string; key = &quot;id&quot;): Future[seq[string]]">findPlain(self: MariadbQuery; id: string; key = &quot;id&quot;): Future[seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">first
<li><a class="reference" href="#first%2CMariadbQuery" title="first(self: MariadbQuery): Future[Option[JsonNode]]">first(self: MariadbQuery): Future[Option[JsonNode]]</a></li>
<li><a class="reference" href="#first%2CRawMariadbQuery" title="first(self: RawMariadbQuery): Future[Option[JsonNode]]">first(self: RawMariadbQuery): Future[Option[JsonNode]]</a></li>
</ul>
<ul class="simple nested-toc-section">firstPlain
<li><a class="reference" href="#firstPlain%2CMariadbQuery" title="firstPlain(self: MariadbQuery): Future[seq[string]]">firstPlain(self: MariadbQuery): Future[seq[string]]</a></li>
<li><a class="reference" href="#firstPlain%2CRawMariadbQuery" title="firstPlain(self: RawMariadbQuery): Future[seq[string]]">firstPlain(self: RawMariadbQuery): Future[seq[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">get
<li><a class="reference" href="#get%2CMariadbQuery" title="get(self: MariadbQuery): Future[seq[JsonNode]]">get(self: MariadbQuery): Future[seq[JsonNode]]</a></li>
<li><a class="reference" href="#get%2CRawMariadbQuery" title="get(self: RawMariadbQuery): Future[seq[JsonNode]]">get(self: RawMariadbQuery): Future[seq[JsonNode]]</a></li>
</ul>
<ul class="simple nested-toc-section">getPlain
<li><a class="reference" href="#getPlain%2CMariadbQuery" title="getPlain(self: MariadbQuery): Future[seq[seq[string]]]">getPlain(self: MariadbQuery): Future[seq[seq[string]]]</a></li>
<li><a class="reference" href="#getPlain%2CRawMariadbQuery" title="getPlain(self: RawMariadbQuery): Future[seq[seq[string]]]">getPlain(self: RawMariadbQuery): Future[seq[seq[string]]]</a></li>
</ul>
<ul class="simple nested-toc-section">insert
<li><a class="reference" href="#insert%2CMariadbQuery%2CJsonNode" title="insert(self: MariadbQuery; items: JsonNode): owned(Future[void])">insert(self: MariadbQuery; items: JsonNode): owned(Future[void])</a></li>
<li><a class="reference" href="#insert%2CMariadbQuery%2Cseq%5BJsonNode%5D" title="insert(self: MariadbQuery; items: seq[JsonNode]): owned(Future[void])">insert(self: MariadbQuery; items: seq[JsonNode]): owned(Future[void])</a></li>
<li><a class="reference" href="#insert%2CMariadbQuery%2Cseq%5BT%5D" title="insert[T](self: MariadbQuery; items: seq[T]): owned(Future[void])">insert[T](self: MariadbQuery; items: seq[T]): owned(Future[void])</a></li>
<li><a class="reference" href="#insert%2CMariadbQuery%2CT" title="insert[T](self: MariadbQuery; items: T): owned(Future[void])">insert[T](self: MariadbQuery; items: T): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">insertId
<li><a class="reference" href="#insertId%2CMariadbQuery%2CJsonNode%2Cstring" title="insertId(self: MariadbQuery; items: JsonNode; key = &quot;id&quot;): Future[string]">insertId(self: MariadbQuery; items: JsonNode; key = &quot;id&quot;): Future[string]</a></li>
<li><a class="reference" href="#insertId%2CMariadbQuery%2Cseq%5BJsonNode%5D%2Cstring" title="insertId(self: MariadbQuery; items: seq[JsonNode]; key = &quot;id&quot;): Future[
seq[string]]">insertId(self: MariadbQuery; items: seq[JsonNode]; key = &quot;id&quot;): Future[
seq[string]]</a></li>
<li><a class="reference" href="#insertId%2CMariadbQuery%2Cseq%5BT%5D%2Cstring" title="insertId[T](self: MariadbQuery; items: seq[T]; key = &quot;id&quot;): Future[seq[string]]">insertId[T](self: MariadbQuery; items: seq[T]; key = &quot;id&quot;): Future[seq[string]]</a></li>
<li><a class="reference" href="#insertId%2CMariadbQuery%2CT%2Cstring" title="insertId[T](self: MariadbQuery; items: T; key = &quot;id&quot;): Future[string]">insertId[T](self: MariadbQuery; items: T; key = &quot;id&quot;): Future[string]</a></li>
</ul>
<ul class="simple nested-toc-section">max
<li><a class="reference" href="#max%2CMariadbQuery%2Cstring" title="max(self: MariadbQuery; column: string): Future[Option[string]]">max(self: MariadbQuery; column: string): Future[Option[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">min
<li><a class="reference" href="#min%2CMariadbQuery%2Cstring" title="min(self: MariadbQuery; column: string): Future[Option[string]]">min(self: MariadbQuery; column: string): Future[Option[string]]</a></li>
</ul>
<ul class="simple nested-toc-section">rollback
<li><a class="reference" href="#rollback%2CMariadbConnections" title="rollback(self: MariadbConnections): owned(Future[void])">rollback(self: MariadbConnections): owned(Future[void])</a></li>
</ul>
<ul class="simple nested-toc-section">sum
<li><a class="reference" href="#sum%2CMariadbQuery%2Cstring" title="sum(self: MariadbQuery; column: string): Future[Option[float]]">sum(self: MariadbQuery; column: string): Future[Option[float]]</a></li>
</ul>
<ul class="simple nested-toc-section">update
<li><a class="reference" href="#update%2CMariadbQuery%2CJsonNode" title="update(self: MariadbQuery; items: JsonNode): owned(Future[void])">update(self: MariadbQuery; items: JsonNode): owned(Future[void])</a></li>
<li><a class="reference" href="#update%2CMariadbQuery%2CT" title="update[T](self: MariadbQuery; items: T): owned(Future[void])">update[T](self: MariadbQuery; items: T): owned(Future[void])</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">seeder
<li><a class="reference" href="#seeder.t%2CMariadbConnections%2Cstring%2Cstring%2Cuntyped" title="seeder(rdb: MariadbConnections; tableName, column: string; body: untyped): untyped">seeder(rdb: MariadbConnections; tableName, column: string; body: untyped): untyped</a></li>
<li><a class="reference" href="#seeder.t%2CMariadbConnections%2Cstring%2Cuntyped" title="seeder(rdb: MariadbConnections; tableName: string; body: untyped): untyped">seeder(rdb: MariadbConnections; tableName: string; body: untyped): untyped</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../libs/mariadb/mariadb_impl.html">../../libs/mariadb/mariadb_impl</a>, <a class="reference external" href="../../log.html">../../log</a>, <a class="reference external" href="../database_types.html">../database_types</a>, <a class="reference external" href="query/mariadb_builder.html">query/mariadb_builder</a>, <a class="reference external" href="mariadb_types.html">mariadb_types</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="avg-procs-all">
<div id="avg,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#avg%2CMariadbQuery%2Cstring"><span class="Identifier">avg</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">float</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span>
<span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="begin-procs-all">
<div id="begin,MariadbConnections">
<dt><pre><span class="Keyword">proc</span> <a href="#begin%2CMariadbConnections"><span class="Identifier">begin</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="columns-procs-all">
<div id="columns,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#columns%2CMariadbQuery"><span class="Identifier">columns</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
get columns sequence from table
</dd>
</div>
</div>
<div id="commit-procs-all">
<div id="commit,MariadbConnections">
<dt><pre><span class="Keyword">proc</span> <a href="#commit%2CMariadbConnections"><span class="Identifier">commit</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="count-procs-all">
<div id="count,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#count%2CMariadbQuery"><span class="Identifier">count</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">int</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="delete-procs-all">
<div id="delete,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#delete%2CMariadbQuery"><span class="Identifier">delete</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="delete,MariadbQuery,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#delete%2CMariadbQuery%2Cint%2Cstring"><span class="Identifier">delete</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">id</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="exec-procs-all">
<div id="exec,RawMariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#exec%2CRawMariadbQuery"><span class="Identifier">exec</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
It is only used with raw()
</dd>
</div>
</div>
<div id="find-procs-all">
<div id="find,MariadbQuery,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#find%2CMariadbQuery%2Cint%2Cstring"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">id</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="find,MariadbQuery,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#find%2CMariadbQuery%2Cstring%2Cstring"><span class="Identifier">find</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">id</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="findPlain-procs-all">
<div id="findPlain,MariadbQuery,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#findPlain%2CMariadbQuery%2Cint%2Cstring"><span class="Identifier">findPlain</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">id</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="findPlain,MariadbQuery,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#findPlain%2CMariadbQuery%2Cstring%2Cstring"><span class="Identifier">findPlain</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">id</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="first-procs-all">
<div id="first,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#first%2CMariadbQuery"><span class="Identifier">first</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="first,RawMariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#first%2CRawMariadbQuery"><span class="Identifier">first</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
It is only used with raw()
</dd>
</div>
</div>
<div id="firstPlain-procs-all">
<div id="firstPlain,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#firstPlain%2CMariadbQuery"><span class="Identifier">firstPlain</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="firstPlain,RawMariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#firstPlain%2CRawMariadbQuery"><span class="Identifier">firstPlain</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
It is only used with raw()
</dd>
</div>
</div>
<div id="get-procs-all">
<div id="get,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#get%2CMariadbQuery"><span class="Identifier">get</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="get,RawMariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#get%2CRawMariadbQuery"><span class="Identifier">get</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
It is only used with raw()
</dd>
</div>
</div>
<div id="getPlain-procs-all">
<div id="getPlain,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#getPlain%2CMariadbQuery"><span class="Identifier">getPlain</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="getPlain,RawMariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#getPlain%2CRawMariadbQuery"><span class="Identifier">getPlain</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
It is only used with raw()
</dd>
</div>
</div>
<div id="insert-procs-all">
<div id="insert,MariadbQuery,JsonNode">
<dt><pre><span class="Keyword">proc</span> <a href="#insert%2CMariadbQuery%2CJsonNode"><span class="Identifier">insert</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
items is <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>
</dd>
</div>
<div id="insert,MariadbQuery,seq[JsonNode]">
<dt><pre><span class="Keyword">proc</span> <a href="#insert%2CMariadbQuery%2Cseq%5BJsonNode%5D"><span class="Identifier">insert</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="insert,MariadbQuery,seq[T]">
<dt><pre><span class="Keyword">proc</span> <a href="#insert%2CMariadbQuery%2Cseq%5BT%5D"><span class="Identifier">insert</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="insert,MariadbQuery,T">
<dt><pre><span class="Keyword">proc</span> <a href="#insert%2CMariadbQuery%2CT"><span class="Identifier">insert</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="insertId-procs-all">
<div id="insertId,MariadbQuery,JsonNode,string">
<dt><pre><span class="Keyword">proc</span> <a href="#insertId%2CMariadbQuery%2CJsonNode%2Cstring"><span class="Identifier">insertId</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="insertId,MariadbQuery,seq[JsonNode],string">
<dt><pre><span class="Keyword">proc</span> <a href="#insertId%2CMariadbQuery%2Cseq%5BJsonNode%5D%2Cstring"><span class="Identifier">insertId</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">JsonNode</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span>
<span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span>
<span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span>
<span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="insertId,MariadbQuery,seq[T],string">
<dt><pre><span class="Keyword">proc</span> <a href="#insertId%2CMariadbQuery%2Cseq%5BT%5D%2Cstring"><span class="Identifier">insertId</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span>
<span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="insertId,MariadbQuery,T,string">
<dt><pre><span class="Keyword">proc</span> <a href="#insertId%2CMariadbQuery%2CT%2Cstring"><span class="Identifier">insertId</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">key</span> <span class="Other">=</span> <span class="StringLit">&quot;id&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="max-procs-all">
<div id="max,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#max%2CMariadbQuery%2Cstring"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span>
<span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="min-procs-all">
<div id="min,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#min%2CMariadbQuery%2Cstring"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span>
<span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="rollback-procs-all">
<div id="rollback,MariadbConnections">
<dt><pre><span class="Keyword">proc</span> <a href="#rollback%2CMariadbConnections"><span class="Identifier">rollback</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="sum-procs-all">
<div id="sum,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#sum%2CMariadbQuery%2Cstring"><span class="Identifier">sum</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">Option</span><span class="Other">[</span><span class="Identifier">float</span><span class="Other">]</span><span class="Other">]</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span>
<span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="update-procs-all">
<div id="update,MariadbQuery,JsonNode">
<dt><pre><span class="Keyword">proc</span> <a href="#update%2CMariadbQuery%2CJsonNode"><span class="Identifier">update</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">JsonNode</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">,</span> <span class="Identifier">DbError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span>
<span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">,</span>
<span class="Identifier">TimeEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="update,MariadbQuery,T">
<dt><pre><span class="Keyword">proc</span> <a href="#update%2CMariadbQuery%2CT"><span class="Identifier">update</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">items</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">owned</span><span class="Other">(</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">stackTrace</span><span class="Other">:</span> <span class="DecNumber">false</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="18">
<h1><a class="toc-backref" href="#18">Templates</a></h1>
<dl class="item">
<div id="seeder-templates-all">
<div id="seeder.t,MariadbConnections,string,string,untyped">
<dt><pre><span class="Keyword">template</span> <a href="#seeder.t%2CMariadbConnections%2Cstring%2Cstring%2Cuntyped"><span class="Identifier">seeder</span></a><span class="Other">(</span><span class="Identifier">rdb</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">;</span> <span class="Identifier">tableName</span><span class="Other">,</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
<dd>
The <tt class="docutils literal"><span class="pre"><span class="Identifier">seeder</span></span></tt> block allows the code in the block to work only when the table or specified column is empty.
</dd>
</div>
<div id="seeder.t,MariadbConnections,string,untyped">
<dt><pre><span class="Keyword">template</span> <a href="#seeder.t%2CMariadbConnections%2Cstring%2Cuntyped"><span class="Identifier">seeder</span></a><span class="Other">(</span><span class="Identifier">rdb</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">;</span> <span class="Identifier">tableName</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span></pre></dt>
<dd>
The <tt class="docutils literal"><span class="pre"><span class="Identifier">seeder</span></span></tt> block allows the code in the block to work only when the table is empty.
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:35 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,48 @@
nimTitle mariadb_exec query_builder/models/mariadb/mariadb_exec.html module src/allographer/query_builder/models/mariadb/mariadb_exec 0
nim get query_builder/models/mariadb/mariadb_exec.html#get,MariadbQuery proc get(self: MariadbQuery): Future[seq[JsonNode]] 383
nim first query_builder/models/mariadb/mariadb_exec.html#first,MariadbQuery proc first(self: MariadbQuery): Future[Option[JsonNode]] 394
nim find query_builder/models/mariadb/mariadb_exec.html#find,MariadbQuery,string,string proc find(self: MariadbQuery; id: string; key = "id"): Future[Option[JsonNode]] 405
nim find query_builder/models/mariadb/mariadb_exec.html#find,MariadbQuery,int,string proc find(self: MariadbQuery; id: int; key = "id"): Future[Option[JsonNode]] 417
nim getPlain query_builder/models/mariadb/mariadb_exec.html#getPlain,MariadbQuery proc getPlain(self: MariadbQuery): Future[seq[seq[string]]] 421
nim firstPlain query_builder/models/mariadb/mariadb_exec.html#firstPlain,MariadbQuery proc firstPlain(self: MariadbQuery): Future[seq[string]] 432
nim findPlain query_builder/models/mariadb/mariadb_exec.html#findPlain,MariadbQuery,string,string proc findPlain(self: MariadbQuery; id: string; key = "id"): Future[seq[string]] 443
nim findPlain query_builder/models/mariadb/mariadb_exec.html#findPlain,MariadbQuery,int,string proc findPlain(self: MariadbQuery; id: int; key = "id"): Future[seq[string]] 455
nim insert query_builder/models/mariadb/mariadb_exec.html#insert,MariadbQuery,JsonNode proc insert(self: MariadbQuery; items: JsonNode): owned(Future[void]) 460
nim insert query_builder/models/mariadb/mariadb_exec.html#insert,MariadbQuery,seq[JsonNode] proc insert(self: MariadbQuery; items: seq[JsonNode]): owned(Future[void]) 467
nim insertId query_builder/models/mariadb/mariadb_exec.html#insertId,MariadbQuery,JsonNode,string proc insertId(self: MariadbQuery; items: JsonNode; key = "id"): Future[string] 473
nim insertId query_builder/models/mariadb/mariadb_exec.html#insertId,MariadbQuery,seq[JsonNode],string proc insertId(self: MariadbQuery; items: seq[JsonNode]; key = "id"): Future[\n seq[string]] 480
nim insert query_builder/models/mariadb/mariadb_exec.html#insert,MariadbQuery,T proc insert[T](self: MariadbQuery; items: T): owned(Future[void]) 491
nim insert query_builder/models/mariadb/mariadb_exec.html#insert,MariadbQuery,seq[T] proc insert[T](self: MariadbQuery; items: seq[T]): owned(Future[void]) 497
nim insertId query_builder/models/mariadb/mariadb_exec.html#insertId,MariadbQuery,T,string proc insertId[T](self: MariadbQuery; items: T; key = "id"): Future[string] 504
nim insertId query_builder/models/mariadb/mariadb_exec.html#insertId,MariadbQuery,seq[T],string proc insertId[T](self: MariadbQuery; items: seq[T]; key = "id"): Future[seq[string]] 511
nim update query_builder/models/mariadb/mariadb_exec.html#update,MariadbQuery,JsonNode proc update(self: MariadbQuery; items: JsonNode): owned(Future[void]) 522
nim update query_builder/models/mariadb/mariadb_exec.html#update,MariadbQuery,T proc update[T](self: MariadbQuery; items: T): owned(Future[void]) 528
nim delete query_builder/models/mariadb/mariadb_exec.html#delete,MariadbQuery proc delete(self: MariadbQuery): owned(Future[void]) 534
nim delete query_builder/models/mariadb/mariadb_exec.html#delete,MariadbQuery,int,string proc delete(self: MariadbQuery; id: int; key = "id"): owned(Future[void]) 540
nim columns query_builder/models/mariadb/mariadb_exec.html#columns,MariadbQuery proc columns(self: MariadbQuery): Future[seq[string]] 547
nim count query_builder/models/mariadb/mariadb_exec.html#count,MariadbQuery proc count(self: MariadbQuery): Future[int] 559
nim min query_builder/models/mariadb/mariadb_exec.html#min,MariadbQuery,string proc min(self: MariadbQuery; column: string): Future[Option[string]] 569
nim max query_builder/models/mariadb/mariadb_exec.html#max,MariadbQuery,string proc max(self: MariadbQuery; column: string): Future[Option[string]] 585
nim avg query_builder/models/mariadb/mariadb_exec.html#avg,MariadbQuery,string proc avg(self: MariadbQuery; column: string): Future[Option[float]] 601
nim sum query_builder/models/mariadb/mariadb_exec.html#sum,MariadbQuery,string proc sum(self: MariadbQuery; column: string): Future[Option[float]] 611
nim begin query_builder/models/mariadb/mariadb_exec.html#begin,MariadbConnections proc begin(self: MariadbConnections): owned(Future[void]) 621
nim rollback query_builder/models/mariadb/mariadb_exec.html#rollback,MariadbConnections proc rollback(self: MariadbConnections): owned(Future[void]) 626
nim commit query_builder/models/mariadb/mariadb_exec.html#commit,MariadbConnections proc commit(self: MariadbConnections): owned(Future[void]) 631
nim get query_builder/models/mariadb/mariadb_exec.html#get,RawMariadbQuery proc get(self: RawMariadbQuery): Future[seq[JsonNode]] 636
nim getPlain query_builder/models/mariadb/mariadb_exec.html#getPlain,RawMariadbQuery proc getPlain(self: RawMariadbQuery): Future[seq[seq[string]]] 642
nim exec query_builder/models/mariadb/mariadb_exec.html#exec,RawMariadbQuery proc exec(self: RawMariadbQuery): owned(Future[void]) 648
nim first query_builder/models/mariadb/mariadb_exec.html#first,RawMariadbQuery proc first(self: RawMariadbQuery): Future[Option[JsonNode]] 654
nim firstPlain query_builder/models/mariadb/mariadb_exec.html#firstPlain,RawMariadbQuery proc firstPlain(self: RawMariadbQuery): Future[seq[string]] 660
nim seeder query_builder/models/mariadb/mariadb_exec.html#seeder.t,MariadbConnections,string,untyped template seeder(rdb: MariadbConnections; tableName: string; body: untyped): untyped 666
nim seeder query_builder/models/mariadb/mariadb_exec.html#seeder.t,MariadbConnections,string,string,untyped template seeder(rdb: MariadbConnections; tableName, column: string; body: untyped): untyped 673
nimgrp getplain query_builder/models/mariadb/mariadb_exec.html#getPlain-procs-all proc 421
nimgrp firstplain query_builder/models/mariadb/mariadb_exec.html#firstPlain-procs-all proc 432
nimgrp findplain query_builder/models/mariadb/mariadb_exec.html#findPlain-procs-all proc 443
nimgrp insertid query_builder/models/mariadb/mariadb_exec.html#insertId-procs-all proc 473
nimgrp delete query_builder/models/mariadb/mariadb_exec.html#delete-procs-all proc 534
nimgrp get query_builder/models/mariadb/mariadb_exec.html#get-procs-all proc 383
nimgrp update query_builder/models/mariadb/mariadb_exec.html#update-procs-all proc 522
nimgrp find query_builder/models/mariadb/mariadb_exec.html#find-procs-all proc 405
nimgrp first query_builder/models/mariadb/mariadb_exec.html#first-procs-all proc 394
nimgrp insert query_builder/models/mariadb/mariadb_exec.html#insert-procs-all proc 460
nimgrp seeder query_builder/models/mariadb/mariadb_exec.html#seeder-templates-all template 666
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/models/mariadb/mariadb_open</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/models/mariadb/mariadb_open</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">dbOpen
<li><a class="reference" href="#dbOpen%2CtypeMariaDB%2Cstring%2Cstring%2Cstring%2Cstring%2Cint%2Cint%2Cint%2Cstring" title="dbOpen(_: type MariaDB; database: string; user: string; password: string;
host: string; port: int; maxConnections = 1; timeout = 30;
shouldDisplayLog = false; shouldOutputLogFile = false; logDir = &quot;&quot;): MariadbConnections">dbOpen(_: type MariaDB; database: string; user: string; password: string;
host: string; port: int; maxConnections = 1; timeout = 30;
shouldDisplayLog = false; shouldOutputLogFile = false; logDir = &quot;&quot;): MariadbConnections</a></li>
<li><a class="reference" href="#dbOpen%2CtypeMariaDB%2CDatabaseUrl%2Cint%2Cint%2Cstring" title="dbOpen(_: type MariaDB; databaseUrl: DatabaseUrl; maxConnections = 1;
timeout = 30; shouldDisplayLog = false; shouldOutputLogFile = false;
logDir = &quot;&quot;): MariadbConnections">dbOpen(_: type MariaDB; databaseUrl: DatabaseUrl; maxConnections = 1;
timeout = 30; shouldDisplayLog = false; shouldOutputLogFile = false;
logDir = &quot;&quot;): MariadbConnections</a></li>
<li><a class="reference" href="#dbOpen%2CtypeMariaDB%2Cstring%2Cint%2Cint%2Cstring" title="dbOpen(_: type MariaDB; url: string; maxConnections: int = 1; timeout = 30;
shouldDisplayLog = false; shouldOutputLogFile = false; logDir = &quot;&quot;): MariadbConnections">dbOpen(_: type MariaDB; url: string; maxConnections: int = 1; timeout = 30;
shouldDisplayLog = false; shouldOutputLogFile = false; logDir = &quot;&quot;): MariadbConnections</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../libs/database_url.html">../../libs/database_url</a>, <a class="reference external" href="../../libs/mariadb/mariadb_rdb.html">../../libs/mariadb/mariadb_rdb</a>, <a class="reference external" href="../../error.html">../../error</a>, <a class="reference external" href="../../log.html">../../log</a>, <a class="reference external" href="mariadb_types.html">mariadb_types</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="dbOpen-procs-all">
<div id="dbOpen,typeMariaDB,string,string,string,string,int,int,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#dbOpen%2CtypeMariaDB%2Cstring%2Cstring%2Cstring%2Cstring%2Cint%2Cint%2Cint%2Cstring"><span class="Identifier">dbOpen</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">MariaDB</span><span class="Other">;</span> <span class="Identifier">database</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">user</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">password</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">host</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">port</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">;</span> <span class="Identifier">maxConnections</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">;</span> <span class="Identifier">timeout</span> <span class="Other">=</span> <span class="DecNumber">30</span><span class="Other">;</span>
<span class="Identifier">shouldDisplayLog</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">shouldOutputLogFile</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">logDir</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="dbOpen,typeMariaDB,DatabaseUrl,int,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#dbOpen%2CtypeMariaDB%2CDatabaseUrl%2Cint%2Cint%2Cstring"><span class="Identifier">dbOpen</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">MariaDB</span><span class="Other">;</span> <span class="Identifier">databaseUrl</span><span class="Other">:</span> <a href="../../libs/database_url.html#DatabaseUrl"><span class="Identifier">DatabaseUrl</span></a><span class="Other">;</span> <span class="Identifier">maxConnections</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">;</span>
<span class="Identifier">timeout</span> <span class="Other">=</span> <span class="DecNumber">30</span><span class="Other">;</span> <span class="Identifier">shouldDisplayLog</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">shouldOutputLogFile</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span>
<span class="Identifier">logDir</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="dbOpen,typeMariaDB,string,int,int,string">
<dt><pre><span class="Keyword">proc</span> <a href="#dbOpen%2CtypeMariaDB%2Cstring%2Cint%2Cint%2Cstring"><span class="Identifier">dbOpen</span></a><span class="Other">(</span><span class="Operator">_</span><span class="Other">:</span> <span class="Keyword">type</span> <span class="Identifier">MariaDB</span><span class="Other">;</span> <span class="Identifier">url</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">maxConnections</span><span class="Other">:</span> <span class="Identifier">int</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">;</span> <span class="Identifier">timeout</span> <span class="Other">=</span> <span class="DecNumber">30</span><span class="Other">;</span>
<span class="Identifier">shouldDisplayLog</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">shouldOutputLogFile</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">logDir</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a></pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:23 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
nimTitle mariadb_open query_builder/models/mariadb/mariadb_open.html module src/allographer/query_builder/models/mariadb/mariadb_open 0
nim dbOpen query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,string,string,string,string,int,int,int,string proc dbOpen(_: type MariaDB; database: string; user: string; password: string;\n host: string; port: int; maxConnections = 1; timeout = 30;\n shouldDisplayLog = false; shouldOutputLogFile = false; logDir = ""): MariadbConnections 9
nim dbOpen query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,string,int,int,string proc dbOpen(_: type MariaDB; url: string; maxConnections: int = 1; timeout = 30;\n shouldDisplayLog = false; shouldOutputLogFile = false; logDir = ""): MariadbConnections 49
nim dbOpen query_builder/models/mariadb/mariadb_open.html#dbOpen,typeMariaDB,DatabaseUrl,int,int,string proc dbOpen(_: type MariaDB; databaseUrl: DatabaseUrl; maxConnections = 1;\n timeout = 30; shouldDisplayLog = false; shouldOutputLogFile = false;\n logDir = ""): MariadbConnections 54
nimgrp dbopen query_builder/models/mariadb/mariadb_open.html#dbOpen-procs-all proc 9
@@ -0,0 +1,471 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/models/mariadb/mariadb_query</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/models/mariadb/mariadb_query</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">distinct
<li><a class="reference" href="#distinct%2CMariadbQuery" title="`distinct`(self: MariadbQuery): MariadbQuery">`distinct`(self: MariadbQuery): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">groupBy
<li><a class="reference" href="#groupBy%2CMariadbQuery%2Cstring" title="groupBy(self: MariadbQuery; column: string): MariadbQuery">groupBy(self: MariadbQuery; column: string): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">having
<li><a class="reference" href="#having%2CMariadbQuery%2Cstring%2Cstring%2C" title="having(self: MariadbQuery; column: string; symbol: string;
value: string | int | float | bool): MariadbQuery">having(self: MariadbQuery; column: string; symbol: string;
value: string | int | float | bool): MariadbQuery</a></li>
<li><a class="reference" href="#having%2CMariadbQuery%2Cstring%2Cstring%2C_2" title="having(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery">having(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">join
<li><a class="reference" href="#join%2CMariadbQuery%2Cstring%2Cstring%2Cstring%2Cstring" title="join(self: MariadbQuery; table: string; column1: string; symbol: string;
column2: string): MariadbQuery">join(self: MariadbQuery; table: string; column1: string; symbol: string;
column2: string): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">leftJoin
<li><a class="reference" href="#leftJoin%2CMariadbQuery%2Cstring%2Cstring%2Cstring%2Cstring" title="leftJoin(self: MariadbQuery; table: string; column1: string; symbol: string;
column2: string): MariadbQuery">leftJoin(self: MariadbQuery; table: string; column1: string; symbol: string;
column2: string): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">limit
<li><a class="reference" href="#limit%2CMariadbQuery%2Cint" title="limit(self: MariadbQuery; num: int): MariadbQuery">limit(self: MariadbQuery; num: int): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">offset
<li><a class="reference" href="#offset%2CMariadbQuery%2Cint" title="offset(self: MariadbQuery; num: int): MariadbQuery">offset(self: MariadbQuery; num: int): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">orderBy
<li><a class="reference" href="#orderBy%2CMariadbQuery%2Cstring%2COrder" title="orderBy(self: MariadbQuery; column: string; order: Order): MariadbQuery">orderBy(self: MariadbQuery; column: string; order: Order): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">orWhere
<li><a class="reference" href="#orWhere%2CMariadbQuery%2Cstring%2Cstring%2C" title="orWhere(self: MariadbQuery; column: string; symbol: string;
value: string | int | float | bool): MariadbQuery">orWhere(self: MariadbQuery; column: string; symbol: string;
value: string | int | float | bool): MariadbQuery</a></li>
<li><a class="reference" href="#orWhere%2CMariadbQuery%2Cstring%2Cstring%2C_2" title="orWhere(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery">orWhere(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">raw
<li><a class="reference" href="#raw%2CMariadbConnections%2Cstring" title="raw(self: MariadbConnections; sql: string; arges = newJArray()): RawMariadbQuery">raw(self: MariadbConnections; sql: string; arges = newJArray()): RawMariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">select
<li><a class="reference" href="#select%2CMariadbConnections%2Cvarargs%5Bstring%5D" title="select(self: MariadbConnections; columnsArg: varargs[string]): MariadbQuery">select(self: MariadbConnections; columnsArg: varargs[string]): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">table
<li><a class="reference" href="#table%2CMariadbConnections%2Cstring" title="table(self: MariadbConnections; tableArg: string): MariadbQuery">table(self: MariadbConnections; tableArg: string): MariadbQuery</a></li>
<li><a class="reference" href="#table%2CMariadbQuery%2Cstring" title="table(self: MariadbQuery; tableArg: string): MariadbQuery">table(self: MariadbQuery; tableArg: string): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">where
<li><a class="reference" href="#where%2CMariadbQuery%2Cstring%2Cstring%2C" title="where(self: MariadbQuery; column: string; symbol: string;
value: string | int | float): MariadbQuery">where(self: MariadbQuery; column: string; symbol: string;
value: string | int | float): MariadbQuery</a></li>
<li><a class="reference" href="#where%2CMariadbQuery%2Cstring%2Cstring%2Cbool" title="where(self: MariadbQuery; column: string; symbol: string; value: bool): MariadbQuery">where(self: MariadbQuery; column: string; symbol: string; value: bool): MariadbQuery</a></li>
<li><a class="reference" href="#where%2CMariadbQuery%2Cstring%2Cstring%2C_2" title="where(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery">where(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">whereBetween
<li><a class="reference" href="#whereBetween%2CMariadbQuery%2Cstring%2Carray%5B%2C%5D" title="whereBetween(self: MariadbQuery; column: string; width: array[2, int | float]): MariadbQuery">whereBetween(self: MariadbQuery; column: string; width: array[2, int | float]): MariadbQuery</a></li>
<li><a class="reference" href="#whereBetween%2CMariadbQuery%2Cstring%2Carray%5B%2Cstring%5D" title="whereBetween(self: MariadbQuery; column: string; width: array[2, string]): MariadbQuery">whereBetween(self: MariadbQuery; column: string; width: array[2, string]): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">whereIn
<li><a class="reference" href="#whereIn%2CMariadbQuery%2Cstring%2Cseq%5B%5D" title="whereIn(self: MariadbQuery; column: string; width: seq[int | float | string]): MariadbQuery">whereIn(self: MariadbQuery; column: string; width: seq[int | float | string]): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">whereNotBetween
<li><a class="reference" href="#whereNotBetween%2CMariadbQuery%2Cstring%2Carray%5B%2C%5D" title="whereNotBetween(self: MariadbQuery; column: string; width: array[2, int | float]): MariadbQuery">whereNotBetween(self: MariadbQuery; column: string; width: array[2, int | float]): MariadbQuery</a></li>
<li><a class="reference" href="#whereNotBetween%2CMariadbQuery%2Cstring%2Carray%5B%2Cstring%5D" title="whereNotBetween(self: MariadbQuery; column: string; width: array[2, string]): MariadbQuery">whereNotBetween(self: MariadbQuery; column: string; width: array[2, string]): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">whereNotIn
<li><a class="reference" href="#whereNotIn%2CMariadbQuery%2Cstring%2Cseq%5B%5D" title="whereNotIn(self: MariadbQuery; column: string; width: seq[int | float | string]): MariadbQuery">whereNotIn(self: MariadbQuery; column: string; width: seq[int | float | string]): MariadbQuery</a></li>
</ul>
<ul class="simple nested-toc-section">whereNull
<li><a class="reference" href="#whereNull%2CMariadbQuery%2Cstring" title="whereNull(self: MariadbQuery; column: string): MariadbQuery">whereNull(self: MariadbQuery; column: string): MariadbQuery</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../libs/mariadb/mariadb_impl.html">../../libs/mariadb/mariadb_impl</a>, <a class="reference external" href="../../enums.html">../../enums</a>, <a class="reference external" href="mariadb_types.html">mariadb_types</a>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="distinct-procs-all">
<div id="distinct,MariadbQuery">
<dt><pre><span class="Keyword">proc</span> <a href="#distinct%2CMariadbQuery"><span class="Identifier">`distinct`</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="groupBy-procs-all">
<div id="groupBy,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#groupBy%2CMariadbQuery%2Cstring"><span class="Identifier">groupBy</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="having-procs-all">
<div id="having,MariadbQuery,string,string,">
<dt><pre><span class="Keyword">proc</span> <a href="#having%2CMariadbQuery%2Cstring%2Cstring%2C"><span class="Identifier">having</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Operator">|</span> <span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span> <span class="Operator">|</span> <span class="Identifier">bool</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="having,MariadbQuery,string,string,_2">
<dt><pre><span class="Keyword">proc</span> <a href="#having%2CMariadbQuery%2Cstring%2Cstring%2C_2"><span class="Identifier">having</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <span class="Keyword">nil</span><span class="Other">.</span><span class="Keyword">type</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">CatchableError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="join-procs-all">
<div id="join,MariadbQuery,string,string,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#join%2CMariadbQuery%2Cstring%2Cstring%2Cstring%2Cstring"><span class="Identifier">join</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">table</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">column1</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">column2</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="leftJoin-procs-all">
<div id="leftJoin,MariadbQuery,string,string,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#leftJoin%2CMariadbQuery%2Cstring%2Cstring%2Cstring%2Cstring"><span class="Identifier">leftJoin</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">table</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">column1</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">column2</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="limit-procs-all">
<div id="limit,MariadbQuery,int">
<dt><pre><span class="Keyword">proc</span> <a href="#limit%2CMariadbQuery%2Cint"><span class="Identifier">limit</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">num</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="offset-procs-all">
<div id="offset,MariadbQuery,int">
<dt><pre><span class="Keyword">proc</span> <a href="#offset%2CMariadbQuery%2Cint"><span class="Identifier">offset</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">num</span><span class="Other">:</span> <span class="Identifier">int</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="orderBy-procs-all">
<div id="orderBy,MariadbQuery,string,Order">
<dt><pre><span class="Keyword">proc</span> <a href="#orderBy%2CMariadbQuery%2Cstring%2COrder"><span class="Identifier">orderBy</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">order</span><span class="Other">:</span> <a href="../../enums.html#Order"><span class="Identifier">Order</span></a><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="orWhere-procs-all">
<div id="orWhere,MariadbQuery,string,string,">
<dt><pre><span class="Keyword">proc</span> <a href="#orWhere%2CMariadbQuery%2Cstring%2Cstring%2C"><span class="Identifier">orWhere</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Operator">|</span> <span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span> <span class="Operator">|</span> <span class="Identifier">bool</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="orWhere,MariadbQuery,string,string,_2">
<dt><pre><span class="Keyword">proc</span> <a href="#orWhere%2CMariadbQuery%2Cstring%2Cstring%2C_2"><span class="Identifier">orWhere</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <span class="Keyword">nil</span><span class="Other">.</span><span class="Keyword">type</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">CatchableError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="raw-procs-all">
<div id="raw,MariadbConnections,string">
<dt><pre><span class="Keyword">proc</span> <a href="#raw%2CMariadbConnections%2Cstring"><span class="Identifier">raw</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">;</span> <span class="Identifier">sql</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">arges</span> <span class="Other">=</span> <span class="Identifier">newJArray</span><span class="Other">(</span><span class="Other">)</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>arges is <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span></span></tt> <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Identifier">true</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="FloatNumber">1.1</span><span class="Punctuation">,</span> <span class="StringLit">&quot;str&quot;</span><span class="Punctuation">]</span></span></tt></p>
<p>can't use BLOB data.</p>
</dd>
</div>
</div>
<div id="select-procs-all">
<div id="select,MariadbConnections,varargs[string]">
<dt><pre><span class="Keyword">proc</span> <a href="#select%2CMariadbConnections%2Cvarargs%5Bstring%5D"><span class="Identifier">select</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">;</span> <span class="Identifier">columnsArg</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="table-procs-all">
<div id="table,MariadbConnections,string">
<dt><pre><span class="Keyword">proc</span> <a href="#table%2CMariadbConnections%2Cstring"><span class="Identifier">table</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">;</span> <span class="Identifier">tableArg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="table,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#table%2CMariadbQuery%2Cstring"><span class="Identifier">table</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">tableArg</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="where-procs-all">
<div id="where,MariadbQuery,string,string,">
<dt><pre><span class="Keyword">proc</span> <a href="#where%2CMariadbQuery%2Cstring%2Cstring%2C"><span class="Identifier">where</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Operator">|</span> <span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="where,MariadbQuery,string,string,bool">
<dt><pre><span class="Keyword">proc</span> <a href="#where%2CMariadbQuery%2Cstring%2Cstring%2Cbool"><span class="Identifier">where</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">bool</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">CatchableError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
<div id="where,MariadbQuery,string,string,_2">
<dt><pre><span class="Keyword">proc</span> <a href="#where%2CMariadbQuery%2Cstring%2Cstring%2C_2"><span class="Identifier">where</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">symbol</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <span class="Keyword">nil</span><span class="Other">.</span><span class="Keyword">type</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">CatchableError</span><span class="Other">,</span> <span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="whereBetween-procs-all">
<div id="whereBetween,MariadbQuery,string,array[,]">
<dt><pre><span class="Keyword">proc</span> <a href="#whereBetween%2CMariadbQuery%2Cstring%2Carray%5B%2C%5D"><span class="Identifier">whereBetween</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">width</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="DecNumber">2</span><span class="Other">,</span> <span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="whereBetween,MariadbQuery,string,array[,string]">
<dt><pre><span class="Keyword">proc</span> <a href="#whereBetween%2CMariadbQuery%2Cstring%2Carray%5B%2Cstring%5D"><span class="Identifier">whereBetween</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">width</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="DecNumber">2</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="whereIn-procs-all">
<div id="whereIn,MariadbQuery,string,seq[]">
<dt><pre><span class="Keyword">proc</span> <a href="#whereIn%2CMariadbQuery%2Cstring%2Cseq%5B%5D"><span class="Identifier">whereIn</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">width</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span> <span class="Operator">|</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
</div>
<div id="whereNotBetween-procs-all">
<div id="whereNotBetween,MariadbQuery,string,array[,]">
<dt><pre><span class="Keyword">proc</span> <a href="#whereNotBetween%2CMariadbQuery%2Cstring%2Carray%5B%2C%5D"><span class="Identifier">whereNotBetween</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">width</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="DecNumber">2</span><span class="Other">,</span> <span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
<div id="whereNotBetween,MariadbQuery,string,array[,string]">
<dt><pre><span class="Keyword">proc</span> <a href="#whereNotBetween%2CMariadbQuery%2Cstring%2Carray%5B%2Cstring%5D"><span class="Identifier">whereNotBetween</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">width</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="DecNumber">2</span><span class="Other">,</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
<div id="whereNotIn-procs-all">
<div id="whereNotIn,MariadbQuery,string,seq[]">
<dt><pre><span class="Keyword">proc</span> <a href="#whereNotIn%2CMariadbQuery%2Cstring%2Cseq%5B%5D"><span class="Identifier">whereNotIn</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span>
<span class="Identifier">width</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">int</span> <span class="Operator">|</span> <span class="Identifier">float</span> <span class="Operator">|</span> <span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a></pre></dt>
<dd>
</dd>
</div>
</div>
<div id="whereNull-procs-all">
<div id="whereNull,MariadbQuery,string">
<dt><pre><span class="Keyword">proc</span> <a href="#whereNull%2CMariadbQuery%2Cstring"><span class="Identifier">whereNull</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a><span class="Other">;</span> <span class="Identifier">column</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:34 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,32 @@
nimTitle mariadb_query query_builder/models/mariadb/mariadb_query.html module src/allographer/query_builder/models/mariadb/mariadb_query 0
nim select query_builder/models/mariadb/mariadb_query.html#select,MariadbConnections,varargs[string] proc select(self: MariadbConnections; columnsArg: varargs[string]): MariadbQuery 11
nim table query_builder/models/mariadb/mariadb_query.html#table,MariadbConnections,string proc table(self: MariadbConnections; tableArg: string): MariadbQuery 32
nim table query_builder/models/mariadb/mariadb_query.html#table,MariadbQuery,string proc table(self: MariadbQuery; tableArg: string): MariadbQuery 48
nim `distinct` query_builder/models/mariadb/mariadb_query.html#distinct,MariadbQuery proc `distinct`(self: MariadbQuery): MariadbQuery 53
nim join query_builder/models/mariadb/mariadb_query.html#join,MariadbQuery,string,string,string,string proc join(self: MariadbQuery; table: string; column1: string; symbol: string;\n column2: string): MariadbQuery 59
nim leftJoin query_builder/models/mariadb/mariadb_query.html#leftJoin,MariadbQuery,string,string,string,string proc leftJoin(self: MariadbQuery; table: string; column1: string; symbol: string;\n column2: string): MariadbQuery 78
nim where query_builder/models/mariadb/mariadb_query.html#where,MariadbQuery,string,string, proc where(self: MariadbQuery; column: string; symbol: string;\n value: string | int | float): MariadbQuery 100
nim where query_builder/models/mariadb/mariadb_query.html#where,MariadbQuery,string,string,bool proc where(self: MariadbQuery; column: string; symbol: string; value: bool): MariadbQuery 127
nim where query_builder/models/mariadb/mariadb_query.html#where,MariadbQuery,string,string,_2 proc where(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery 154
nim orWhere query_builder/models/mariadb/mariadb_query.html#orWhere,MariadbQuery,string,string, proc orWhere(self: MariadbQuery; column: string; symbol: string;\n value: string | int | float | bool): MariadbQuery 178
nim orWhere query_builder/models/mariadb/mariadb_query.html#orWhere,MariadbQuery,string,string,_2 proc orWhere(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery 205
nim whereBetween query_builder/models/mariadb/mariadb_query.html#whereBetween,MariadbQuery,string,array[,] proc whereBetween(self: MariadbQuery; column: string; width: array[2, int | float]): MariadbQuery 227
nim whereBetween query_builder/models/mariadb/mariadb_query.html#whereBetween,MariadbQuery,string,array[,string] proc whereBetween(self: MariadbQuery; column: string; width: array[2, string]): MariadbQuery 244
nim whereNotBetween query_builder/models/mariadb/mariadb_query.html#whereNotBetween,MariadbQuery,string,array[,] proc whereNotBetween(self: MariadbQuery; column: string; width: array[2, int | float]): MariadbQuery 261
nim whereNotBetween query_builder/models/mariadb/mariadb_query.html#whereNotBetween,MariadbQuery,string,array[,string] proc whereNotBetween(self: MariadbQuery; column: string; width: array[2, string]): MariadbQuery 278
nim whereIn query_builder/models/mariadb/mariadb_query.html#whereIn,MariadbQuery,string,seq[] proc whereIn(self: MariadbQuery; column: string; width: seq[int | float | string]): MariadbQuery 295
nim whereNotIn query_builder/models/mariadb/mariadb_query.html#whereNotIn,MariadbQuery,string,seq[] proc whereNotIn(self: MariadbQuery; column: string; width: seq[int | float | string]): MariadbQuery 312
nim whereNull query_builder/models/mariadb/mariadb_query.html#whereNull,MariadbQuery,string proc whereNull(self: MariadbQuery; column: string): MariadbQuery 329
nim groupBy query_builder/models/mariadb/mariadb_query.html#groupBy,MariadbQuery,string proc groupBy(self: MariadbQuery; column: string): MariadbQuery 343
nim having query_builder/models/mariadb/mariadb_query.html#having,MariadbQuery,string,string, proc having(self: MariadbQuery; column: string; symbol: string;\n value: string | int | float | bool): MariadbQuery 351
nim having query_builder/models/mariadb/mariadb_query.html#having,MariadbQuery,string,string,_2 proc having(self: MariadbQuery; column: string; symbol: string; value: nil.type): MariadbQuery 377
nim orderBy query_builder/models/mariadb/mariadb_query.html#orderBy,MariadbQuery,string,Order proc orderBy(self: MariadbQuery; column: string; order: Order): MariadbQuery 401
nim limit query_builder/models/mariadb/mariadb_query.html#limit,MariadbQuery,int proc limit(self: MariadbQuery; num: int): MariadbQuery 415
nim offset query_builder/models/mariadb/mariadb_query.html#offset,MariadbQuery,int proc offset(self: MariadbQuery; num: int): MariadbQuery 420
nim raw query_builder/models/mariadb/mariadb_query.html#raw,MariadbConnections,string proc raw(self: MariadbConnections; sql: string; arges = newJArray()): RawMariadbQuery 425
nimgrp where query_builder/models/mariadb/mariadb_query.html#where-procs-all proc 100
nimgrp wherebetween query_builder/models/mariadb/mariadb_query.html#whereBetween-procs-all proc 227
nimgrp wherenotbetween query_builder/models/mariadb/mariadb_query.html#whereNotBetween-procs-all proc 261
nimgrp orwhere query_builder/models/mariadb/mariadb_query.html#orWhere-procs-all proc 178
nimgrp having query_builder/models/mariadb/mariadb_query.html#having-procs-all proc 351
nimgrp table query_builder/models/mariadb/mariadb_query.html#table-procs-all proc 32
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/models/mariadb/mariadb_transaction</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/models/mariadb/mariadb_transaction</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">transaction
<li><a class="reference" href="#transaction.t%2CMariadbConnections%2Cuntyped" title="transaction(rdb: MariadbConnections; callback: untyped)">transaction(rdb: MariadbConnections; callback: untyped)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="mariadb_types.html">mariadb_types</a>
</dl>
</div>
<div class="section" id="18">
<h1><a class="toc-backref" href="#18">Templates</a></h1>
<dl class="item">
<div id="transaction-templates-all">
<div id="transaction.t,MariadbConnections,untyped">
<dt><pre><span class="Keyword">template</span> <a href="#transaction.t%2CMariadbConnections%2Cuntyped"><span class="Identifier">transaction</span></a><span class="Other">(</span><span class="Identifier">rdb</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a><span class="Other">;</span> <span class="Identifier">callback</span><span class="Other">:</span> <span class="Identifier">untyped</span><span class="Other">)</span></pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:35 UTC</small>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,2 @@
nimTitle mariadb_transaction query_builder/models/mariadb/mariadb_transaction.html module src/allographer/query_builder/models/mariadb/mariadb_transaction 0
nim transaction query_builder/models/mariadb/mariadb_transaction.html#transaction.t,MariadbConnections,untyped template transaction(rdb: MariadbConnections; callback: untyped) 41
@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>src/allographer/query_builder/models/mariadb/mariadb_types</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../../../nimdoc.out.css?v=2.2.8">
<!-- JS -->
<script type="text/javascript" src="../../../dochack.js?v=2.2.8"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">src/allographer/query_builder/models/mariadb/mariadb_types</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple">
<li><a id="indexLink" href="../../../theindex.html">Index</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput" oninput="search()"/>
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#Connection" title="Connection = object
conn*: PMySQL
isBusy*: bool
createdAt*: int64">Connection</a></li>
<li><a class="reference" href="#ConnectionInfo" title="ConnectionInfo = object
database*: string
user*: string
password*: string
host*: string
port*: int">ConnectionInfo</a></li>
<li><a class="reference" href="#Connections" title="Connections = ref object
conns*: seq[Connection]
timeout*: int
waiters*: Deque[Future[void]]
columnTypeCache*: Table[string, seq[seq[string]]]">Connections</a></li>
<li><a class="reference" href="#MariaDB" title="MariaDB = object">MariaDB</a></li>
<li><a class="reference" href="#MariadbConnections" title="MariadbConnections = ref object
log*: LogSetting
pools*: Connections
info*: ConnectionInfo
isInTransaction*: bool
transactionConn*: int">MariadbConnections</a></li>
<li><a class="reference" href="#MariadbQuery" title="MariadbQuery = ref object
log*: LogSetting
pools*: Connections
info*: ConnectionInfo
query*: JsonNode
queryString*: string
placeHolder*: JsonNode
isInTransaction*: bool
transactionConn*: int">MariadbQuery</a></li>
<li><a class="reference" href="#RawMariadbQuery" title="RawMariadbQuery = ref object
log*: LogSetting
pools*: Connections
info*: ConnectionInfo
query*: JsonNode
queryString*: string
placeHolder*: JsonNode
isInTransaction*: bool
transactionConn*: int">RawMariadbQuery</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">$
<li><a class="reference" href="#%24" title="`$`(self: MariadbConnections | MariadbQuery | RawMariadbQuery): string">`$`(self: MariadbConnections | MariadbQuery | RawMariadbQuery): string</a></li>
</ul>
<ul class="simple nested-toc-section">isConnected
<li><a class="reference" href="#isConnected" title="isConnected(self: MariadbConnections | MariadbQuery | RawMariadbQuery): bool">isConnected(self: MariadbConnections | MariadbQuery | RawMariadbQuery): bool</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc">created by <tt class="docutils literal"><span class="pre"><span class="Keyword">let</span> <span class="Identifier">rdb</span> <span class="Operator">=</span> <span class="Identifier">dbOpen</span><span class="Punctuation">(</span><span class="Identifier">MySQL</span><span class="Punctuation">,</span> <span class="StringLit">&quot;localhost&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">3306</span><span class="Punctuation">)</span></span></tt>created by <tt class="docutils literal"><span class="pre"><span class="Identifier">rdb</span><span class="Operator">.</span><span class="Identifier">select</span><span class="Punctuation">(</span><span class="StringLit">&quot;columnName&quot;</span><span class="Punctuation">)</span></span></tt> or <tt class="docutils literal"><span class="pre"><span class="Identifier">rdb</span><span class="Operator">.</span><span class="Identifier">table</span><span class="Punctuation">(</span><span class="StringLit">&quot;tableName&quot;</span><span class="Punctuation">)</span></span></tt></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../../log.html">../../log</a>, <a class="reference external" href="../../libs/mariadb/mariadb_rdb.html">../../libs/mariadb/mariadb_rdb</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="Connection">
<dt><pre><a href="mariadb_types.html#Connection"><span class="Identifier">Connection</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">conn</span><span class="Operator">*</span><span class="Other">:</span> <a href="../../libs/mariadb/mariadb_rdb.html#PMySQL"><span class="Identifier">PMySQL</span></a>
<span class="Identifier">isBusy</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">createdAt</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int64</span></pre></dt>
<dd>
</dd>
</div>
<div id="ConnectionInfo">
<dt><pre><a href="mariadb_types.html#ConnectionInfo"><span class="Identifier">ConnectionInfo</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">database</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">user</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">password</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">host</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">port</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
</dd>
</div>
<div id="Connections">
<dt><pre><a href="mariadb_types.html#Connections"><span class="Identifier">Connections</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">conns</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="mariadb_types.html#Connection"><span class="Identifier">Connection</span></a><span class="Other">]</span>
<span class="Identifier">timeout</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span>
<span class="Identifier">waiters</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Deque</span><span class="Other">[</span><span class="Identifier">Future</span><span class="Other">[</span><span class="Identifier">void</span><span class="Other">]</span><span class="Other">]</span>
<span class="Identifier">columnTypeCache</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">Table</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">,</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">]</span><span class="Other">]</span></pre></dt>
<dd>
</dd>
</div>
<div id="MariaDB">
<dt><pre><a href="mariadb_types.html#MariaDB"><span class="Identifier">MariaDB</span></a> <span class="Other">=</span> <span class="Keyword">object</span></pre></dt>
<dd>
</dd>
</div>
<div id="MariadbConnections">
<dt><pre><a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">log</span><span class="Operator">*</span><span class="Other">:</span> <a href="../../log.html#LogSetting"><span class="Identifier">LogSetting</span></a>
<span class="Identifier">pools</span><span class="Operator">*</span><span class="Other">:</span> <a href="mariadb_types.html#Connections"><span class="Identifier">Connections</span></a>
<span class="Identifier">info</span><span class="Operator">*</span><span class="Other">:</span> <a href="mariadb_types.html#ConnectionInfo"><span class="Identifier">ConnectionInfo</span></a>
<span class="Identifier">isInTransaction</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">transactionConn</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
</dd>
</div>
<div id="MariadbQuery">
<dt><pre><a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">log</span><span class="Operator">*</span><span class="Other">:</span> <a href="../../log.html#LogSetting"><span class="Identifier">LogSetting</span></a>
<span class="Identifier">pools</span><span class="Operator">*</span><span class="Other">:</span> <a href="mariadb_types.html#Connections"><span class="Identifier">Connections</span></a>
<span class="Identifier">info</span><span class="Operator">*</span><span class="Other">:</span> <a href="mariadb_types.html#ConnectionInfo"><span class="Identifier">ConnectionInfo</span></a>
<span class="Identifier">query</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">JsonNode</span>
<span class="Identifier">queryString</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">placeHolder</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">JsonNode</span>
<span class="Identifier">isInTransaction</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">transactionConn</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
</dd>
</div>
<div id="RawMariadbQuery">
<dt><pre><a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span>
<span class="Identifier">log</span><span class="Operator">*</span><span class="Other">:</span> <a href="../../log.html#LogSetting"><span class="Identifier">LogSetting</span></a>
<span class="Identifier">pools</span><span class="Operator">*</span><span class="Other">:</span> <a href="mariadb_types.html#Connections"><span class="Identifier">Connections</span></a>
<span class="Identifier">info</span><span class="Operator">*</span><span class="Other">:</span> <a href="mariadb_types.html#ConnectionInfo"><span class="Identifier">ConnectionInfo</span></a>
<span class="Identifier">query</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">JsonNode</span>
<span class="Identifier">queryString</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Identifier">placeHolder</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">JsonNode</span>
<span class="Identifier">isInTransaction</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">bool</span>
<span class="Identifier">transactionConn</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int</span></pre></dt>
<dd>
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="$-procs-all">
<div id="$">
<dt><pre><span class="Keyword">proc</span> <a href="#%24"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a> <span class="Operator">|</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> <span class="Operator">|</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">string</span></pre></dt>
<dd>
</dd>
</div>
</div>
<div id="isConnected-procs-all">
<div id="isConnected">
<dt><pre><span class="Keyword">proc</span> <a href="#isConnected"><span class="Identifier">isConnected</span></a><span class="Other">(</span><span class="Identifier">self</span><span class="Other">:</span> <a href="mariadb_types.html#MariadbConnections"><span class="Identifier">MariadbConnections</span></a> <span class="Operator">|</span> <a href="mariadb_types.html#MariadbQuery"><span class="Identifier">MariadbQuery</span></a> <span class="Operator">|</span> <a href="mariadb_types.html#RawMariadbQuery"><span class="Identifier">RawMariadbQuery</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span></pre></dt>
<dd>
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2026-03-24 13:25:34 UTC</small>
</div>
</div>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More