1#pragma once
2
3#include <Interpreters/IExternalLoaderConfigRepository.h>
4#include <Databases/IDatabase.h>
5#include <Interpreters/Context.h>
6
7namespace DB
8{
9
10/// Repository from database, which stores dictionary definitions on disk.
11/// Tracks update time and existance of .sql files through IDatabase.
12class ExternalLoaderDatabaseConfigRepository : public IExternalLoaderConfigRepository
13{
14public:
15 ExternalLoaderDatabaseConfigRepository(IDatabase & database_, const Context & context_);
16
17 const std::string & getName() const override { return name; }
18
19 std::set<std::string> getAllLoadablesDefinitionNames() override;
20
21 bool exists(const std::string & loadable_definition_name) override;
22
23 Poco::Timestamp getUpdateTime(const std::string & loadable_definition_name) override;
24
25 LoadablesConfigurationPtr load(const std::string & loadable_definition_name) override;
26
27private:
28 const String name;
29 IDatabase & database;
30 Context context;
31};
32
33}
34