#ifndef hArtistContractTable #define hArtistContractTable #include "PackedTable.h" // No way I will need _all_ the fields. // need: payor_id, artist_payee_id, artist_contract_id, reserve_rate, term_start, term_end // and title... struct _artistContract { private: static const int kDateFieldSize = 12; static const int kDecimalFieldSize = 16; static const int kTheTitleFieldSize = 64; long _artist_contract_id; char _title[kTheTitleFieldSize]; long _artist_payee_id; long _payor_id; char _reserve_rate[kDecimalFieldSize]; char _term_start[kDateFieldSize]; char _term_end[kDateFieldSize]; public: long artist_contract_id() { return _artist_contract_id; } char* title() { return _title; } long artist_payee_id() { return _artist_payee_id; } long payor_id() { return _payor_id; } char* reserve_rate() { return _reserve_rate; } char* term_start() { return _term_start; } char* term_end() { return _term_end; } friend class ArtistContractTable; }; class ArtistContractTable : public PackedTable { public: struct _artistContract* getIndexedData(const tIndex index) { return (struct _artistContract*)this->_getIndexedData(index); } protected: static const int kFieldArtistContractID = 0; static const int kFieldArtistPayeeID = 1; static const int kFieldPayorID = 2; static const int kFieldReserveRate = 3; static const int kFieldTermStart = 4; static const int kFieldTermEnd = 5; static const int kFieldTitle = 6; PackedTable::SharedMemoryHandler _dataFileHandler; virtual DataFileHandler* _getDataFileHandler() { return &_dataFileHandler; } virtual long _dataFlatElementSize() { return sizeof(struct _artistContract); } virtual const char* _maxIDQueryString() { return "SELECT MAX(artist_contract_id) FROM new_artist_contract"; } virtual const char* _dataQueryString() { return "SELECT artist_contract_id,artist_payee_id,payor_id,reserve_rate,term_start,term_end,title FROM new_artist_contract ORDER BY artist_contract_id"; } virtual void _readDataRow(MYSQL_ROW row) { // cast the data block to an array of the right type. // struct _artistContract *array = (struct _artistContract*)this->_dataFlatRAM; // First we need to determine the id, which will give us // the correct index into the array to store everything. // long artistContractID; PackedTable::_ParseLong(row[kFieldArtistContractID], &artistContractID); long i = artistContractID; array[i]._artist_contract_id = artistContractID; PackedTable::_ParseLong(row[kFieldArtistPayeeID], &(array[i]._artist_payee_id)); PackedTable::_ParseLong(row[kFieldPayorID], &(array[i]._payor_id)); PackedTable::_ParseString(row[kFieldReserveRate], (char*)&(array[i]._reserve_rate), _artistContract::kDecimalFieldSize); PackedTable::_ParseString(row[kFieldTermStart], (char*)&(array[i]._term_start), _artistContract::kDateFieldSize); PackedTable::_ParseString(row[kFieldTermEnd], (char*)&(array[i]._term_end), _artistContract::kDateFieldSize); PackedTable::_ParseString(row[kFieldTitle], (char*)&(array[i]._title), _artistContract::kTheTitleFieldSize); } }; #endif