Stroika Library 3.0d20
 
Loading...
Searching...
No Matches
Projection.cpp
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4#include "Stroika/Foundation/StroikaPreComp.h"
5
7
8#include "Projection.h"
9
10using namespace Stroika::Foundation;
12using namespace Stroika::Foundation::Database;
13
14using namespace Database::Document;
15
16/*
17 ********************************************************************************
18 *************************** Document::Projection *******************************
19 ********************************************************************************
20 */
21Database::Document::Document Projection::Apply (const Database::Document::Document& d) const
22{
24 if (const Set<String>* i0 = get_if<static_cast<int> (eOmit)> (&this->fFields_)) {
25 vv.RemoveAll (*i0);
26 }
27 else if (const Set<String>* i1 = get_if<static_cast<int> (eInclude)> (&this->fFields_)) {
28 vv.RetainAll (*i1);
29 }
30 else {
32 }
33 return vv;
34}
35
36bool Projection::Includes (const String& fieldName) const
37{
38 if (const Set<String>* i0 = get_if<static_cast<int> (eOmit)> (&this->fFields_)) {
39 return not i0->Contains (fieldName);
40 }
41 else if (const Set<String>* i1 = get_if<static_cast<int> (eInclude)> (&this->fFields_)) {
42 return i1->Contains (fieldName);
43 }
44 else {
46 return false;
47 }
48}
49
51{
53 sb << "{"sv;
54 if (const Set<String>* i0 = get_if<static_cast<int> (eOmit)> (&this->fFields_)) {
55 sb << "omit: "sv << *i0;
56 }
57 else if (const Set<String>* i1 = get_if<static_cast<int> (eInclude)> (&this->fFields_)) {
58 sb << "include: "sv << *i1;
59 }
60 sb << "}"sv;
61 return sb;
62}
#define AssertNotReached()
Definition Assertions.h:355
Similar to String, but intended to more efficiently construct a String. Mutable type (String is large...
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Definition String.h:201
nonvirtual void RemoveAll()
RemoveAll removes all, or all matching (predicate, iterator range, equals comparer or whatever) items...
Definition Mapping.inl:240
nonvirtual void RetainAll(const ITERABLE_OF_KEY_TYPE &items)
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
nonvirtual bool Includes(const String &fieldName) const
nonvirtual Database::Document::Document Apply(const Database::Document::Document &d) const
nonvirtual bool Contains(ArgByValueType< T > element, EQUALS_COMPARER &&equalsComparer=EQUALS_COMPARER{}) const