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
24class TilesetRepo final {
25 public:
38 explicit TilesetRepo(
39 gsl::not_null<const ArtifactChecksumProvider *> checksum_provider,
40 gsl::not_null<const TilesetMetadataProvider *> metadata_provider,
41 gsl::not_null<const TilesetArtifactKeyProvider *> key_provider,
42 gsl::not_null<const TilesetArtifactReader *> reader,
43 gsl::not_null<TilesetArtifactWriter *> writer,
44 gsl::not_null<const UserDiagnostics *> diag)
45 : checksum_provider_{checksum_provider}, metadata_provider_{metadata_provider}, key_provider_{key_provider},
46 reader_{reader}, writer_{writer}, diag_{diag}
47 {
48 }
49
58 [[nodiscard]] ChainableResult<void> save(const Tileset &tileset) const;
59
64 [[nodiscard]] ChainableResult<std::unique_ptr<Tileset>> load(const std::string &name) const;
65
70 [[nodiscard]] bool exists(const std::string &tileset_name) const;
71
75 [[nodiscard]] const ArtifactChecksumProvider &checksum_provider() const
76 {
77 return *checksum_provider_;
78 }
79
83 [[nodiscard]] const TilesetArtifactKeyProvider &key_provider() const
84 {
85 return *key_provider_;
86 }
87
88 private:
89 const ArtifactChecksumProvider *checksum_provider_;
90 const TilesetMetadataProvider *metadata_provider_;
91 const TilesetArtifactKeyProvider *key_provider_;
92 const TilesetArtifactReader *reader_;
93 TilesetArtifactWriter *writer_;
94 const UserDiagnostics *diag_;
95};
96
97} // 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:12
Abstract class for structured error reporting and diagnostic output.
std::string name
@ tileset
Configuration scoped to a specific tileset.