sqlpp.new(engine) -> spp |
create a preprocessor instance |
spp.connect(options) -> cmd |
connect to a database |
spp.use(rawconn) -> cmd |
use an existing connection |
SQL formatting |
|
cmd:sqlname(s) -> s |
format name: 'foo.bar' -> ' foo. bar' |
cmd:esc(s) -> s |
escape a string to be used inside SQL string literals |
cmd:sqlval(v[, field]) -> s |
format a Lua value as an SQL literal |
cmd:sqlrows(rows[, indent]) -> s |
format as '(a, b), (c, d)' |
spp.tsv_rows(opt, s) -> rows |
parse a tab-separated list into a list of rows |
cmd:sqltsv(opt, s) -> s |
parse a tab-separated list and format with sqlrows() |
cmd:sqldiff(diff, opt) |
format a schema diff object |
SQL preprocessing |
|
cmd:sqlquery(sql, ...) -> sql, names |
preprocess a query |
cmd:sqlprepare(sql, ...) -> sql, names |
preprocess a query but leave ? placeholders |
cmd:sqlparams(sql, [t]) -> sql, names |
substitute named params |
cmd:sqlargs(sql, ...) -> sql |
substitute positional args |
Query execution |
|
cmd:query([opt], sql, ...) -> rows, cols |
query with preprocessing |
cmd:first_row([opt], sql, ...) -> rows, cols |
query and return the first row |
cmd:each_row([opt], sql, ...) -> iter |
query and iterate rows |
cmd:each_row_vals([opt], sql, ...)-> iter |
query and iterate rows unpacked |
cmd:each_group(col, [opt], sql, ...) -> iter |
query, group by col and iterate groups |
cmd:prepare([opt], sql, ...) -> stmt |
prepare query |
stmt:exec(...) -> rows, cols |
execute prepared query |
stmt:first_row(...) -> rows, cols |
query and return the first row |
stmt:each_row(...) -> iter |
query and iterate rows |
stmt:each_row_vals(...)-> iter |
query and iterate rows unpacked |
stmt:each_group(col, ...) -> iter |
query, group by col and iterate groups |
cmd:atomic(fn, ...) -> ... |
call a function inside a transaction |
cmd:has_ddl(sql) -> true|false |
check if an expanded query has DDL commands in it |
Grouping result rowsets |
|
spp.groups(col, rows|groups) -> groups |
group rows |
spp.each_group(col, rows|groups) -> iter |
group rows and iterate groups |
Schema refleciton |
|
cmd:dbs() -> {db1,…}` |
list databases |
cmd:tables([db]) -> {tbl1,...} |
list tables in (current) db |
cmd:table_def(['[DB.]TABLE']) -> t |
get table definition from cmd.schemas.DB |
cmd:extract_schema([db]) -> sc |
extract db schema |
spp.empty_schema() -> sc |
create an empty schema |
cmd.schema.DB = sc |
set schema manually for a database |
DDL commands |
|
cmd:create_db(name, [charset], [collation]) |
create database |
cmd:drop_db(name) |
drop database |
cmd:sync_schema(source_schema) |
sync schema with a source schema |
MDL commands |
|
cmd:insert_row(tbl, vals, col_map) |
insert a row |
cmd:insert_rows(tbl, rows, col_map, compact) |
insert rows with one query |
cmd:update_row(tbl, vals, col_map, [filter]) |
update row |
cmd:delete_row(tbl, vals, col_map, [filter]) |
delete row |
Module system |
|
function sqlpp.package.NAME(spp) end |
extend the preprocessor with a module |
spp.import(module) |
import sqlpp module |
Modules |
|
require'sqlpp_mysql' |
make the MySQL module available |
spp.import'mysql' |
load the MySQL module into spp |
Extending the preprocessor |
|
spp.keyword.KEYWORD -> symbol |
get a symbol for a keyword |
spp.keywords[SYMBOL] = keyword |
set a keyword for a symbol |
spp.subst'NAME text...' |
create a substitution for $NAME |
function spp.macro.NAME(...) end |
create a macro to be used as $NAME(...) |