2019-08-21 17:59:03 +02:00
/*
* This file is a part of morm
* and is distributed under the 2 - Clause BSD licence .
* Author : Tomasz Sowa < t . sowa @ ttmath . org >
*/
/*
* Copyright ( c ) 2019 , Tomasz Sowa
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions are met :
*
* 1. Redistributions of source code must retain the above copyright notice ,
* this list of conditions and the following disclaimer .
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS IS "
* AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR
* CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
* INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
* CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE .
*
*/
2019-08-22 20:33:35 +02:00
# include <ctime>
2019-08-21 17:59:03 +02:00
# include "basesample.h"
# include "person.h"
# include "language.h"
2019-08-22 20:33:35 +02:00
# include "attachment.h"
2019-08-21 17:59:03 +02:00
namespace morm
{
namespace samples
{
class Sample01 : public BaseSample
{
public :
void make ( )
{
person . set_connector ( model_connector ) ;
2019-09-13 20:17:02 +02:00
//load_defaults(person);
2019-08-21 17:59:03 +02:00
2019-09-13 20:17:02 +02:00
//std::wstring sss = L"cosik";
//person.set_field_value_generic(L"email", L"email", sss);
2019-08-22 20:33:35 +02:00
2019-09-13 20:17:02 +02:00
//person.insert();
2019-09-04 18:02:18 +02:00
//person.update();
2019-09-05 18:32:35 +02:00
//person.save();
//person.remove();
2019-09-04 18:02:18 +02:00
2019-09-13 20:17:02 +02:00
morm : : Finder < Person > finder ( model_connector ) ;
2019-09-17 19:55:39 +02:00
//Person p = finder.use_table_prefix(false).select().where().eq(L"id", 110).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 \" , "
" attachment.id as \" attachment.id \" , attachment.person_id as \" attachment.person_id \" , attachment.name as \" attachment.name \" , attachment.content as \" attachment.content \" , attachment.some_flags as \" attachment.some_flags \" , attachment.created_date as \" attachment.created_date \" , "
" language2.id as \" language2.id \" , language2.english_name as \" language2.english_name \" , language2.local_name as \" language2.local_name \" , language2.code_str as \" language2.code_str \" , language2.code_int as \" language2.code_int \" "
" FROM public.person AS person "
" LEFT JOIN public.language AS language ON person.language_id = language.id "
" LEFT JOIN public.attachment AS attachment ON person.id = attachment.person_id "
" LEFT JOIN public.language AS language2 ON attachment.language_id = language.id "
" where person.id=110 " ) . get ( ) ;
2019-09-13 20:17:02 +02:00
std : : string str ;
p . to_text ( str , true , true ) ;
std : : cout < < str < < std : : endl ;
2019-08-21 17:59:03 +02:00
}
private :
Person person ;
static void load_defaults ( Person & person )
{
2019-09-05 18:32:35 +02:00
person . id = 60 ;
2019-08-21 17:59:03 +02:00
person . first_name = L " MyFirstName " ;
person . last_name = L " MyLastName " ;
person . email = L " myemail@mydomain.ltd " ;
2019-09-04 18:02:18 +02:00
person . set_save_mode ( Model : : DO_INSERT_ON_SAVE ) ;
//person.set_save_mode(Model::DO_UPDATE_ON_SAVE);
2019-08-21 17:59:03 +02:00
2019-09-05 18:32:35 +02:00
person . language . id = 85 ;
2019-08-21 17:59:03 +02:00
person . language . english_name = L " english " ;
person . language . local_name = L " polish " ;
person . language . code_str = L " en " ;
person . language . code_int = 200 ;
2019-09-04 18:02:18 +02:00
person . language . set_save_mode ( Model : : DO_INSERT_ON_SAVE ) ;
//person.language.set_save_mode(Model::DO_UPDATE_ON_SAVE);
2019-08-22 20:33:35 +02:00
std : : time_t t = std : : time ( 0 ) ;
2019-09-05 18:32:35 +02:00
person . attachment . id = 40 ;
person . attachment . person_id = 60 ;
2019-08-22 20:33:35 +02:00
person . attachment . created_date . FromTime ( t ) ;
2019-09-04 18:02:18 +02:00
person . attachment . name = L " attachment name " ;
2019-08-22 20:33:35 +02:00
person . attachment . content = " long binary content " ;
person . attachment . some_flags = true ;
2019-09-04 18:02:18 +02:00
person . attachment . set_save_mode ( Model : : DO_INSERT_ON_SAVE ) ;
//person.attachment.set_save_mode(Model::DO_UPDATE_ON_SAVE);
2019-09-05 18:32:35 +02:00
person . attachment . language . id = 86 ;
2019-09-04 18:02:18 +02:00
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 ) ;
2019-08-21 17:59:03 +02:00
}
} ;
}
}