// file : common/schema/namespace/driver.cxx // license : GNU GPL v2; see accompanying LICENSE file // Test database schemas (aka database namespaces). // #include // std::auto_ptr #include #include #include #include #include #include "test.hxx" #include "test-odb.hxx" using namespace std; using namespace odb::core; int main (int argc, char* argv[]) { try { auto_ptr db (create_database (argc, argv)); // Test database schema (aka database namespace). // using ns::object2; object2 o2; o2.id = "aaa"; o2.nums.push_back (1); o2.nums.push_back (2); o2.nums.push_back (3); o2.obj1 = new object1; o2.obj1->str = "aaa"; { transaction t (db->begin ()); db->persist (o2.obj1); db->persist (o2); t.commit (); } { transaction t (db->begin ()); auto_ptr p2 (db->load ("aaa")); t.commit (); assert (o2 == *p2); } { typedef odb::query query; typedef odb::result result; transaction t (db->begin ()); { result r (db->query (query::id == "aaa")); assert (size (r) == 1); } { result r (db->query (query::obj1->str == "aaa")); assert (size (r) == 1); } t.commit (); } { typedef odb::query query; typedef odb::result result; transaction t (db->begin ()); result r (db->query (query::object2::id == "aaa")); result::iterator i (r.begin ()); assert (i != r.end ()); assert (i->id2 == "aaa" && i->str == "aaa"); assert (++i == r.end ()); t.commit (); } { typedef odb::result result; transaction t (db->begin ()); result r (db->query ()); result::iterator i (r.begin ()); assert (i != r.end ()); assert (i->str == "aaa"); assert (++i == r.end ()); t.commit (); } } catch (const odb::exception& e) { cerr << e.what () << endl; return 1; } }