#ifndef hSaleTable #define hSaleTable #include "PackedTable.h" #define kPriceFieldSize 32 #define kDateEndFieldSize 12 #define kCountryCodeFieldSize 3 struct _sale { private: long _sale_id; char _date_end[kDateEndFieldSize]; char _product_type; char _format_type; char _media_type; long _units; char _price[kPriceFieldSize]; long _sales; long _returns; char _total_revenue[kPriceFieldSize]; char _channel; long _lic_track_id; long _product_id; char _country_code[kCountryCodeFieldSize]; char _price_level; char _average_price[kPriceFieldSize]; char _wholesale_price[kPriceFieldSize]; char _retail_price[kPriceFieldSize]; char _artist_royalty_status; long _file_id; char _conversion_rate[kPriceFieldSize]; public: long sale_id() { return _sale_id; } char* date_end() { return _date_end; } char product_type() { return _product_type; } char format_type() { return _format_type; } char media_type() { return _media_type; } long units() { return _units; } char* price() { return _price; } long sales() { return _sales; } long returns() { return _returns; } char* total_revenue() { return _total_revenue; } int channel() { return _channel; } long lic_track_id() { return _lic_track_id; } long product_id() { return _product_id; } char* country_code() { return _country_code; } int price_level() { return _price_level; } char* average_price() { return _average_price; } char* wholesale_price() { return _wholesale_price; } char* retail_price() { return _retail_price; } int artist_royalty_status() { return _artist_royalty_status; } long file_id() { return _file_id; } char* conversion_rate() { return _conversion_rate; } friend class SaleTable; }; class SaleTable : public PackedTable { public: struct _sale* getIndexedData(const tIndex index) { return (struct _sale*)this->_getIndexedData(index); } protected: static const int kFieldSaleID = 0; static const int kFieldDateEnd = 1; static const int kFieldProductType = 2; static const int kFieldFormatType = 3; static const int kFieldMediaType = 4; static const int kFieldUnits = 5; static const int kFieldPrice = 6; static const int kFieldSales = 7; static const int kFieldReturns = 8; static const int kFieldTotalRevenue = 9; static const int kFieldChannel = 10; static const int kFieldLicTrackID = 11; static const int kFieldProductID = 12; static const int kFieldCountryCode = 13; static const int kFieldPriceLevel = 14; static const int kFieldAveragePrice = 15; static const int kFieldWholesalePrice = 16; static const int kFieldRetailPrice = 17; static const int kFieldArtistRoyaltyStatus = 18; static const int kFieldFileID = 19; static const int kFieldConversionRate = 20; virtual tSize _dataFlatElementSize() { return sizeof(struct _sale); } virtual const char* _maxIDQueryString() { return "SELECT MAX(sale_id) FROM sale"; } virtual const char* _dataQueryString() { return "SELECT sale_id,date_end,product_type,format_type,media_type,units,price,sales,returns,total_revenue,channel,lic_track_id,product_id,country_code,price_level,average_price,wholesale_price,retail_price,artist_royalty_status,file_id,conversion_rate FROM sale ORDER BY sale_id"; } virtual void _writeRowFlat(tIndex i, MYSQL_ROW row, void* data) { struct _sale* dataPtr = (struct _sale*)data; (*dataPtr)._sale_id = i; PackedTable::_ParseString(row[kFieldDateEnd], (char*)&((*dataPtr)._date_end), kDateEndFieldSize); PackedTable::_ParseChar(row[kFieldProductType], &((*dataPtr)._product_type)); PackedTable::_ParseChar(row[kFieldFormatType], &((*dataPtr)._format_type)); PackedTable::_ParseByte(row[kFieldMediaType], &((*dataPtr)._media_type)); PackedTable::_ParseLong(row[kFieldUnits], &((*dataPtr)._units)); PackedTable::_ParseString(row[kFieldPrice], (char*)&((*dataPtr)._price), kPriceFieldSize); PackedTable::_ParseLong(row[kFieldSales], &((*dataPtr)._sales)); PackedTable::_ParseLong(row[kFieldReturns], &((*dataPtr)._returns)); PackedTable::_ParseString(row[kFieldTotalRevenue], (char*)&((*dataPtr)._total_revenue), kPriceFieldSize); PackedTable::_ParseByte(row[kFieldChannel], &((*dataPtr)._channel)); PackedTable::_ParseLong(row[kFieldLicTrackID], &((*dataPtr)._lic_track_id)); PackedTable::_ParseLong(row[kFieldProductID], &((*dataPtr)._product_id)); PackedTable::_ParseString(row[kFieldCountryCode], (char*)&((*dataPtr)._country_code), kCountryCodeFieldSize); PackedTable::_ParseByte(row[kFieldPriceLevel], &((*dataPtr)._price_level)); PackedTable::_ParseString(row[kFieldAveragePrice], (char*)&((*dataPtr)._average_price), kPriceFieldSize); PackedTable::_ParseString(row[kFieldWholesalePrice], (char*)&((*dataPtr)._wholesale_price), kPriceFieldSize); PackedTable::_ParseString(row[kFieldRetailPrice], (char*)&((*dataPtr)._retail_price), kPriceFieldSize); PackedTable::_ParseByte(row[kFieldArtistRoyaltyStatus], &((*dataPtr)._artist_royalty_status)); PackedTable::_ParseLong(row[kFieldFileID], &((*dataPtr)._file_id)); PackedTable::_ParseString(row[kFieldConversionRate], (char*)&((*dataPtr)._conversion_rate), kPriceFieldSize); } }; #endif