hk_sql_utils.anubis
2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
* Created by PyramIDE.
* User: フランスのトトロ aka (David RENÉ)
* Date: 02/04/2017
* Time: 19:23
* © Calexium
*/
read calexium_lib/database/db_utils.anubis
read hayamiki_lib/types/hayamiki.anubis
public define String
referer_to_sql_clause
(
HK_Referer referer,
String table_name,
List(String) table_columns
)=
if referer is
{
no_referer then " (1 = 1) ",
hk_referer(referer_table, referer_row_id, fk_table, fk_column) then
if referer_table = table_name then
"id = " +referer_row_id
else if fk_column:table_columns then
fk_column + " = " + referer_row_id
else
" (1 = 1) ",
}
.
public define Maybe(One)
delete_from_ids
(
SQLite3DataBase db,
String table_name,
List(Int) ids
)=
if sql_query_timeout(db,
"DELETE FROM "+table_name+
" WHERE id IN ("+join(", ", to_List_String(ids))+");",
[],
"delete_from_ids") is
{
error(_) then failure,
ok(_, _, _) then success(unique)
}.
public define Int
get_count_by_clause
(
SQLite3DataBase db,
String table_name,
String clause
)=
with final_clause = if clause = "" then
""
else
"WHERE "+clause,
if sql_query_timeout(db, "SELECT COUNT(\"id\") FROM "+table_name+" "+final_clause+";", [], "get_count_by_clause") is
{
error(_) then 0,
ok(_, cursor, _) then db_get_integer(cursor)
}
.
public define Int
get_count
(
SQLite3DataBase db,
String table_name
)=
get_count_by_clause(db, table_name, "")
.
public define List(Int)
get_ids_by_clause
(
SQLite3DataBase db,
String table_name,
String clause
)=
with final_clause = if clause = "" then
""
else
"WHERE "+clause,
if sql_query_timeout(db, "SELECT \"id\" FROM "+table_name+" "+final_clause+";", [], "get_ids_by_clause") is
{
error(_) then [],
ok(_, cursor, _) then db_get_integer_list(cursor)
}
.