pos/database/posdb.h

64 lines
1.8 KiB
C
Raw Permalink Normal View History

2011-11-08 17:06:32 -05:00
#ifndef _POS_DB_H_
#define _POS_DB_H_
2011-11-10 16:56:56 -05:00
#include "common.h"
2011-11-08 17:06:32 -05:00
#include "sha1.h"
#include "log.h"
#include <list>
#include <map>
#include <string>
class PosDb {
public:
PosDb(const char * fn);
uint32_t getAccountFromHash(const SHA1Hash & hash);
std::list<std::string> getHashesFromAccount(uint32_t account);
2011-11-08 20:38:06 -05:00
std::list<std::string> getHashesFromAccount(std::string account);
2011-11-08 17:06:32 -05:00
int32_t getAccountBalance(const SHA1Hash & hash);
int32_t getAccountBalance(uint32_t account);
2011-11-08 20:38:06 -05:00
int32_t getAccountBalance(std::string account);
2011-11-08 17:06:32 -05:00
uint64_t associateHash(const SHA1Hash & hash, uint32_t account);
2011-11-08 20:38:06 -05:00
uint64_t associateHash(const SHA1Hash & hash, std::string account);
2011-11-08 17:06:32 -05:00
uint64_t deassociateHash(const SHA1Hash & hash);
uint64_t doTransaction(const SHA1Hash & hash, int32_t delta);
2011-11-08 20:38:06 -05:00
uint64_t doTransaction(const uint32_t account, int32_t delta);
uint64_t doTransaction(std::string account, int32_t delta);
2011-11-08 17:06:32 -05:00
uint64_t revertTransaction(uint64_t serial);
int32_t getUPCPrice(uint64_t upc);
uint64_t setUPCPrice(uint64_t upc, int32_t price);
int32_t getStock(uint64_t upc);
uint64_t doStockChange(uint64_t upc, int32_t delta);
2011-11-08 17:06:32 -05:00
std::string getUPCName(uint64_t upc);
uint64_t setUPCName (uint64_t upc, std::string name);
2011-11-11 00:49:18 -05:00
std::vector<std::string> toString();
2011-11-10 16:56:56 -05:00
2011-11-08 17:06:32 -05:00
private:
void acceptLogEntry(const LogEntry & l);
2011-11-08 20:38:06 -05:00
std::multimap<uint32_t, SHA1Hash> account_to_hash;
2011-11-08 17:06:32 -05:00
std::map<uint32_t, int32_t> account_to_balance;
std::map<uint64_t, int32_t> upc_to_stock;
std::map<uint64_t, int32_t> upc_to_price;
std::map<uint64_t, std::string> upc_to_name;
2011-11-08 17:06:32 -05:00
2011-11-08 20:38:06 -05:00
std::map<uint64_t, LogEntry> serial_to_object;
2011-11-08 17:06:32 -05:00
Log log;
};
2011-11-08 20:38:06 -05:00
typedef std::multimap<uint32_t, SHA1Hash>::iterator ath_it;
typedef std::map<uint32_t, int32_t>::iterator atb_it;
typedef std::map<uint64_t, int32_t>::iterator uts_it;
2011-11-08 20:38:06 -05:00
typedef std::map<uint64_t, LogEntry>::iterator sto_it;
typedef std::pair<ath_it, ath_it> ath_it_r;
2011-11-08 17:06:32 -05:00
#endif