Added flag has_primary_key_set to Model
Now we know whether the primary key is defined or not and we do not allow to make update/remove if the key is not defined. And when doing insert/update we can put NULL if child models don't have the primary key set (fields with has_foreign_key set to true). Now in after_select() we should also set has_primary_key_set flag or just call get_last_sequence_for_primary_key instead of get_last_sequence. fixed: added prefix +00 when serializing PT::Date to PostgreSQL (time zone) (for a column with a time zone there was a wrong value saved)
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019, Tomasz Sowa
|
||||
* Copyright (c) 2019-2021, Tomasz Sowa
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -51,23 +51,37 @@ public:
|
||||
|
||||
void make()
|
||||
{
|
||||
// delete all datas
|
||||
// delete from attachment; delete from attachment2; delete from language; delete from person; delete from types;
|
||||
|
||||
// select * from person; select * from attachment; select * from attachment2 ; select * from types; select * from language;
|
||||
|
||||
std::string str;
|
||||
|
||||
|
||||
person.set_connector(model_connector);
|
||||
load_defaults(person);
|
||||
|
||||
std::wstring sss = L"cosik wstawiony dynamicznie";
|
||||
person.set_field_value_generic(L"email", L"email", sss);
|
||||
//std::wstring sss = L"cosik wstawiony dynamicznie";
|
||||
//person.set_field_value_generic(L"email", L"email", sss);
|
||||
|
||||
|
||||
|
||||
//person.insert();
|
||||
//person.update();
|
||||
person.save();
|
||||
//person.save();
|
||||
//person.remove();
|
||||
//person.to_text(str, true, true);
|
||||
|
||||
|
||||
morm::Finder<Person> finder(model_connector);
|
||||
Person p = finder.select().where().eq(L"id", 191).get();
|
||||
p.to_text(str, true, true);
|
||||
|
||||
|
||||
|
||||
//std::list<Person> plist = finder.use_table_prefix(false).select().where().eq(L"id", 120).get_list();
|
||||
|
||||
//Person p = finder.use_table_prefix(false).select().where().eq(L"id", 120).get();
|
||||
|
||||
// Person p = finder.prepare_to_select().use_table_prefix(true).raw("select person.id as \"person.id\", person.first_name as \"person.first_name\", person.last_name as \"person.last_name\", person.email as \"person.email\", "
|
||||
// "language.id as \"language.id\", language.english_name as \"language.english_name\", language.local_name as \"language.local_name\", language.code_str as \"language.code_str\", language.code_int as \"language.code_int\", "
|
||||
@@ -79,14 +93,13 @@ void make()
|
||||
// "LEFT JOIN public.language AS language2 ON attachment.language_id = language2.id "
|
||||
// "where person.id=120").get();
|
||||
|
||||
std::cout << "--------------------------------" << std::endl;
|
||||
//std::cout << "--------------------------------" << std::endl;
|
||||
//p.remove();
|
||||
//std::cout << "--------------------------------" << std::endl;
|
||||
|
||||
std::string str;
|
||||
//str += "--------\n";
|
||||
|
||||
person.to_text(str, true, true);
|
||||
|
||||
|
||||
// for(Person & person : plist)
|
||||
// {
|
||||
@@ -112,6 +125,7 @@ private:
|
||||
person.first_name = L"MyFirstName";
|
||||
person.last_name = L"MyLastName";
|
||||
person.email = L"myemail@mydomain.ltd";
|
||||
//person.set_save_mode(Model::DO_NOTHING_ON_SAVE);
|
||||
person.set_save_mode(Model::DO_INSERT_ON_SAVE);
|
||||
//person.set_save_mode(Model::DO_UPDATE_ON_SAVE);
|
||||
|
||||
@@ -120,29 +134,38 @@ private:
|
||||
person.language.local_name = L"polish";
|
||||
person.language.code_str = L"en";
|
||||
person.language.code_int = 200;
|
||||
//person.language.set_save_mode(Model::DO_NOTHING_ON_SAVE);
|
||||
person.language.set_save_mode(Model::DO_INSERT_ON_SAVE);
|
||||
//person.language.set_save_mode(Model::DO_UPDATE_ON_SAVE);
|
||||
|
||||
std::time_t t = std::time(0);
|
||||
|
||||
// person.attachment.id = 40;
|
||||
person.attachment.person_id = person.id;
|
||||
person.attachment.created_date.FromTime(t);
|
||||
person.attachment.name = L"attachment name";
|
||||
person.attachment.content = "long binary content";
|
||||
person.attachment.some_flags = true;
|
||||
person.attachment.set_save_mode(Model::DO_INSERT_ON_SAVE);
|
||||
// //person.attachment.set_save_mode(Model::DO_UPDATE_ON_SAVE);
|
||||
//
|
||||
person.attachment.language.id = 86;
|
||||
person.attachment.language.english_name = L"attachment language";
|
||||
person.attachment.language.local_name = L"attachment local name";
|
||||
person.attachment.language.code_str = L"loen";
|
||||
person.attachment.language.code_int = 300;
|
||||
// person.attachment.language.set_save_mode(Model::DO_UPDATE_ON_SAVE);
|
||||
|
||||
Type type;
|
||||
type.id = 0;
|
||||
type.set_save_mode(Model::DO_INSERT_ON_SAVE);
|
||||
|
||||
person.attachment2.id = 40;
|
||||
person.attachment2.person_id = person.id;
|
||||
person.attachment2.created_date.FromTime(t);
|
||||
person.attachment2.name = L"attachment name";
|
||||
person.attachment2.content = "long binary content";
|
||||
person.attachment2.some_flags = true;
|
||||
person.attachment2.set_save_mode(Model::DO_INSERT_ON_SAVE);
|
||||
// //person.attachment.set_save_mode(Model::DO_UPDATE_ON_SAVE);
|
||||
|
||||
person.attachment2.language.id = 86;
|
||||
person.attachment2.language.english_name = L"attachment language";
|
||||
person.attachment2.language.local_name = L"attachment local name";
|
||||
person.attachment2.language.code_str = L"loen";
|
||||
person.attachment2.language.code_int = 300;
|
||||
person.attachment2.language.set_save_mode(Model::DO_INSERT_ON_SAVE);
|
||||
person.attachment2.language.set_has_primary_key_set(true);
|
||||
|
||||
type.name = L"abcde - fghi";
|
||||
person.attachment2.types.push_back(type);
|
||||
|
||||
type.name = L"second type";
|
||||
person.attachment2.types.push_back(type);
|
||||
|
||||
Attachment attachment;
|
||||
attachment.id = 0;
|
||||
@@ -186,7 +209,6 @@ private:
|
||||
type.name = L"Typ dla attachment 3 - 3";
|
||||
person.attachments.back().types.push_back(type);
|
||||
|
||||
|
||||
//type.name = L"Typik";
|
||||
//person.attachment.types.push_back(type);
|
||||
|
||||
|
Reference in New Issue
Block a user