Porytiles
Loading...
Searching...
No Matches
tileset_repo.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <string>
5
6#include "gsl/pointers"
7
16
17namespace porytiles {
18
26class TilesetRepo final {
27 public:
42 explicit TilesetRepo(
43 gsl::not_null<const ArtifactChecksumProvider *> checksum_provider,
44 gsl::not_null<const TilesetMetadataProvider *> metadata_provider,
45 gsl::not_null<const TilesetArtifactKeyProvider *> key_provider,
46 gsl::not_null<const TilesetArtifactReader *> reader,
47 gsl::not_null<TilesetArtifactWriter *> writer,
48 gsl::not_null<const UserDiagnostics *> diag)
49 : checksum_provider_{checksum_provider}, metadata_provider_{metadata_provider}, key_provider_{key_provider},
50 reader_{reader}, writer_{writer}, diag_{diag}
51 {
52 }
53
64 [[nodiscard]] ChainableResult<void> save(const Tileset &tileset) const;
65
72 [[nodiscard]] ChainableResult<std::unique_ptr<Tileset>> load(const std::string &name) const;
73
80 [[nodiscard]] bool exists(const std::string &tileset_name) const;
81
87 [[nodiscard]] const ArtifactChecksumProvider &checksum_provider() const
88 {
89 return *checksum_provider_;
90 }
91
97 [[nodiscard]] const TilesetArtifactKeyProvider &key_provider() const
98 {
99 return *key_provider_;
100 }
101
102 private:
103 const ArtifactChecksumProvider *checksum_provider_;
104 const TilesetMetadataProvider *metadata_provider_;
105 const TilesetArtifactKeyProvider *key_provider_;
106 const TilesetArtifactReader *reader_;
107 TilesetArtifactWriter *writer_;
108 const UserDiagnostics *diag_;
109};
110
111} // namespace porytiles
Abstract service for managing artifact checksums.
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Abstract interface for generating keys and discovering tileset artifacts in a backing store.
Abstract interface for reading tileset artifacts from a backing store into a Tileset object.
Abstract interface for writing tileset artifacts from a Tileset object to a backing store.
Abstract interface for querying tileset metadata by name.
Repository interface for the Tileset aggregate root.
TilesetRepo(gsl::not_null< const ArtifactChecksumProvider * > checksum_provider, gsl::not_null< const TilesetMetadataProvider * > metadata_provider, gsl::not_null< const TilesetArtifactKeyProvider * > key_provider, gsl::not_null< const TilesetArtifactReader * > reader, gsl::not_null< TilesetArtifactWriter * > writer, gsl::not_null< const UserDiagnostics * > diag)
Constructs a TilesetRepo with the required dependencies.
ChainableResult< void > save(const Tileset &tileset) const
Persists a given Tileset and caches new artifact checksums.
bool exists(const std::string &tileset_name) const
Checks if the given Tileset exists in the backing store.
ChainableResult< std::unique_ptr< Tileset > > load(const std::string &name) const
Loads an existing Tileset from storage.
const TilesetArtifactKeyProvider & key_provider() const
Gets a reference to the TilesetArtifactKeyProvider for this repo.
const ArtifactChecksumProvider & checksum_provider() const
Gets a reference to the ArtifactChecksumProvider for this repo.
A complete tileset containing both Porytiles and Porymap components.
Definition tileset.hpp:14
Abstract class for structured error reporting and diagnostic output.
@ tileset
Configuration scoped to a specific tileset.