#pragma once #include #include "fs/local.h" #include "persist/meta.h" #include "storage/storages.h" #include "storage/null/null.h" #include "storage/plain/plain.h" // -+ // +--------------------+ | // | ITablesLayout | | // | +----------------+ | | Data layout interface // +-------------------+ | | IColumnsLayout | | | // | ICreateSqlPersist | | +----------------+ | | // +-------------------+ +--^-----------------+ -+ // ^ | -+ // | IBlockPersist | // | | | // | IStorage | Data operating strategy // | | | // +------------ Storages | // | -+ // - - - - - - - - - - - - - - -|- - - - - - - - - - - - // | // +----------------v-----------+ // | IFS(file system interface) | // +----------------------------+ // namespace moonshine { using std::make_shared; StoragesPtr CreateStoragesSimple(const string &path) { FSPtr fs = make_shared(); CreateSqlPersistPtr meta_persist = make_shared(fs); StoragesPtr storages = make_shared(fs, meta_persist, path); storages->Regester(make_shared()); TablesLayoutPtr layout = make_shared>(fs, path); BlockPersistPtr block_persist = make_shared(fs); storages->Regester(make_shared(layout, block_persist)); storages->LoadTables(); return storages; } }