#pragma once #include #include #include #include #include "Application.hpp" namespace app { template class DatabaseModel { protected: /// Pointer to application that owns the model Application *application = nullptr; uint32_t recordsCount; std::vector> records; public: DatabaseModel(Application *app) : application{app}, recordsCount{0} {} virtual ~DatabaseModel() { clear(); } virtual void requestRecordsCount() {} virtual bool updateRecords(std::unique_ptr> dbRecords, const uint32_t offset, const uint32_t limit, uint32_t count) { records.clear(); if (dbRecords != nullptr) { for (uint32_t i = 0; i < dbRecords->size(); i++) { records.push_back(std::make_shared(dbRecords.get()->operator[](i))); } return true; } else { LOG_ERROR("Null pointer received from DB"); return false; } } virtual void clear() { records.clear(); recordsCount = 0; } std::shared_ptr getRecord(uint32_t index) { if ((index < 0) || (index >= records.size())) { return nullptr; } return records[index]; } }; } /* namespace app */