/* * Created by PyramIDE. * User: フランスのトトロ aka (David RENÉ) * Date: 13/02/2016 * Time: 10:50 * © Calexium */ read system/string.anubis read tools/basis.anubis read hayamiki_lib/model/fields.anubis read hayamiki_lib/model/columns.anubis read model.anubis public define String /** Return the corresponding Anubis type of the field */ to_Anubis_type ( HK_Model_Field t ) = if t is { //anubis(_T) then "ByteArray", p_key then "DB_id", //binary then "ByteArray", boolean_field then "Bool", date_field(_) then "DB_date", time_field(_) then "DB_time", datetime_field(_) then "DB_datetime", foreign_key(_,_) then "DB_id", integer_field(_) then "Int", float_field then "Float", char_field(_,_) then "String", password_field(_) then "String", text_field(_) then "String", color_field then "String", }. public define String /** Return the corresponding Anubis type of the field */ to_densaku_type ( HK_Model_Field t ) = if t is { p_key then "extern_type(\"DB_id\", \"calexium_lib/database/db_types.anubis\")", boolean_field then "bool", date_field(_) then "extern_type(\"DB_date\", \"calexium_lib/database/db_types.anubis\")", time_field(_) then "extern_type(\"DB_time\", \"calexium_lib/database/db_types.anubis\")", datetime_field(_) then "extern_type(\"DB_datetime\", \"calexium_lib/database/db_types.anubis\")", foreign_key(_,_) then "extern_type(\"DB_id\", \"calexium_lib/database/db_types.anubis\")", integer_field(_) then "int", float_field then "float", char_field(_,_) then "string", password_field(_) then "string", text_field(_) then "string", color_field then "string" }. public define String to_SQL_CREATE ( HK_Model_Field t, List(HK_Model_Attr) attributes, ) = if t is { //anubis(_T) then "ByteArray", p_key then fill("INTEGER", 15) + " PRIMARY KEY", boolean_field then fill("BOOL", 15) + format_attributes(attributes), date_field(_) then fill("DATE", 15) + format_attributes(attributes), time_field(_) then fill("TIME", 15) + format_attributes(attributes), datetime_field(_) then fill("DATETIME", 15) + format_attributes(attributes), foreign_key(app,fk) then fill("INTEGER", 15) + format_attributes(attributes)+" REFERENCES "+fk+"(id) ", integer_field(_) then fill("INTEGER", 15) + format_attributes(attributes), float_field then fill("DOUBLE", 15) + format_attributes(attributes), char_field(_,size) then fill("VARCHAR("+size+")", 15) + format_attributes(attributes), password_field(size) then fill("VARCHAR("+size+")", 15) + format_attributes(attributes), text_field(_) then fill("TEXT", 15) + format_attributes(attributes), color_field then fill("VARCHAR(8)",15)+ format_attributes(attributes), }. public define String to_Anubis_default ( HK_Model_Field t ) = if t is { //anubis(_T) then "constant_byte_array(0,0)", p_key then "none", //binary then "constant_byte_array(0,0)", boolean_field then "false", date_field(_) then "db_date(\"\")", time_field(_) then "db_time(\"\")", datetime_field(_) then "db_datetime(\"\")", foreign_key(_,_) then "(DB_id)none", integer_field(_) then "(Int)0", float_field then "(Float)0.0", char_field(choices,size) then "\"\"", password_field(min_size) then "\"\"", text_field(_) then "\"\"", color_field then "#DDD", }. public define String to_Bind ( HK_Model_Field t, String type_name, //name of the type String name, //name of component into the type Bool insert //true if insert time else false for update ) = if t is { //anubis(_T) then "constant_byte_array(0,0)", p_key then "", //binary then "constant_byte_array(0,0)", boolean_field then "bind_Bool(\":v_"+name+"\", "+type_name+"."+name+")", date_field(attrs) then "bind_Date(\":v_"+name+"\", "+type_name+"."+name+")", time_field(attrs) then "bind_Time(\":v_"+name+"\", "+type_name+"."+name+")", datetime_field(attrs) then if attrs is { none then "bind_Datetime(\":v_"+name+"\", "+type_name+"."+name+")", auto_now then "bind_Datetime(\":v_"+name+"\", now)", auto_now_add then if insert then "bind_Datetime(\":v_"+name+"\", now)" else "" }, foreign_key(_,_) then "bind_DB_id_or_NULL(\":v_"+name+"\", "+type_name+"."+name+")", integer_field(_) then "bind_Int(\":v_"+name+"\", "+type_name+"."+name+")", float_field then "bind_Float(\":v_"+name+"\", "+type_name+"."+name+")", char_field(_,_) then "bind_String(\":v_"+name+"\", "+type_name+"."+name+")", password_field(_) then "bind_String(\":v_"+name+"\", "+type_name+"."+name+")", text_field(_) then "bind_String(\":v_"+name+"\", "+type_name+"."+name+")", color_field then "bind_String(\":v_"+name+"\", "+type_name+"."+name+")", }.