You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
827 B
27 lines
827 B
#pragma once |
|
|
|
#include "domain/entities/Item.h" |
|
#include "domain/polices/ItemExpirationPolicy.h" |
|
#include <optional> |
|
#include <functional> |
|
#include <string> |
|
#include <string_view> |
|
#include <vector> |
|
|
|
namespace nxl::autostore::application { |
|
|
|
class IItemRepository |
|
{ |
|
public: |
|
virtual ~IItemRepository() = default; |
|
virtual domain::Item::Id_t save(const domain::Item& item) = 0; |
|
virtual std::optional<domain::Item> findById(domain::Item::Id_t id) = 0; |
|
virtual std::vector<domain::Item> findByOwner(domain::User::Id_t ownerId) = 0; |
|
virtual std::vector<domain::Item> |
|
findWhere(std::function<bool(const domain::Item&)> predicate) = 0; |
|
virtual std::vector<domain::Item> |
|
findWhere(const domain::ItemExpirationSpec& spec) = 0; |
|
virtual void remove(domain::Item::Id_t id) = 0; |
|
}; |
|
|
|
} // namespace nxl::autostore::application
|