#pragma once #include "cplt_fwd.hpp" #include #include #include enum class TableKind { Sales, SalesItems, Purchases, PurchasesItems, Deliveries, DeliveriesItems, }; class SalesTable { public: SQLite::Statement GetRowCount; SQLite::Statement GetRows; SQLite::Statement GetItems; public: SalesTable(MainDatabase& db); }; class PurchasesTable { public: SQLite::Statement GetRowCount; SQLite::Statement GetRows; SQLite::Statement GetItems; public: PurchasesTable(MainDatabase& db); }; class DeliveryTable { public: SQLite::Statement FilterByTypeAndId; SQLite::Statement GetItems; public: DeliveryTable(MainDatabase& db); }; class MainDatabase { private: class DatabaseWrapper { public: SQLite::Database mSqlite; DatabaseWrapper(MainDatabase& self); }; Project* mProject; DatabaseWrapper mDbWrapper; SalesTable mSales; PurchasesTable mPurchases; DeliveryTable mDeliveries; public: MainDatabase(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(); };