Packages
kvs
2.1.0
13.5.22-aleph
13.4.16
13.4.15
13.4.14
13.4.13
13.3.1
13.2.28
11.9.1
10.8.3
10.8.2
10.3.0
9.9.2
9.9.1
9.9.0
9.8.0
9.7.0
9.4.8
9.4.7
9.4.6
9.4.5
9.4.4
9.4.3
9.4.2
9.4.1
9.4.0
8.12.0
8.11.2
8.11.1
8.10.4
8.10.3
8.10.2
8.10.1
8.10.0
8.5.2
8.5.1
8.5.0
8.4.1
8.4.0
8.3.1
8.3.0
7.11.5
7.9.1
7.7.0
7.1.3
7.1.2
7.1.1
6.12.11
6.12.10
6.12.9
6.12.8
6.12.7
6.12.6
6.12.5
6.12.4
6.12.3
6.12.2
6.12.1
6.12.0
6.11.2
6.11.1
6.11.0
6.10.2
6.10.1
6.10.0
6.9.2
6.9.1
6.9.0
6.7.7
6.7.6
6.7.5
6.7.4
6.7.3
6.7.2
6.7.1
6.7.0
6.6.0
2.1.0
0.12.1
retired
KVS Key-Value Store Abstraction Layer
Current section
Files
Jump to
Current section
Files
include/sql.hrl
-include("metainfo.hrl").
% MEKAO SQL
-record(sql_select, {table,columns,where,order_by}).
-record(sql_insert, {table,columns,values,returning}).
-record(sql_update, {table,set,where,returning}).
-record(sql_delete, {table,where,returning}).
-record(sql_settings, {placeholder,returning,is_null = fun(X) -> X == undefined end}).
-spec insert(entity(), table(), s()) -> {ok, b_query()} | {error, empty_insert}.
-spec select_pk(selector(), table(), s()) -> {ok, b_query()} | {error, pk_miss}.
-spec select(selector(), table(), s()) -> {ok, b_query()}.
-spec update_pk(selector(), table(), s()) -> {ok, b_query()} | {error, pk_miss} | {error, empty_update}.
-spec update_pk_diff( Old :: entity(), New :: entity(), table(), s()) -> {ok, b_query()} | {error, pk_miss} | {error, empty_update}.
-spec update(entity(), selector(), table(), s()) -> {ok, b_query()} | {error, empty_update}.
-spec delete_pk(selector(), table(), s()) -> {ok, b_query()} | {error, pk_miss}.
-spec delete(selector(), table(), s()) -> {ok, b_query()}.
-spec prepare_insert(entity(), table(), s()) -> p_query().
-spec prepare_select(selector(), table(), s()) -> p_query().
-spec prepare_delete(selector(), table(), s()) -> p_query().
-spec prepare_update(entity(), selector(), table(), s()) -> p_query().
-spec returning(insert | update | delete, table(), s()) -> iolist().
-spec build(p_query()) -> b_query().
-type b_query() :: 'query'(iolist()).
-type table() :: #table{}.
-type column() :: #column{}.
-type s() :: #sql_settings{}.
-type entity() :: tuple() | list().
-type selector() :: tuple() | list(predicate(term())).
-type predicate(Value) :: Value | { '$predicate', '=' | '<>' | '>' | '>=' | '<' | '<=', Value}.
-type 'query'(Body) :: #query{body :: Body}.
-type p_query() :: 'query'( #sql_insert{}
| #sql_select{}
| #sql_update{}
| #sql_delete{}
).
-export_type([
table/0, column/0, s/0,
p_query/0, b_query/0,
predicate/1
]).