// file : sqlite/attach/driver.cxx // license : GNU GPL v2; see accompanying LICENSE file // Test attached database support. // #include // std::auto_ptr #include #include #include #include #include #include #include #include "test.hxx" #include "test-odb.hxx" using namespace std; namespace sqlite = odb::sqlite; using namespace sqlite; int main (int argc, char* argv[]) { try { auto_ptr mdb (create_specific_database (argc, argv)); { object o ("one"); connection_ptr c (mdb->connection ()); database adb (c, ":memory:", "adb"); // Create schema similar to create_database(). // { c->execute ("PRAGMA foreign_keys=OFF"); transaction t (c->begin ()); odb::schema_catalog::create_schema (adb); t.commit (); c->execute ("PRAGMA foreign_keys=ON"); } { transaction t (c->begin ()); mdb->persist (o); adb.persist (o); t.commit (); } { transaction t (c->begin ()); auto_ptr p (adb.load (o.id)); t.commit (); assert (p->str == o.str); } { o.str = "two"; transaction t (c->begin ()); adb.update (o); t.commit (); } { typedef sqlite::query query; transaction t (c->begin ()); auto_ptr p (adb.query_one (query::str == "two")); t.commit (); assert (p->str == o.str); } { transaction t (c->begin ()); adb.erase (o); t.commit (); } { transaction t (c->begin ()); auto_ptr p (mdb->load (o.id)); t.commit (); assert (p.get () != 0); } adb.detach (); } } catch (const odb::exception& e) { cerr << e.what () << endl; return 1; } }