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 {
59 function<void (
Operation op,
const Ptr& documentDBConnection,
const optional<String>& collectionName,
const exception_ptr& e)>;
77 bool fAddAllowsExternallySpecifiedIDs{
true};
99 class Ptr :
public shared_ptr<IRep> {
101 using inherited = shared_ptr<IRep>;
106 Ptr ()
noexcept =
default;
107 Ptr (
const Ptr& src) =
default;
108 Ptr (
Ptr&& src)
noexcept =
default;
109 Ptr (nullptr_t)
noexcept;
110 Ptr (
const inherited& i)
noexcept;
118 nonvirtual
Ptr& operator= (
const Ptr& src) =
default;
119 nonvirtual
Ptr& operator= (
Ptr&& src)
noexcept =
default;
124 nonvirtual shared_ptr<const EngineProperties> GetEngineProperties ()
const;
129 nonvirtual Options GetOptions ()
const;
186 nonvirtual
bool operator== (
const Ptr& rhs)
const noexcept;
187 nonvirtual
bool operator== (nullptr_t)
const noexcept;
199 class IRep :
public enable_shared_from_this<IRep> {
203 virtual ~IRep () =
default;
208 virtual shared_ptr<const EngineProperties> GetEngineProperties ()
const = 0;
213 virtual Options GetOptions ()
const = 0;
235 virtual void DropCollection (
const String& name) = 0;
258#include "Connection.inl"
function< void(Operation op, const Ptr &documentDBConnection, const optional< String > &collectionName, const exception_ptr &e)> OpertionCallbackPtr
#define qStroika_ATTRIBUTE_NO_UNIQUE_ADDRESS_VCFORCE
[[msvc::no_unique_address]] isn't always broken in MSVC. Annotate with this on things where its not b...
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 uintmax_t GetSpaceConsumed() const =0
virtual Transaction mkTransaction()=0
nonvirtual uintmax_t GetSpaceConsumed() const
nonvirtual Collection::Ptr GetCollection(const String &name) const
nonvirtual Set< String > GetCollections() const
return the names of all collections in the referenced database
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...