commit c817f17f
Add auto init code
Changed files
| M | src/db/Db2CppDb.cpp before |
diff --git a/src/db/Db2CppDb.cpp b/src/db/Db2CppDb.cpp
index 985db6f..6f52686 100644
--- a/src/db/Db2CppDb.cpp
+++ b/src/db/Db2CppDb.cpp
@@ -58,12 +58,30 @@ bool Db2CppDb::IsDuplicate(const std::string &servername,const tm &thetime)
}
}
+static void DoDbDataInit(cppdb::session& sql)
+{
+ std::string checkWorldSql = "SELECT 'X' FROM oastat_players WHERE guid = 'WORLD'";
+ std::string insertWorldSql = "INSERT INTO oastat_players (guid,lastseen, isbot, model,headmodel,nickname) VALUES ('WORLD',date('now'),'n','-','-','-')";
+ std::string updateWorldSql = "UPDATE oastat_players SET playerid = 0 WHERE guid = 'WORLD'";
+ cppdb::result res = sql << checkWorldSql;
+ if (res.next()) {
+ //The WORLD record already exist
+ return;
+ }
+ sql << insertWorldSql << cppdb::exec;
+ sql << updateWorldSql << cppdb::exec;
+}
+
Db2CppDb::Db2CppDb() : connectstring("pgsql:database=oastat")
{
sql = std::shared_ptr<cppdb::session>(new cppdb::session(connectstring));
commitlock = std::shared_ptr<cppdb::transaction>(new cppdb::transaction(*sql));
InitStrings("pgsql");
ReadConfigFromDb();
+ DoDbDataInit(*sql);
+ commitlock->commit();
+ commitlock = nullptr;
+ commitlock = std::shared_ptr<cppdb::transaction>(new cppdb::transaction(*sql));
}
Db2CppDb::Db2CppDb(const std::string &dbargs)
@@ -77,8 +95,12 @@ Db2CppDb::Db2CppDb(const std::string &dbargs)
commitlock = std::shared_ptr<cppdb::transaction>(new cppdb::transaction(*sql));
InitStrings(holder);
ReadConfigFromDb();
+ DoDbDataInit(*sql);
debug = false;
ignoreMissingTimestamp = std::getenv(OASTAT_CPPDB_IGNORE_MISSING_TIMESTAMP);
+ commitlock->commit();
+ commitlock = nullptr;
+ commitlock = std::shared_ptr<cppdb::transaction>(new cppdb::transaction(*sql));
}