mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-10-04 19:13:06 -04:00
125 lines
3.3 KiB
C++
Executable File
125 lines
3.3 KiB
C++
Executable File
// ======================================================================
|
|
//
|
|
// TaskGetAccountForPurge.cpp
|
|
// copyright (c) 2005 Sony Online Entertainment
|
|
//
|
|
// ======================================================================
|
|
|
|
#include "FirstLoginServer.h"
|
|
#include "TaskGetAccountForPurge.h"
|
|
|
|
#include "ConfigLoginServer.h"
|
|
#include "DatabaseConnection.h"
|
|
#include "PurgeManager.h"
|
|
#include "sharedDatabaseInterface/Bindable.h"
|
|
#include "sharedDatabaseInterface/DbQuery.h"
|
|
#include "sharedDatabaseInterface/DbSession.h"
|
|
|
|
// ======================================================================
|
|
|
|
namespace TaskGetAccountForPurgeNamespace
|
|
{
|
|
class GetAccountForPurgeQuery : public DB::Query
|
|
{
|
|
public:
|
|
GetAccountForPurgeQuery(int purgePhase, int minAge);
|
|
|
|
virtual void getSQL(std::string &sql);
|
|
virtual bool bindParameters();
|
|
virtual bool bindColumns();
|
|
virtual QueryMode getExecutionMode() const;
|
|
|
|
StationId getAccount() const;
|
|
|
|
private:
|
|
DB::BindableLong m_account;
|
|
DB::BindableLong m_min_age;
|
|
DB::BindableLong m_purge_phase;
|
|
|
|
private: //disable
|
|
GetAccountForPurgeQuery(const GetAccountForPurgeQuery&);
|
|
GetAccountForPurgeQuery& operator=(const GetAccountForPurgeQuery&);
|
|
};
|
|
}
|
|
using namespace TaskGetAccountForPurgeNamespace;
|
|
|
|
// ======================================================================
|
|
|
|
TaskGetAccountForPurge::TaskGetAccountForPurge(int purgePhase) :
|
|
DB::TaskRequest(),
|
|
m_purgePhase(purgePhase)
|
|
{
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
bool TaskGetAccountForPurge::process(DB::Session *session)
|
|
{
|
|
GetAccountForPurgeQuery qry(m_purgePhase, ConfigLoginServer::getPurgePhaseAdvanceDays(m_purgePhase));
|
|
if (!session->exec(&qry))
|
|
return false;
|
|
m_account = qry.getAccount();
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void TaskGetAccountForPurge::onComplete()
|
|
{
|
|
PurgeManager::onGetAccountForPurge(m_account, m_purgePhase);
|
|
}
|
|
|
|
// ======================================================================
|
|
|
|
|
|
GetAccountForPurgeQuery::GetAccountForPurgeQuery(int purgePhase, int minAge) :
|
|
Query(),
|
|
m_account(),
|
|
m_min_age(minAge),
|
|
m_purge_phase(purgePhase)
|
|
{
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void GetAccountForPurgeQuery::getSQL(std::string &sql)
|
|
{
|
|
sql=std::string("begin :account := ")+DatabaseConnection::getInstance().getSchemaQualifier()+"purge_process.get_account_for_purge(:purge_phase, :min_age); end;";
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
bool GetAccountForPurgeQuery::bindParameters()
|
|
{
|
|
if (!bindParameter(m_account)) return false;
|
|
if (!bindParameter(m_purge_phase)) return false;
|
|
if (!bindParameter(m_min_age)) return false;
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
bool GetAccountForPurgeQuery::bindColumns()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
GetAccountForPurgeQuery::QueryMode GetAccountForPurgeQuery::getExecutionMode() const
|
|
{
|
|
return MODE_PROCEXEC;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
StationId GetAccountForPurgeQuery::getAccount() const
|
|
{
|
|
if (!m_account.isNull())
|
|
return m_account.getValue();
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
// ======================================================================
|