#pragma once #include "application/interfaces/IItemRepository.h" #include #include #include namespace nxl::autostore::infrastructure { class FileItemRepository : public application::IItemRepository { public: explicit FileItemRepository(std::string_view dbPath); domain::Item::Id_t save(const domain::Item& item) override; std::optional findById(domain::Item::Id_t id) override; std::vector findByOwner(domain::User::Id_t userId) override; std::vector findWhere(std::function predicate) override; void remove(domain::Item::Id_t id) override; private: void load(); void persist(); std::string dbPath; std::vector items; std::mutex mtx; }; } // namespace nxl::autostore::infrastructure