From 204b008703703918117e3e32e9f5b20785c99b12 Mon Sep 17 00:00:00 2001 From: totoro Date: Wed, 20 Jan 2016 22:11:47 +0100 Subject: [PATCH] add (int)0 for default value in foreign_key and integer_field. This help the compiler to find the correct type enclose the column name with " in case of the column is reserved keyword --- database/model/db_model.anubis | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 68 insertions(+), 28 deletions(-) diff --git a/database/model/db_model.anubis b/database/model/db_model.anubis index ec1a1cb..30306a6 100644 --- a/database/model/db_model.anubis +++ b/database/model/db_model.anubis @@ -342,8 +342,8 @@ public define String date_field(_) then "db_date(\"\")", time_field(_) then "db_time(\"\")", datetime_field(_) then "db_datetime(\"\")", - foreign_key(_) then "0", - integer_field then "0", + foreign_key(_) then "(Int)0", + integer_field then "(Int)0", char_field(Int size) then "\"\"", text_field then "\"\"" }. @@ -405,7 +405,7 @@ public define String from_web_arg ( DB_Model_Field t, - String name + String name ) = if t is { @@ -559,7 +559,7 @@ public define List(String) if insert then columns_name(t, insert, [result . so_far]) else - columns_name(t, insert, [result+" = :v_"+result . so_far]) + columns_name(t, insert, [enclose("\\\"",result)+" = :v_"+result . so_far]) } }. @@ -574,7 +574,7 @@ public define String String indent )= with columns_list = columns_name(columns, true, []), - indent+" ("+join(", ", columns_list)+")\n"+indent+"VALUES\n"+indent+" ("+prefixed_join(":v_", columns_list, ", ")+")". + indent+" ("+join(", ", enclose("\\\"",columns_list))+")\n"+indent+"VALUES\n"+indent+" ("+prefixed_join(":v_", columns_list, ", ")+")". public define String @@ -604,15 +604,25 @@ public define Maybe(String) p_key then success("primary_key(to_String("+type_name+"."+name+"))"), //binary then "constant_byte_array(0,0)", boolean_field then success("boolean(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), - date_field(attrs) then success("date(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), - time_field(attrs) then success("time(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), + date_field(attrs) then if attrs is + { + none then success("date(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".date, "+to_Anubis_source(help)+")"), + auto_now then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".date, "+to_Anubis_source(help)+")"), + auto_now_add then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".date, "+to_Anubis_source(help)+")") + }, + time_field(attrs) then if attrs is + { + none then success("time(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".time, "+to_Anubis_source(help)+")"), + auto_now then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".time, "+to_Anubis_source(help)+")"), + auto_now_add then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".time, "+to_Anubis_source(help)+")") + }, datetime_field(attrs) then if attrs is { none then success("datetime(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".datetime, "+to_Anubis_source(help)+")"), auto_now then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".datetime, "+to_Anubis_source(help)+")"), auto_now_add then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".datetime, "+to_Anubis_source(help)+")") }, - foreign_key(_) then success("information(\"FOREIGN_TODO\", \""+name+"\", to_String("+type_name+"."+name+"), "+to_Anubis_source(help)+")"), + foreign_key(foreign_table) then success("foreign_text(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", vt_edit_selector(get_selector_"+foreign_table+"), "+to_Anubis_source(help)+")"), integer_field then success("integer(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), char_field(Int size) then success("text(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), text_field then success("text_area(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")") @@ -663,47 +673,77 @@ public define Maybe(DB_Model_Column) }. public define String - to_cell_view +/** to_String return the String + */ + to_String ( DB_Model_Column col, - String type_name + String current_type_name, + String general_type_name ) = since col is db_column(name, col_type, _, _), if col_type is { //anubis(_T) then "constant_byte_array(0,0)", - p_key then "link(to_String("+type_name+".id), to_String("+type_name+".id))", + p_key then "get_"+general_type_name+"_show_string(db, "+current_type_name+".id)", //binary then "constant_byte_array(0,0)", - boolean_field then "text(to_String("+type_name+"."+name+"))", - date_field(attrs) then "text(to_String("+type_name+"."+name+"))", - time_field(attrs) then "text(to_String("+type_name+"."+name+"))", - datetime_field(attrs) then "text(to_String("+type_name+"."+name+"))" - foreign_key(foreign_table) then "text(get_"+foreign_table+"_show_string(db, "+type_name+"."+name+"))", - integer_field then "text(to_String("+type_name+"."+name+"))", - char_field(Int size) then "text("+type_name+"."+name+")", - text_field then "text("+type_name+"."+name+")" + boolean_field then "to_String("+current_type_name+"."+name+")", + date_field(attrs) then "to_String("+current_type_name+"."+name+")", + time_field(attrs) then "to_String("+current_type_name+"."+name+")", + datetime_field(attrs) then "to_String("+current_type_name+"."+name+")" + foreign_key(foreign_table) then "get_"+foreign_table+"_show_string(db, "+current_type_name+"."+name+")", + integer_field then "to_String("+current_type_name+"."+name+")", + char_field(Int size) then current_type_name+"."+name, + text_field then current_type_name+"."+name + }. + +public define String + to_HTML_cell_text + ( + List(DB_Model_Column) columns, + String column_name, + String data_name, + String general_type_name + )= + if get_column_type(columns, column_name) is + { + failure then "column name "+column_name+"doesn't exist", + success(column) then "text("+to_String(column, data_name, general_type_name)+")" }. public define String - to_cell_view + to_HTML_cell_link ( List(DB_Model_Column) columns, String column_name, - String data_name + String data_name, + String general_type_name )= if get_column_type(columns, column_name) is { failure then "column name "+column_name+"doesn't exist", - success(column) then to_cell_view(column, data_name) + success(column) then "link(to_String("+data_name+".id), "+to_String(column, data_name, general_type_name)+")" }. public define String make_list_view_row ( - DB_Model model, - List(String) list_view, - String data_name, - String indent + DB_Table table, + String data_name, + String indent )= - since model is db_model(columns, _), - indent+join(",\n"+indent, map((String column_name) |-> to_cell_view(columns, column_name, data_name), list_view)). + since table is db_table(name, model, display), + since model is db_model( columns, _), + since display is db_display(list_view, _), + if list_view is + { + [] then "", + [h . t] then + indent+join(",\n"+indent, + //Make first column as link + [to_HTML_cell_link(columns, h, data_name, name)] + + + //and the other set with list_view + map((String column_name) |-> to_HTML_cell_text(columns, column_name, data_name, name), t) + ) + }. -- libgit2 0.21.4