knightonline/server/shared/database/UserItemSet.h

35 lines
788 B
C++

#pragma once
class CUserItemSet : public OdbcRecordset
{
public:
CUserItemSet(OdbcConnection * dbConnection, UserItemArray * pMap)
: OdbcRecordset(dbConnection), m_pMap(pMap) {}
virtual tstring GetTableName() { return _T("USER_ITEMS"); }
virtual tstring GetColumns() { return _T("nItemID, nItemSerial"); }
virtual bool Fetch()
{
uint32 nItemID = _dbCommand->FetchUInt32(1);
uint64 nItemSerial = _dbCommand->FetchUInt64(2);
_USER_ITEM * pData = m_pMap->GetData(nItemID);
if (pData == nullptr)
{
pData = new _USER_ITEM;
pData->nItemID = nItemID;
pData->nItemSerial.push_back(nItemSerial);
if (!m_pMap->PutData(pData->nItemID,pData))
delete pData;
}
else
pData->nItemSerial.push_back(nItemSerial);
return true;
}
UserItemArray *m_pMap;
};