130 lines
4.3 KiB
Plaintext
130 lines
4.3 KiB
Plaintext
// Minimal SQLite3 C API wrapper.
|
|
// This module is for internal use and should not be used directly.
|
|
module sqlite/capi
|
|
|
|
pub import std/num/int32
|
|
|
|
extern import
|
|
c file "sqlite-define.c"
|
|
extern import
|
|
c file "sqlite3.c"
|
|
extern import
|
|
c file "sqlite-inline.c"
|
|
|
|
extern make-sqlite-ok(): int32
|
|
c inline "SQLITE_OK"
|
|
pub val int32/sqlite-ok: int32 = make-sqlite-ok()
|
|
|
|
extern make-sqlite-open-readonly(): int32 { c inline "SQLITE_OPEN_READONLY" }
|
|
extern make-sqlite-open-readwrite(): int32 { c inline "SQLITE_OPEN_READWRITE" }
|
|
extern make-sqlite-open-readwritecreate(): int32 { c inline "SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE" }
|
|
pub val int32/open-readonly = make-sqlite-open-readonly()
|
|
pub val int32/open-readwrite = make-sqlite-open-readwrite()
|
|
pub val int32/open-readwritecreate = make-sqlite-open-readwritecreate()
|
|
|
|
extern make-sqlite-open-uri(): int32 { c inline "SQLITE_OPEN_URI" }
|
|
extern make-sqlite-open-sharedcache(): int32 { c inline "SQLITE_OPEN_SHAREDCACHE" }
|
|
extern make-sqlite-open-memory(): int32 { c inline "SQLITE_OPEN_MEMORY" }
|
|
extern make-sqlite-open-exrescode(): int32 { c inline "SQLITE_OPEN_EXRESCODE" }
|
|
extern make-sqlite-open-nomutex(): int32 { c inline "SQLITE_OPEN_NOMUTEX" }
|
|
extern make-sqlite-open-fullmutex(): int32 { c inline "SQLITE_OPEN_FULLMUTEX" }
|
|
pub val int32/open-uri = make-sqlite-open-uri()
|
|
pub val int32/open-sharedcache = make-sqlite-open-sharedcache()
|
|
pub val int32/open-memory = make-sqlite-open-memory()
|
|
pub val int32/open-exrescode = make-sqlite-open-exrescode()
|
|
pub val int32/open-nomutex = make-sqlite-open-nomutex()
|
|
pub val int32/open-fullmutex = make-sqlite-open-fullmutex()
|
|
|
|
pub extern initialize(): int32
|
|
c inline "sqlite3_initialize()"
|
|
|
|
pub extern shutdown(): int32
|
|
c inline "sqlite3_shutdown()"
|
|
|
|
pub extern errstr(x: int32): string
|
|
c "kk_sqlite3_errstr"
|
|
|
|
pub extern extended-errcode(^db: any): int32
|
|
c "kk_sqlite3_extended_errcode"
|
|
|
|
pub extern error-offset(^db: any): int
|
|
c "kk_sqlite3_error_offset"
|
|
|
|
pub extern open-v2(^filename: string, flags: int32, ^vfs: string): (any, int32)
|
|
c "kk_sqlite3_open_v2"
|
|
|
|
pub extern close(^db: any): int32
|
|
c "kk_sqlite3_close"
|
|
|
|
pub extern prepare-v3(^db: any, ^sql: sslice, flags: int32): (any, sslice, int32)
|
|
c "kk_sqlite3_prepare_v3"
|
|
|
|
pub extern finalize(^stmt: any): int32
|
|
c "kk_sqlite3_finalize"
|
|
|
|
pub extern step(^stmt: any): int32
|
|
c "kk_sqlite3_step"
|
|
|
|
pub extern reset(^stmt: any): int32
|
|
c "kk_sqlite3_reset"
|
|
|
|
pub extern column-count(^stmt: any): int
|
|
c "kk_sqlite3_column_count"
|
|
|
|
pub extern column-type(^stmt: any, col: int32): int32
|
|
c "kk_sqlite3_column_type"
|
|
|
|
extern make-sqlite-integer(): int32 { c inline "SQLITE_INTEGER" }
|
|
extern make-sqlite-float(): int32 { c inline "SQLITE_FLOAT" }
|
|
extern make-sqlite-blob(): int32 { c inline "SQLITE_BLOB" }
|
|
extern make-sqlite-null(): int32 { c inline "SQLITE_NULL" }
|
|
extern make-sqlite-text(): int32 { c inline "SQLITE_TEXT" }
|
|
pub val int32/integer = make-sqlite-integer()
|
|
pub val int32/float = make-sqlite-float()
|
|
pub val int32/blob = make-sqlite-blob()
|
|
pub val int32/null = make-sqlite-null()
|
|
pub val int32/text = make-sqlite-text()
|
|
|
|
//TODO(zephyr): waiting on a proper bytes type in koka
|
|
// pub extern column-blob(^stmt: any, col: int32): maybe<bytes>
|
|
// c "kk_sqlite3_column_blob"
|
|
|
|
pub extern column-double(^stmt: any, col: int32): float64
|
|
c "kk_sqlite3_column_double"
|
|
|
|
pub extern column-integer(^stmt: any, col: int32): int
|
|
c "kk_sqlite3_column_integer"
|
|
|
|
pub extern column-text(^stmt: any, col: int32): string
|
|
c "kk_sqlite3_column_text"
|
|
|
|
// pub extern bind-blob(^stmt: any, col: int32, ^value: bytes): int32
|
|
// c "kk_sqlite3_bind_blob"
|
|
|
|
pub extern bind-double(^stmt: any, param: int32, ^value: float64): int32
|
|
c "kk_sqlite3_bind_double"
|
|
|
|
pub extern bind-int64(^stmt: any, param: int32, value: int64): int32
|
|
c "kk_sqlite3_bind_int64"
|
|
|
|
pub extern bind-null(^stmt: any, param: int32): int32
|
|
c "kk_sqlite3_bind_null"
|
|
|
|
pub extern bind-text(^stmt: any, param: int32, ^value: string): int32
|
|
c "kk_sqlite3_bind_text"
|
|
|
|
pub extern bind-zeroblob(^stmt: any, param: int32, length: int64): int32
|
|
c "kk_sqlite3_bind_zeroblob"
|
|
|
|
pub extern clear-bindings(^stmt: any): int32
|
|
c "kk_sqlite3_clear_bindings"
|
|
|
|
pub extern parameter-count(^stmt: any): int32
|
|
c "kk_sqlite3_parameter_count"
|
|
|
|
pub extern parameter-name(^stmt: any, param: int32): string
|
|
c "kk_sqlite3_parameter_name"
|
|
|
|
pub extern parameter-index(^stmt: any, name: string): int32
|
|
c "kk_sqlite3_parameter_index"
|