added FT class which is used in Model::field() methods

FT class has following types:
   enum FieldType
   {
	default_type = 0,
        primary_key = 1,
	foreign_key = 2,
	foreign_key_in_child = 4,
	no_insertable = 8,
	no_updatable = 16,
	no_fetchable = 32, /* not supported yet */
   };
an object of FT class are now used in Model::field() methods instead of insertable/updatable/is_primary_key/... boolean flags

changed the semantic of has_foreign_key (which was a bool) flag in child Models:
now on Models and list/vector of Models you should use either FT::foreign_key or FT::foreign_key_in_child
1. FT::foreign_key means that field with this flag is a foreign key and is pointing to the child object
   (it was the case when has_foreign_key was equal to true beforehand)
2. FT::foreign_key_in child means that the foreign key is in the child object and is pointing to the parent object
This commit is contained in:
2021-03-10 16:20:11 +01:00
parent 133a45c84b
commit fcf1d28b18
17 changed files with 571 additions and 391 deletions

View File

@@ -117,8 +117,8 @@ void BaseExpression::dump_additional_info(Model & model)
{
if( model.model_env && model.model_env->dump_mode )
{
field(L"model_save_mode", model.save_mode, false, false, false, model.model_env);
field(L"has_primary_key_set", model.has_primary_key_set, false, false, false, model.model_env);
field(L"model_save_mode", model.save_mode, FT::no_insertable | FT::no_updatable | FT::no_fetchable, model.model_env);
field(L"has_primary_key_set", model.has_primary_key_set, FT::no_insertable | FT::no_updatable | FT::no_fetchable, model.model_env);
}
}
@@ -134,7 +134,7 @@ void BaseExpression::after_generate_from_model()
}
bool BaseExpression::can_field_be_generated(bool insertable, bool updatable, bool is_primary_key)
bool BaseExpression::can_field_be_generated(FT)
{
return true;
}