#pragma once #include "cplt_fwd.hpp" #include #include #include class SalesTable { public: SQLite::Statement GetRowCount; SQLite::Statement GetRows; SQLite::Statement GetItems; public: SalesTable(TransactionModel& db); }; class PurchasesTable { public: SQLite::Statement GetRowCount; SQLite::Statement GetRows; SQLite::Statement GetItems; public: PurchasesTable(TransactionModel& db); }; class DeliveryTable { public: SQLite::Statement FilterByTypeAndId; SQLite::Statement GetItems; public: DeliveryTable(TransactionModel& db); }; // TODO fuck SQLite::Statement has move ctor but not move assignment operator class TransactionModel { private: class DatabaseWrapper { public: SQLite::Database mSqlite; DatabaseWrapper(TransactionModel& self); }; Project* mProject; DatabaseWrapper mDbWrapper; SalesTable mSales; PurchasesTable mPurchases; DeliveryTable mDeliveries; public: TransactionModel(Project& project); const SQLite::Database& GetSQLite() const; SQLite::Database& GetSQLite(); const SalesTable& GetSales() const; SalesTable& GetSales(); const PurchasesTable& GetPurchases() const; PurchasesTable& GetPurchases(); const DeliveryTable& GetDeliveries() const; DeliveryTable& GetDeliveries(); };