Commit 204b008703703918117e3e32e9f5b20785c99b12
1 parent
1e88b18c
add (int)0 for default value in foreign_key and integer_field. This help the com…
…piler to find the correct type enclose the column name with " in case of the column is reserved keyword
Showing
1 changed file
with
68 additions
and
28 deletions
Show diff stats
database/model/db_model.anubis
| ... | ... | @@ -342,8 +342,8 @@ public define String |
| 342 | 342 | date_field(_) then "db_date(\"\")", |
| 343 | 343 | time_field(_) then "db_time(\"\")", |
| 344 | 344 | datetime_field(_) then "db_datetime(\"\")", |
| 345 | - foreign_key(_) then "0", | |
| 346 | - integer_field then "0", | |
| 345 | + foreign_key(_) then "(Int)0", | |
| 346 | + integer_field then "(Int)0", | |
| 347 | 347 | char_field(Int size) then "\"\"", |
| 348 | 348 | text_field then "\"\"" |
| 349 | 349 | }. |
| ... | ... | @@ -405,7 +405,7 @@ public define String |
| 405 | 405 | from_web_arg |
| 406 | 406 | ( |
| 407 | 407 | DB_Model_Field t, |
| 408 | - String name | |
| 408 | + String name | |
| 409 | 409 | ) = |
| 410 | 410 | if t is |
| 411 | 411 | { |
| ... | ... | @@ -559,7 +559,7 @@ public define List(String) |
| 559 | 559 | if insert then |
| 560 | 560 | columns_name(t, insert, [result . so_far]) |
| 561 | 561 | else |
| 562 | - columns_name(t, insert, [result+" = :v_"+result . so_far]) | |
| 562 | + columns_name(t, insert, [enclose("\\\"",result)+" = :v_"+result . so_far]) | |
| 563 | 563 | } |
| 564 | 564 | }. |
| 565 | 565 | |
| ... | ... | @@ -574,7 +574,7 @@ public define String |
| 574 | 574 | String indent |
| 575 | 575 | )= |
| 576 | 576 | with columns_list = columns_name(columns, true, []), |
| 577 | - indent+" ("+join(", ", columns_list)+")\n"+indent+"VALUES\n"+indent+" ("+prefixed_join(":v_", columns_list, ", ")+")". | |
| 577 | + indent+" ("+join(", ", enclose("\\\"",columns_list))+")\n"+indent+"VALUES\n"+indent+" ("+prefixed_join(":v_", columns_list, ", ")+")". | |
| 578 | 578 | |
| 579 | 579 | |
| 580 | 580 | public define String |
| ... | ... | @@ -604,15 +604,25 @@ public define Maybe(String) |
| 604 | 604 | p_key then success("primary_key(to_String("+type_name+"."+name+"))"), |
| 605 | 605 | //binary then "constant_byte_array(0,0)", |
| 606 | 606 | boolean_field then success("boolean(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), |
| 607 | - date_field(attrs) then success("date(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), | |
| 608 | - time_field(attrs) then success("time(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), | |
| 607 | + date_field(attrs) then if attrs is | |
| 608 | + { | |
| 609 | + none then success("date(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".date, "+to_Anubis_source(help)+")"), | |
| 610 | + auto_now then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".date, "+to_Anubis_source(help)+")"), | |
| 611 | + auto_now_add then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".date, "+to_Anubis_source(help)+")") | |
| 612 | + }, | |
| 613 | + time_field(attrs) then if attrs is | |
| 614 | + { | |
| 615 | + none then success("time(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".time, "+to_Anubis_source(help)+")"), | |
| 616 | + auto_now then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".time, "+to_Anubis_source(help)+")"), | |
| 617 | + auto_now_add then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".time, "+to_Anubis_source(help)+")") | |
| 618 | + }, | |
| 609 | 619 | datetime_field(attrs) then if attrs is |
| 610 | 620 | { |
| 611 | 621 | none then success("datetime(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".datetime, "+to_Anubis_source(help)+")"), |
| 612 | 622 | auto_now then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".datetime, "+to_Anubis_source(help)+")"), |
| 613 | 623 | auto_now_add then success("information(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+".datetime, "+to_Anubis_source(help)+")") |
| 614 | 624 | }, |
| 615 | - foreign_key(_) then success("information(\"FOREIGN_TODO\", \""+name+"\", to_String("+type_name+"."+name+"), "+to_Anubis_source(help)+")"), | |
| 625 | + 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)+")"), | |
| 616 | 626 | integer_field then success("integer(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), |
| 617 | 627 | char_field(Int size) then success("text(\""+to_upper(name)+"\", \""+name+"\", "+type_name+"."+name+", "+to_Anubis_source(help)+")"), |
| 618 | 628 | 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) |
| 663 | 673 | }. |
| 664 | 674 | |
| 665 | 675 | public define String |
| 666 | - to_cell_view | |
| 676 | +/** to_String return the String | |
| 677 | + */ | |
| 678 | + to_String | |
| 667 | 679 | ( |
| 668 | 680 | DB_Model_Column col, |
| 669 | - String type_name | |
| 681 | + String current_type_name, | |
| 682 | + String general_type_name | |
| 670 | 683 | ) = |
| 671 | 684 | since col is db_column(name, col_type, _, _), |
| 672 | 685 | if col_type is |
| 673 | 686 | { |
| 674 | 687 | //anubis(_T) then "constant_byte_array(0,0)", |
| 675 | - p_key then "link(to_String("+type_name+".id), to_String("+type_name+".id))", | |
| 688 | + p_key then "get_"+general_type_name+"_show_string(db, "+current_type_name+".id)", | |
| 676 | 689 | //binary then "constant_byte_array(0,0)", |
| 677 | - boolean_field then "text(to_String("+type_name+"."+name+"))", | |
| 678 | - date_field(attrs) then "text(to_String("+type_name+"."+name+"))", | |
| 679 | - time_field(attrs) then "text(to_String("+type_name+"."+name+"))", | |
| 680 | - datetime_field(attrs) then "text(to_String("+type_name+"."+name+"))" | |
| 681 | - foreign_key(foreign_table) then "text(get_"+foreign_table+"_show_string(db, "+type_name+"."+name+"))", | |
| 682 | - integer_field then "text(to_String("+type_name+"."+name+"))", | |
| 683 | - char_field(Int size) then "text("+type_name+"."+name+")", | |
| 684 | - text_field then "text("+type_name+"."+name+")" | |
| 690 | + boolean_field then "to_String("+current_type_name+"."+name+")", | |
| 691 | + date_field(attrs) then "to_String("+current_type_name+"."+name+")", | |
| 692 | + time_field(attrs) then "to_String("+current_type_name+"."+name+")", | |
| 693 | + datetime_field(attrs) then "to_String("+current_type_name+"."+name+")" | |
| 694 | + foreign_key(foreign_table) then "get_"+foreign_table+"_show_string(db, "+current_type_name+"."+name+")", | |
| 695 | + integer_field then "to_String("+current_type_name+"."+name+")", | |
| 696 | + char_field(Int size) then current_type_name+"."+name, | |
| 697 | + text_field then current_type_name+"."+name | |
| 698 | + }. | |
| 699 | + | |
| 700 | +public define String | |
| 701 | + to_HTML_cell_text | |
| 702 | + ( | |
| 703 | + List(DB_Model_Column) columns, | |
| 704 | + String column_name, | |
| 705 | + String data_name, | |
| 706 | + String general_type_name | |
| 707 | + )= | |
| 708 | + if get_column_type(columns, column_name) is | |
| 709 | + { | |
| 710 | + failure then "column name "+column_name+"doesn't exist", | |
| 711 | + success(column) then "text("+to_String(column, data_name, general_type_name)+")" | |
| 685 | 712 | }. |
| 686 | 713 | |
| 687 | 714 | public define String |
| 688 | - to_cell_view | |
| 715 | + to_HTML_cell_link | |
| 689 | 716 | ( |
| 690 | 717 | List(DB_Model_Column) columns, |
| 691 | 718 | String column_name, |
| 692 | - String data_name | |
| 719 | + String data_name, | |
| 720 | + String general_type_name | |
| 693 | 721 | )= |
| 694 | 722 | if get_column_type(columns, column_name) is |
| 695 | 723 | { |
| 696 | 724 | failure then "column name "+column_name+"doesn't exist", |
| 697 | - success(column) then to_cell_view(column, data_name) | |
| 725 | + success(column) then "link(to_String("+data_name+".id), "+to_String(column, data_name, general_type_name)+")" | |
| 698 | 726 | }. |
| 699 | 727 | |
| 700 | 728 | public define String |
| 701 | 729 | make_list_view_row |
| 702 | 730 | ( |
| 703 | - DB_Model model, | |
| 704 | - List(String) list_view, | |
| 705 | - String data_name, | |
| 706 | - String indent | |
| 731 | + DB_Table table, | |
| 732 | + String data_name, | |
| 733 | + String indent | |
| 707 | 734 | )= |
| 708 | - since model is db_model(columns, _), | |
| 709 | - indent+join(",\n"+indent, map((String column_name) |-> to_cell_view(columns, column_name, data_name), list_view)). | |
| 735 | + since table is db_table(name, model, display), | |
| 736 | + since model is db_model( columns, _), | |
| 737 | + since display is db_display(list_view, _), | |
| 738 | + if list_view is | |
| 739 | + { | |
| 740 | + [] then "", | |
| 741 | + [h . t] then | |
| 742 | + indent+join(",\n"+indent, | |
| 743 | + //Make first column as link | |
| 744 | + [to_HTML_cell_link(columns, h, data_name, name)] + | |
| 745 | + | |
| 746 | + //and the other set with list_view | |
| 747 | + map((String column_name) |-> to_HTML_cell_text(columns, column_name, data_name, name), t) | |
| 748 | + ) | |
| 749 | + }. | ... | ... |