Index: src/libchcore/TSerializerVersion.cpp =================================================================== diff -u -N -r1342b18babc7e88850e74f46cb473a737a68f28a -re96806b7f8ff7ca7e9f4afbea603e6351a3dc3e3 --- src/libchcore/TSerializerVersion.cpp (.../TSerializerVersion.cpp) (revision 1342b18babc7e88850e74f46cb473a737a68f28a) +++ src/libchcore/TSerializerVersion.cpp (.../TSerializerVersion.cpp) (revision e96806b7f8ff7ca7e9f4afbea603e6351a3dc3e3) @@ -25,85 +25,84 @@ #include "TSQLiteException.h" #include "sqlite3\sqlite3.h" -BEGIN_CHCORE_NAMESPACE - -using namespace sqlite; - -TSerializerVersion::TSerializerVersion(const TSQLiteDatabasePtr& spDatabase) : - m_spDatabase(spDatabase), - m_bSetupExecuted(false) +namespace chcore { - if(!spDatabase) - THROW_SERIALIZER_EXCEPTION(eErr_InvalidArgument, _T("No database provided")); -} + using namespace sqlite; -TSerializerVersion::~TSerializerVersion() -{ -} + TSerializerVersion::TSerializerVersion(const TSQLiteDatabasePtr& spDatabase) : + m_spDatabase(spDatabase), + m_bSetupExecuted(false) + { + if (!spDatabase) + THROW_SERIALIZER_EXCEPTION(eErr_InvalidArgument, _T("No database provided")); + } -void TSerializerVersion::Setup() -{ - if(m_bSetupExecuted) - return; + TSerializerVersion::~TSerializerVersion() + { + } - TSQLiteTransaction tTransaction(m_spDatabase); - TSQLiteStatement tStatement(m_spDatabase); - - tStatement.Prepare(_T("SELECT count(*) FROM sqlite_master WHERE type=?1 AND name=?2")); - tStatement.BindValue(1, _T("table")); - tStatement.BindValue(2, _T("version")); - if(tStatement.Step() != TSQLiteStatement::eStep_HasRow) - THROW_SQLITE_EXCEPTION(eErr_InternalProblem, SQLITE_ERROR, _T("Problem accessing sqlite_master table")); - - int iVersionCount = tStatement.GetInt(0); - if(iVersionCount == 0) + void TSerializerVersion::Setup() { - // create table - tStatement.Prepare(_T("CREATE TABLE IF NOT EXISTS version(db_version INT NOT NULL)")); - tStatement.Step(); + if (m_bSetupExecuted) + return; - tStatement.Prepare(_T("INSERT INTO version(db_version) VALUES(?1)")); - tStatement.BindValue(1, 0); - tStatement.Step(); - } + TSQLiteTransaction tTransaction(m_spDatabase); + TSQLiteStatement tStatement(m_spDatabase); - tTransaction.Commit(); + tStatement.Prepare(_T("SELECT count(*) FROM sqlite_master WHERE type=?1 AND name=?2")); + tStatement.BindValue(1, _T("table")); + tStatement.BindValue(2, _T("version")); + if (tStatement.Step() != TSQLiteStatement::eStep_HasRow) + THROW_SQLITE_EXCEPTION(eErr_InternalProblem, SQLITE_ERROR, _T("Problem accessing sqlite_master table")); - m_bSetupExecuted = true; -} + int iVersionCount = tStatement.GetInt(0); + if (iVersionCount == 0) + { + // create table + tStatement.Prepare(_T("CREATE TABLE IF NOT EXISTS version(db_version INT NOT NULL)")); + tStatement.Step(); -int TSerializerVersion::GetVersion() -{ - Setup(); + tStatement.Prepare(_T("INSERT INTO version(db_version) VALUES(?1)")); + tStatement.BindValue(1, 0); + tStatement.Step(); + } - TSQLiteTransaction tTransaction(m_spDatabase); - TSQLiteStatement tStatement(m_spDatabase); + tTransaction.Commit(); - // when table does not exist the sqlite error is just SQLITE_ERROR when preparing statement - tStatement.Prepare(_T("SELECT db_version FROM version")); - if(tStatement.Step() == TSQLiteStatement::eStep_HasRow) + m_bSetupExecuted = true; + } + + int TSerializerVersion::GetVersion() { + Setup(); + + TSQLiteTransaction tTransaction(m_spDatabase); + TSQLiteStatement tStatement(m_spDatabase); + + // when table does not exist the sqlite error is just SQLITE_ERROR when preparing statement + tStatement.Prepare(_T("SELECT db_version FROM version")); + if (tStatement.Step() == TSQLiteStatement::eStep_HasRow) + { + tTransaction.Commit(); + return tStatement.GetInt(0); + } + tTransaction.Commit(); - return tStatement.GetInt(0); + return 0; } - tTransaction.Commit(); - return 0; -} + void TSerializerVersion::SetVersion(int iNewVersion) + { + Setup(); -void TSerializerVersion::SetVersion(int iNewVersion) -{ - Setup(); + TSQLiteTransaction tTransaction(m_spDatabase); + TSQLiteStatement tStatement(m_spDatabase); - TSQLiteTransaction tTransaction(m_spDatabase); - TSQLiteStatement tStatement(m_spDatabase); + // create table + tStatement.Prepare(_T("UPDATE version SET db_version=?1")); + tStatement.BindValue(1, iNewVersion); + tStatement.Step(); - // create table - tStatement.Prepare(_T("UPDATE version SET db_version=?1")); - tStatement.BindValue(1, iNewVersion); - tStatement.Step(); - - tTransaction.Commit(); + tTransaction.Commit(); + } } - -END_CHCORE_NAMESPACE