Joedb 10.3.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
File_Connection_Builder.h
Go to the documentation of this file.
1#ifndef joedb_File_Connection_Builder_declared
2#define joedb_File_Connection_Builder_declared
3
7
8namespace joedb
9{
10 /// @ingroup ui
12 {
13 private:
14 File_Parser file_parser;
15 std::optional<Readonly_Journal> readonly_journal;
16 std::optional<Writable_Journal> writable_journal;
17 std::unique_ptr<Connection> connection;
18
19 public:
20 const char *get_name() const override {return "file";}
21
22 std::string get_parameters_description() const override
23 {
24 return "<file>";
25 }
26
28 (
29 Logger &logger,
30 Arguments &arguments,
31 Abstract_File *file
32 ) override
33 {
34 if (file_parser.parse(logger, arguments))
35 {
36 if (file_parser.get_file()->is_readonly())
37 {
38 readonly_journal.emplace(*file_parser.get_file());
39 connection.reset(new Pullonly_Journal_Connection(*readonly_journal));
40 }
41 else
42 {
43 writable_journal.emplace(*file_parser.get_file());
44 connection.reset(new Journal_Connection(*writable_journal));
45 }
46 }
47
48 return connection.get();
49 }
50 };
51}
52
53#endif
bool is_readonly() const noexcept
Class for conveniently parsing command-line arguments.
Definition Arguments.h:19
std::string get_parameters_description() const override
Connection * build(Logger &logger, Arguments &arguments, Abstract_File *file) override
const char * get_name() const override
Create an instance of a Abstract_File by parsing command-line arguments.
Definition File_Parser.h:22
Abstract_File * parse(joedb::Logger &log, Arguments &arguments)
Abstract_File * get_file() const
Definition File_Parser.h:51