Commit 18ac3754f0238b3de897dd32d8f6a689bcab1ae5
1 parent
8abaa6f5
add reference of the foreign table in foreign_text
generate extractor list for json add get_all to_json with selection of the columns to be extracted remove vt_view_db_call according to the hayamiki lib
Showing
6 changed files
with
175 additions
and
16 deletions
Show diff stats
src/generation/SQL_get_all.anubis
| ... | ... | @@ -53,6 +53,19 @@ public define Maybe(One) |
| 53 | 53 | success(_) then success(unique) |
| 54 | 54 | }. |
| 55 | 55 | |
| 56 | +//public define JsonMember | |
| 57 | +// get_component | |
| 58 | +// ( | |
| 59 | +// String component_name, | |
| 60 | +// Crm_price_level type | |
| 61 | +// )= | |
| 62 | +// if component_name = "id" then json_member(component_name, json_int(type.id)) | |
| 63 | +// else if component_name = "code" then json_member(component_name, json_string(type.code)) | |
| 64 | +// else if component_name = "label" then json_member(component_name, json_string(type.label)) | |
| 65 | +// else if component_name = "active" then json_member(component_name, json_bool(type.active)) | |
| 66 | +// else if component_name = "module" then json_member(component_name, json_string(type.module)) | |
| 67 | +// else json_member(component_name, json_null) | |
| 68 | +//. | |
| 56 | 69 | |
| 57 | 70 | public define Maybe(One) |
| 58 | 71 | generate_get_all_with_clause |
| ... | ... | @@ -110,10 +123,27 @@ public define Maybe(One) |
| 110 | 123 | " success(data) then _get_all_"+name+"_to_json(db, table_cursor, [data . so_far])\n"+ |
| 111 | 124 | " }\n"+ |
| 112 | 125 | ".\n"+ |
| 113 | -"public define JsonMember\n"+ | |
| 126 | + | |
| 127 | +"public define List(JsonValue)\n"+ | |
| 128 | +" _get_all_"+name+"_to_json\n"+ | |
| 129 | +" (\n"+ | |
| 130 | +" SQLite3DataBase db,\n"+ | |
| 131 | +" List(((Int -> SQLite3Datum) -> JsonMember)) extractors,\n"+ | |
| 132 | +" One -> SQLite3Row table_cursor,\n"+ | |
| 133 | +" List(JsonValue) so_far\n"+ | |
| 134 | +" ) =\n"+ | |
| 135 | +" if extract_"+name+"_cursor_to_json(db, extractors, table_cursor) is\n"+ | |
| 136 | +" {\n"+ | |
| 137 | +" failure then reverse(so_far),\n"+ | |
| 138 | +" success(data) then _get_all_"+name+"_to_json(db, extractors, table_cursor, [data . so_far])\n"+ | |
| 139 | +" }\n"+ | |
| 140 | +".\n"+ | |
| 141 | + | |
| 142 | +"public define JsonValue\n"+ | |
| 114 | 143 | " get_all_"+name+"_by_clause_to_json\n"+ |
| 115 | 144 | " (\n"+ |
| 116 | 145 | " SQLite3DataBase db,\n"+ |
| 146 | +" List(String) columns,\n"+ | |
| 117 | 147 | " HK_Referer referer,\n"+ |
| 118 | 148 | " String filter,\n"+ |
| 119 | 149 | " String order_by\n"+ |
| ... | ... | @@ -122,8 +152,14 @@ public define Maybe(One) |
| 122 | 152 | " with _and_ = if length(ref_clause) > 0 & length(filter) > 0 then \" AND \" else \"\",\n"+ |
| 123 | 153 | " if get_all_"+name+"_by_clause(db, ref_clause+_and_+filter+\" \"+order_by) is\n"+ |
| 124 | 154 | " {\n"+ |
| 125 | -" failure then json_member(\"rows\", json_array([])),\n"+ | |
| 126 | -" success(cursor) then json_member(\"rows\", json_array(_get_all_"+name+"_to_json(db, cursor, [])))\n"+ | |
| 155 | +" failure then json_array([]),\n"+ | |
| 156 | +" success(cursor) then\n"+ | |
| 157 | +" json_array(\n"+ | |
| 158 | +" if length(columns) = 0 then\n"+ | |
| 159 | +" _get_all_"+name+"_to_json(db, cursor, [])\n"+ | |
| 160 | +" else\n"+ | |
| 161 | +" _get_all_"+name+"_to_json(db, make_json_extractor(db, columns), cursor, [])\n"+ | |
| 162 | +" )\n"+ | |
| 127 | 163 | " }\n"+ |
| 128 | 164 | ".\n" |
| 129 | 165 | ) is //end of the function | ... | ... |
src/generation/columns.anubis
| ... | ... | @@ -242,10 +242,10 @@ public define Maybe(String) |
| 242 | 242 | }, |
| 243 | 243 | foreign_key(app,foreign_table,fields) then |
| 244 | 244 | if length(fields) = 0 then |
| 245 | - success("foreign_text(\""+to_upper(col_name)+"\", \""+col_name+"\", "+type_name+"."+col_name+", hk_form_selector(get_selector_"+foreign_table+"), "+to_Anubis_source(help)+")") | |
| 245 | + success("foreign_text(\""+to_upper(col_name)+"\", \""+col_name+"\", "+type_name+"."+col_name+", \""+foreign_table+"\", hk_form_selector(get_selector_"+foreign_table+"), "+to_Anubis_source(help)+")") | |
| 246 | 246 | else |
| 247 | 247 | with search_fields = join(", ", map((String field) |-> "\""+field+"\"",fields)), |
| 248 | - success("foreign_text_search(\""+to_upper(col_name)+"\", \""+col_name+"\", "+type_name+"."+col_name+", \""+foreign_table+"\", ["+search_fields+"]"+to_Anubis_source(help)+")"), | |
| 248 | + success("foreign_text_search(\""+to_upper(col_name)+"\", \""+col_name+"\", "+type_name+"."+col_name+", \""+foreign_table+"\", ["+search_fields+"], "+to_Anubis_source(help)+")"), | |
| 249 | 249 | |
| 250 | 250 | integer_field(choices) then |
| 251 | 251 | //success("integer(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), | ... | ... |
src/generation/extractor.anubis
| ... | ... | @@ -116,7 +116,7 @@ define List(String) |
| 116 | 116 | to_json_member(t, cursor_name, [line . so_far], idx + 1 ) |
| 117 | 117 | } |
| 118 | 118 | . |
| 119 | - | |
| 119 | + | |
| 120 | 120 | public define String |
| 121 | 121 | generate_json_object_from_cursor |
| 122 | 122 | ( |
| ... | ... | @@ -125,7 +125,40 @@ public define String |
| 125 | 125 | List(HK_Model_Column) columns, |
| 126 | 126 | String indent |
| 127 | 127 | )= |
| 128 | - indent+"json_object([\n"+indent+" "+join(",\n"+indent+" ", to_json_member(columns, cursor_name, [], 0))+"\n"+indent+"])". | |
| 128 | + indent+"json_object([\n"+indent+" "+join(",\n"+indent+" ", to_json_member(columns, cursor_name, [], 0))+"\n"+indent+"])" | |
| 129 | +. | |
| 130 | + | |
| 131 | + | |
| 132 | +define List(String) | |
| 133 | +/** | |
| 134 | + */ | |
| 135 | + to_get_extractor_line_json_member | |
| 136 | + ( | |
| 137 | + List(HK_Model_Column) columns, | |
| 138 | + String cursor_name, | |
| 139 | + List(String) so_far, | |
| 140 | + Int idx | |
| 141 | + )= | |
| 142 | + if columns is | |
| 143 | + { | |
| 144 | + [] then reverse(so_far), | |
| 145 | + [h . t ] then | |
| 146 | + since h is hk_column(name, col_type, _, _), | |
| 147 | + with line = "if component_name =\""+name+"\" then ((Int -> SQLite3Datum) cursor) |-> "+from_DB_cursor_to_JSON(h, cursor_name, idx), | |
| 148 | + to_get_extractor_line_json_member(t, cursor_name, [line . so_far], idx + 1 ) | |
| 149 | + } | |
| 150 | +. | |
| 151 | + | |
| 152 | +public define String | |
| 153 | + generate_json_extractor | |
| 154 | + ( | |
| 155 | + String constructor_name, | |
| 156 | + String cursor_name, | |
| 157 | + List(HK_Model_Column) columns, | |
| 158 | + String indent | |
| 159 | + )= | |
| 160 | + indent+join("\n"+indent+"else ", to_get_extractor_line_json_member(columns, cursor_name, [], 0))+ | |
| 161 | + "\n"+indent+"else ((Int -> SQLite3Datum) cursor) |-> json_member(component_name, json_null)". | |
| 129 | 162 | |
| 130 | 163 | |
| 131 | 164 | public define Maybe(One) |
| ... | ... | @@ -153,7 +186,42 @@ public define Maybe(One) |
| 153 | 186 | " no_more_row then failure,\n"+ |
| 154 | 187 | " row(cursor) then\n"+ |
| 155 | 188 | " success("+generate_json_object_from_cursor(name, "cursor", columns, " ")+")\n"+ //generate type construction with values got from web arg |
| 156 | - " }\n.\n" | |
| 189 | + " }\n.\n"+ | |
| 190 | + "\n\n"+ | |
| 191 | + "public define Maybe(JsonValue)\n"+ | |
| 192 | + " extract_"+name+"_cursor_to_json\n"+ | |
| 193 | + " (\n"+ | |
| 194 | + " SQLite3DataBase db,\n"+ | |
| 195 | + " List(((Int -> SQLite3Datum) -> JsonMember)) extractors,\n"+ | |
| 196 | + " One -> SQLite3Row table_cursor\n"+ | |
| 197 | + " ) =\n"+ | |
| 198 | + " if table_cursor(unique) is\n"+ | |
| 199 | + " {\n"+ | |
| 200 | + " error(sql_error) then println(db_error(sql_error, \"extract_"+name+"\")); failure,\n"+ | |
| 201 | + " no_more_row then failure,\n"+ | |
| 202 | + " row(cursor) then\n"+ | |
| 203 | + " success(\n"+ | |
| 204 | + " json_object(\n"+ | |
| 205 | + " map(((Int -> SQLite3Datum) -> JsonMember extractor) |-> extractor(cursor) , extractors)\n"+ | |
| 206 | + " ))\n"+ | |
| 207 | + " }\n.\n"+ | |
| 208 | + | |
| 209 | +"define (Int -> SQLite3Datum) -> JsonMember\n"+ | |
| 210 | +" get_extractor\n"+ | |
| 211 | +" (\n"+ | |
| 212 | +" SQLite3DataBase db,\n"+ | |
| 213 | +" String component_name,\n"+ | |
| 214 | +" )=\n"+generate_json_extractor(name, "cursor", columns, " ")+ | |
| 215 | +"\n.\n\n"+ | |
| 216 | + | |
| 217 | +"define List(((Int -> SQLite3Datum) -> JsonMember))\n"+ | |
| 218 | +" make_json_extractor\n"+ | |
| 219 | +" (\n"+ | |
| 220 | +" SQLite3DataBase db,\n"+ | |
| 221 | +" List(String) columns\n"+ | |
| 222 | +" )=\n"+ | |
| 223 | +" map((String column) |-> get_extractor(db, column), columns)\n"+ | |
| 224 | +".\n" | |
| 157 | 225 | ) is //end of the function |
| 158 | 226 | { |
| 159 | 227 | failure then println("can't write generate_extract_db_cursor "+type_name); failure, | ... | ... |
src/generation/files.anubis
| ... | ... | @@ -70,6 +70,7 @@ define Maybe(One) |
| 70 | 70 | if generate_get_all_with_clause(strm, table) is { failure then failure, success(_) then |
| 71 | 71 | if generate_get_one(strm, table) is { failure then failure, success(_) then |
| 72 | 72 | if generate_get_one_with_clause(strm, table) is { failure then failure, success(_) then |
| 73 | + if generate_get_one_json(strm, table) is { failure then failure, success(_) then | |
| 73 | 74 | if generate_get_count_by_clause(strm, table) is { failure then failure, success(_) then |
| 74 | 75 | if generate_update(strm, table) is { failure then failure, success(_) then |
| 75 | 76 | if generate_delete(strm, table) is { failure then failure, success(_) then |
| ... | ... | @@ -78,7 +79,7 @@ define Maybe(One) |
| 78 | 79 | if generate_choices_selector(strm, table) is { failure then failure, success(_) then |
| 79 | 80 | if generate_VT_all_view(strm, table) is { failure then failure, success(_) then |
| 80 | 81 | if generate_VT_all_edit(strm, table) is { failure then failure, success(_) then |
| 81 | - success(unique)}}}}}}}}}}}}}}}}}}}}} | |
| 82 | + success(unique)}}}}}}}}}}}}}}}}}}}}}} | |
| 82 | 83 | }. |
| 83 | 84 | |
| 84 | 85 | define One |
| ... | ... | @@ -210,6 +211,7 @@ define One |
| 210 | 211 | update_"+name+"_from_fields, |
| 211 | 212 | //Read |
| 212 | 213 | get_count_"+name+"_by_clause, |
| 214 | + get_one_"+name+"_to_json, | |
| 213 | 215 | get_all_"+name+"_by_clause_to_json, |
| 214 | 216 | //Delete |
| 215 | 217 | delete_"+name+ | ... | ... |
src/generation/types.anubis
| ... | ... | @@ -88,7 +88,7 @@ public define Maybe(One) |
| 88 | 88 | |
| 89 | 89 | //generate the type of the table that contain all components |
| 90 | 90 | if write_string(stream, |
| 91 | - "\n\ndefine "+type_name+"\n get_default_"+name+" =\n "+name+"("+ //head of the definition | |
| 91 | + "\n\npublic define "+type_name+"\n get_default_"+name+" =\n "+name+"("+ //head of the definition | |
| 92 | 92 | join(", ",_generate_get_default(columns, []))+ //all components of the type |
| 93 | 93 | ").\n\n") is //end of the function |
| 94 | 94 | { |
| ... | ... | @@ -174,6 +174,59 @@ public define Maybe(One) |
| 174 | 174 | failure then println("can't write generate_get_one "+type_name); failure, |
| 175 | 175 | success(_) then success(unique) |
| 176 | 176 | }. |
| 177 | + | |
| 178 | +public define Maybe(One) | |
| 179 | + generate_get_one_json | |
| 180 | + ( | |
| 181 | + Stream stream, | |
| 182 | + HK_Table table | |
| 183 | + )= | |
| 184 | + since table is hk_table(name, short_name, model, _), | |
| 185 | + since model is hk_model(columns, show_string), | |
| 186 | + with type_name = to_upper(name, 1), //make the first character to upper case to able to be a Anubis Type. | |
| 187 | + | |
| 188 | + //generate the type of the table that contain all components | |
| 189 | + if write_string(stream, | |
| 190 | + "\n\n"+ | |
| 191 | + //SQL query | |
| 192 | +"public define JsonValue\n"+ | |
| 193 | +" get_one_"+name+"_to_json\n"+ | |
| 194 | +" (\n"+ | |
| 195 | +" SQLite3DataBase db,\n"+ | |
| 196 | +" List(String) columns,\n"+ | |
| 197 | +" DB_id idx\n"+ | |
| 198 | +" )=\n"+ | |
| 199 | +" with final_columns = if length(columns) = 0 then "+name+"_columns else columns,\n"+ | |
| 200 | +" with error = json_object(map((String col_name) |-> json_member(col_name, json_null), final_columns)),\n"+ | |
| 201 | +"\n"+ | |
| 202 | +" if idx is\n"+ | |
| 203 | +" {\n"+ | |
| 204 | +" none then error,\n"+ | |
| 205 | +" db_id(_idx) then\n"+ | |
| 206 | +" if get_all_"+name+"_by_clause(db, \"id=\"+to_decimal(_idx)) is\n"+ | |
| 207 | +" {\n"+ | |
| 208 | +" failure then error,\n"+ | |
| 209 | +" success(cursor) then\n"+ | |
| 210 | +" if length(columns) = 0 then\n"+ | |
| 211 | +" if extract_"+name+"_cursor_to_json(db, cursor) is\n"+ | |
| 212 | +" {\n"+ | |
| 213 | +" failure then error,\n"+ | |
| 214 | +" success(result) then result\n"+ | |
| 215 | +" }\n"+ | |
| 216 | +" else\n"+ | |
| 217 | +" if extract_"+name+"_cursor_to_json(db, make_json_extractor(db, columns), cursor) is\n"+ | |
| 218 | +" {\n"+ | |
| 219 | +" failure then error,\n"+ | |
| 220 | +" success(result) then result\n"+ | |
| 221 | +" }\n"+ | |
| 222 | +" }\n"+ | |
| 223 | +" }\n"+ | |
| 224 | +".\n\n" | |
| 225 | + ) is //end of the function | |
| 226 | + { | |
| 227 | + failure then println("can't write generate_get_one "+type_name); failure, | |
| 228 | + success(_) then success(unique) | |
| 229 | + }. | |
| 177 | 230 | |
| 178 | 231 | public define Maybe(One) |
| 179 | 232 | generate_get_one_with_clause | ... | ... |
src/generation/vt_view.anubis
| ... | ... | @@ -156,12 +156,12 @@ public define Maybe(One) |
| 156 | 156 | " \""+table_name+"\", //Name of the database table\n"+ |
| 157 | 157 | " \""+view_name+"\", //Name of the view\n"+ |
| 158 | 158 | " model,\n"+ |
| 159 | - " header,\n"+ | |
| 160 | -" vt_view_db_calls(\n"+ | |
| 161 | -" get_count_"+table_name+"_by_clause,\n"+ | |
| 162 | -" get_all_"+table_name+"_by_clause_to_json\n"+ | |
| 163 | -//" get_"+xxx+"_rows\n"+ | |
| 164 | -" )\n"+ | |
| 159 | + " header\n"+ | |
| 160 | +//" vt_view_db_calls(\n"+ | |
| 161 | +//" get_count_"+table_name+"_by_clause,\n"+ | |
| 162 | +//" get_all_"+table_name+"_by_clause_to_json\n"+ | |
| 163 | +////" get_"+xxx+"_rows\n"+ | |
| 164 | +//" )\n"+ | |
| 165 | 165 | " )\n"+ |
| 166 | 166 | ".\n\n" |
| 167 | 167 | ... | ... |