hk_controller.anubis
3.48 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
96
97
/*
* Created by PyramIDE.
* User: フランスのトトロ aka (David RENÉ)
* Date: 19/03/2016
* Time: 19:48
* © David RENÉ
*/
read tools/basis.anubis
transmit hayamiki_lib/types/hayamiki.anubis
//transmit hayamiki_lib/controller/hk_delete.anubis
transmit hayamiki_lib/controller/hk_trigger.anubis
transmit kayamiki_lib/controller/hk_rows_import.anubis
transmit calexium_lib/web/CXM_common.anubis
transmit calexium_lib/web/types/making_a_web_site.anubis
transmit calexium_lib/database/db_types.anubis
//CRUD basis function +
//Create
//Read
//Update
//Delete
public type HK_Table_controller:
hk_table_controller(
String table_name,
List(String) columns_name,
String select_fields,
//Create
(SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(Int) write_from_type,
(SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(Int) write_from_fields,
//Read
(SQLite3DataBase db, String clause) -> Int get_count,
//(SQLite3DataBase db, String clause) -> List($T) get_all_by_clause_to_list_type,
(SQLite3DataBase db, List(String) columns, Bool resolve_fk) -> List(((Int -> SQLite3Datum) -> JsonMember)) make_json_extractor,
(SQLite3DataBase db, List(String) columns, Bool resolve_fk, DB_id) -> JsonValue get_one_json,
(SQLite3DataBase db, List(String) columns, Bool resolve_fk, HK_Referer referer, String clause, String order_by) -> JsonValue get_rows_json,
//Update
//Delete
(SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete,
//view interface
//selector
(SQLite3DataBase db, HK_Referer referer, String filter) -> List((List(CoreAttrs), WebArgValue, String)) get_selector,
//Triggers of that table, can be dynamically updated
HK_Trigger_Set triggers
)
.
public define Maybe(HK_Table_controller)
get_hk_controller
(
List(HK_Table_controller) controllers,
String _table_name
)=
if controllers is
{
[] then failure,
[h . t ] then
if h.table_name = _table_name then
success(h)
else
get_hk_controller(t, _table_name)
}
.
public define One
add_trigger_to_table
(
List(HK_Table_controller) controllers,
String _table_name,
HK_Trigger trigger_to_add
)=
if get_hk_controller(controllers, _table_name) is
{
failure then unique
success(ctrl) then
since trigger_to_add is hk_trigger(name, t_type, call_back),
if t_type is
{
before_create then println(">>> ADD TRIGGER 'before_create' to table "+_table_name);add_trigger(ctrl.triggers.before_create, trigger_to_add),
after_create then println(">>> ADD TRIGGER 'after_create' to table "+_table_name); add_trigger(ctrl.triggers.after_create, trigger_to_add),
before_update then println(">>> ADD TRIGGER 'before_update' to table "+_table_name);add_trigger(ctrl.triggers.before_update, trigger_to_add),
after_update then println(">>> ADD TRIGGER 'after_update' to table "+_table_name); add_trigger(ctrl.triggers.after_update, trigger_to_add),
before_delete then println(">>> ADD TRIGGER 'before_delete' to table "+_table_name);add_trigger(ctrl.triggers.before_delete, trigger_to_add),
after_delete then println(">>> ADD TRIGGER 'after_delete' to table "+_table_name); add_trigger(ctrl.triggers.after_delete, trigger_to_add)
}
}
.