kDB: Knowledge DataBase
Loading...
Searching...
No Matches
ConnectionOptions.h
1#include <cres_qt>
2
3#include <QCommandLineOption>
4#include <QCommandLineParser>
5#include <QDir>
6
7#include <kDB/Repository/Store.h>
8#include <kDB/Repository/TemporaryStore.h>
9
10namespace
11{
12 struct ConnectionOptions
13 {
14 ConnectionOptions(bool has_store_options)
15 : hasStoreOptions(has_store_options),
16 temporaryStoreOption("temporary-store",
17 "If set, this program creates a temporary store and use that as a "
18 "end-point. Useful for tests and benchmarks."),
19 sectionOption("section", "The section for use as path for the store.", "store"),
20 nameOption("name", "The name for the store.", "store"),
21 storePathOption("path", "The path for the store.", "store"),
22 storePortOption("port", "The port for the store, default to 1242.", "port")
23 {
24 }
25
26 void setup(QCommandLineParser* _parser)
27 {
28 if(hasStoreOptions)
29 {
30 _parser->addOption(temporaryStoreOption);
31 }
32 _parser->addOption(sectionOption);
33 _parser->addOption(nameOption);
34 _parser->addOption(storePathOption);
35 _parser->addOption(storePortOption);
36 }
37
38 cres_qresult<std::tuple<kDB::Repository::TemporaryStore*, kDB::Repository::Store*>>
39 startStore(QCommandLineParser* _parser)
40 {
41 bool temporaryStore = _parser->isSet(temporaryStoreOption);
42 int kDBPort
43 = _parser->isSet(storePortOption) ? _parser->value(storePortOption).toInt() : 1242;
44
45 if(temporaryStore)
46 {
48 cres_try(cres_ignore, ts->start(), on_failure(delete ts;));
49 return cres_success(std::make_tuple(ts, ts->store()));
50 }
51 else
52 {
54 if(_parser->isSet(storePathOption))
55 {
56 store = new kDB::Repository::Store(QDir(_parser->value(storePathOption)), kDBPort);
57 }
58 else
59 {
60 store = new kDB::Repository::Store(
61 kDB::Repository::SectionName(_parser->value(sectionOption)),
62 kDB::Repository::StoreName(_parser->value(nameOption)), kDBPort);
63 }
64 cres_try(cres_ignore, store->start(), on_failure(delete store;));
65 return cres_success(std::make_tuple(nullptr, store));
66 }
67 }
68
69 kDB::Repository::Connection createConnection(QCommandLineParser* _parser)
70 {
71 QString kDBHostName = _parser->value(storePathOption);
72 int kDBPort
73 = _parser->isSet(storePortOption) ? _parser->value(storePortOption).toInt() : 1242;
75
76 if(_parser->isSet(storePathOption))
77 {
78 connection = kDB::Repository::Connection::create(
79 kDB::Repository::HostName(_parser->value(storePathOption)), kDBPort);
80 }
81 else
82 {
83 connection = kDB::Repository::Connection::create(
84 kDB::Repository::SectionName(_parser->value(sectionOption)),
85 kDB::Repository::StoreName(_parser->value(nameOption)), kDBPort);
86 }
87 return connection;
88 }
89
90 bool hasStoreOptions;
91 QCommandLineOption temporaryStoreOption, sectionOption, nameOption, storePathOption,
92 storePortOption;
93 };
94} // namespace
Definition Connection.h:26
Definition Store.h:18
cres_qresult< void > start()
Definition Store.cpp:135
Definition TemporaryStore.h:12