serialize a model to flat string even when a DO_NOTHING_ON_SAVE flag is set

while here:
- add FT::serialize_to_null_if_null and FT::do_not_serialize_if_null flags
This commit is contained in:
2023-02-26 18:28:16 +01:00
parent d1c86c84cf
commit 0fbd988eda
7 changed files with 114 additions and 42 deletions

View File

@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2018-2022, Tomasz Sowa
* Copyright (c) 2018-2023, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -112,22 +112,36 @@ bool BaseExpression::get_allow_to_use_prefix()
void BaseExpression::generate_from_model(pt::TextStream & stream, Model & model)
{
FT field_type = FT::default_type;
generate_from_model(stream, model, field_type);
}
void BaseExpression::generate_from_model(pt::TextStream & stream, Model & model, const FT & field_type)
{
this->out_stream = &stream;
generate_from_model(model);
generate_from_model(model, field_type);
this->out_stream = nullptr;
}
void BaseExpression::generate_from_model(Model & model)
void BaseExpression::generate_from_model(Model & model, const FT & field_type)
{
if( out_stream )
{
before_generate_from_model();
dump_additional_info(model);
model.fields();
add_additional_columns(model);
after_generate_from_model();
if( should_field_model_be_generated_as_null(model.get_has_primary_key_set(), field_type) )
{
put_null_value();
}
else
{
before_generate_from_model();
dump_additional_info(model);
model.fields();
add_additional_columns(model);
after_generate_from_model();
}
}
}
@@ -164,6 +178,17 @@ bool BaseExpression::can_field_be_generated(const FT &)
}
bool BaseExpression::can_field_model_be_generated(bool has_model_primary_key, const FT & field_type)
{
return true;
}
bool BaseExpression::should_field_model_be_generated_as_null(bool has_model_primary_key, const FT & field_type)
{
return false;
}
void BaseExpression::field_before()
{
if( !is_first_field )