4#ifndef _Stroika_Foundation_Database_Document_Projection_h_
5#define _Stroika_Foundation_Database_Document_Projection_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
10#include "Stroika/Foundation/Containers/Set.h"
19namespace Stroika::Foundation::Database::Document {
21 using Characters::String;
22 using Containers::Set;
35 using MyVariant_ = variant<Set<String>,
Set<String>>;
54 nonvirtual tuple<Flag, Set<String>> GetFields ()
const;
77 nonvirtual
bool operator== (
const Projection&)
const =
default;
99 inline const Projection kOnlyIDs = Projection{Projection::eInclude, get<Set<String>> (kOmitIDs.GetFields ())};
108#include "Projection.inl"
String is like std::u32string, except it is much easier to use, often much more space efficient,...
A Mapping uniquely associates two elements: a key and a value (use Assocation to allow multiple value...
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
define a (simple) projection on a document, subsetting the fields of that document.
nonvirtual bool Includes(const String &fieldName) const
nonvirtual Database::Document::Document Apply(const Database::Document::Document &d) const
nonvirtual auto operator<=>(const Projection &) const =delete
nonvirtual String ToString() const