4#ifndef _Stroika_Foundation_Database_Document_Connection_h_
5#define _Stroika_Foundation_Database_Document_Connection_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Foundation/Containers/Set.h"
26namespace Stroika::Foundation::Database::Document {
28 using Characters::String;
29 using Containers::Set;
32 class EngineProperties;
35namespace Stroika::Foundation::Database::Document::Connection {
54 bool fAddAllowsExternallySpecifiedIDs{
true};
69 class Ptr :
public shared_ptr<IRep> {
71 using inherited = shared_ptr<IRep>;
76 Ptr (
const Ptr& src) =
default;
77 Ptr (
Ptr&& src)
noexcept =
default;
78 using inherited::inherited;
86 nonvirtual
Ptr& operator= (
const Ptr& src) =
default;
87 nonvirtual
Ptr& operator= (
Ptr&& src)
noexcept =
default;
92 nonvirtual shared_ptr<const EngineProperties> GetEngineProperties ()
const;
97 nonvirtual Options GetOptions ()
const;
148 nonvirtual
bool operator== (
const Ptr& rhs)
const noexcept;
149 nonvirtual
bool operator== (nullptr_t)
const noexcept;
160 class IRep :
public enable_shared_from_this<IRep> {
164 virtual ~IRep () =
default;
169 virtual shared_ptr<const EngineProperties> GetEngineProperties ()
const = 0;
174 virtual Options GetOptions ()
const = 0;
190 virtual void DropCollection (
const String& name) = 0;
213#include "Connection.inl"
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
virtual Collection::Ptr CreateCollection(const String &name)=0
virtual Transaction mkTransaction()=0
nonvirtual Collection::Ptr GetCollection(const String &name) const
nonvirtual Set< String > GetCollections() const
return the names of all collections
nonvirtual String ToString() const
nonvirtual void DropCollection(const String &name) const
nonvirtual Collection::Ptr CreateCollection(const String &name) const
nonvirtual Transaction mkTransaction() const
NOT a real mutex - just a debugging infrastructure support tool so in debug builds can be assured thr...