swift
databasereaderconfig.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_CORE_DB_DATABASE_READERCONFIG_H
7 #define SWIFT_CORE_DB_DATABASE_READERCONFIG_H
8 
9 #include <QDateTime>
10 #include <QJsonArray>
11 #include <QObject>
12 #include <QString>
13 #include <QtGlobal>
14 
15 #include "core/swiftcoreexport.h"
16 #include "misc/db/dbflags.h"
18 #include "misc/pq/time.h"
19 #include "misc/sequence.h"
20 #include "misc/valueobject.h"
21 
23 
24 namespace swift::core::db
25 {
28  {
29  public:
31  CDatabaseReaderConfig() = default;
32 
35  swift::misc::network::CEntityFlags::Entity entities,
36  swift::misc::db::CDbFlags::DataRetrievalMode retrievalFlags,
38 
40  QString convertToQString(bool i18n = false) const;
41 
43  swift::misc::network::CEntityFlags::Entity getEntities() const;
44 
46  bool supportsEntities(swift::misc::network::CEntityFlags::Entity entities) const;
47 
49  swift::misc::db::CDbFlags::DataRetrievalMode getRetrievalMode() const;
50 
52  void markAsDbDown();
53 
56 
59 
62  bool needsSharedInfoFile() const;
63 
66 
68  bool possiblyReadsFromCache() const;
69 
71  bool isValid() const;
72 
73  private:
75  int m_retrievalMode = swift::misc::db::CDbFlags::DbReading;
77 
80  SWIFT_METAMEMBER(entities),
81  SWIFT_METAMEMBER(retrievalMode),
82  SWIFT_METAMEMBER(cacheLifetime));
83  };
84 } // namespace swift::core::db
85 
86 SWIFT_DECLARE_SEQUENCE_MIXINS(swift::core::db, CDatabaseReaderConfig, CDatabaseReaderConfigList)
87 
88 namespace swift::core::db
89 {
92  public swift::misc::CSequence<CDatabaseReaderConfig>,
93  public swift::misc::mixin::MetaType<CDatabaseReaderConfigList>
94  {
95  public:
98 
101 
104 
108  findFirstOrDefaultForEntity(const swift::misc::network::CEntityFlags::Entity entities) const;
109 
111  void markAsDbDown();
112 
115 
118 
121 
123  bool needsSharedInfoObjects(swift::misc::network::CEntityFlags::Entity entities) const;
124 
127  bool needsSharedInfoObjectsIfCachesEmpty(swift::misc::network::CEntityFlags::Entity entities,
128  swift::misc::network::CEntityFlags::Entity cachedEntities) const;
129 
131  bool needsSharedInfoFile(swift::misc::network::CEntityFlags::Entity entities) const;
132 
134  swift::misc::network::CEntityFlags::Entity getEntitesCachedOrReadFromDB() const;
135 
138 
141 
144 
147  };
148 } // namespace swift::core::db
149 
150 Q_DECLARE_METATYPE(swift::core::db::CDatabaseReaderConfig)
153 
154 #endif // SWIFT_CORE_DB_DATABASE_READERCONFIG_H
Details how to read a certain entity.
void setCacheLifetime(const swift::misc::physical_quantities::CTime &time)
Timeout.
QString convertToQString(bool i18n=false) const
Cast as QString.
CDatabaseReaderConfig(swift::misc::network::CEntityFlags::Entity entities, swift::misc::db::CDbFlags::DataRetrievalMode retrievalFlags, const swift::misc::physical_quantities::CTime &cacheLifetime=swift::misc::physical_quantities::CTime())
Constructor for one or multiple entities.
bool needsSharedInfoFile() const
Needs the DB info file loaded.
bool isValid() const
Fully initialized.
swift::misc::network::CEntityFlags::Entity getEntities() const
Supported entities.
swift::misc::db::CDbFlags::DataRetrievalMode getRetrievalMode() const
Supported modes.
bool possiblyReadsFromCache() const
Will read from cache.
bool possiblyReadsFromSwiftDb() const
Will read from swift DB.
bool supportsEntities(swift::misc::network::CEntityFlags::Entity entities) const
Supports given entites?
bool possiblyWritesToSwiftDb() const
Will write to swift DB.
CDatabaseReaderConfig()=default
Default constructor.
Value object encapsulating a list of reader configs.
CDatabaseReaderConfigList(const CSequence< CDatabaseReaderConfig > &other)
Construct from a base class object.
bool needsSharedInfoObjects(swift::misc::network::CEntityFlags::Entity entities) const
Needs any shared info object.
CDatabaseReaderConfig findFirstOrDefaultForEntity(const swift::misc::network::CEntityFlags::Entity entities) const
Find first one matching given.
static CDatabaseReaderConfigList allDirectDbAccess()
Init all with direct DB access.
bool needsSharedInfoFile(swift::misc::network::CEntityFlags::Entity entities) const
Needs any shared header loaded before continued.
void setCacheLifetimes(const swift::misc::physical_quantities::CTime &time)
Update lifetimes.
static CDatabaseReaderConfigList forMappingTool()
Init for mapping tool.
static CDatabaseReaderConfigList forLauncher()
Init for launcher.
swift::misc::network::CEntityFlags::Entity getEntitesCachedOrReadFromDB() const
Entities which will use cache or DB, so no canceled or ignored ones.
bool needsSharedInfoObjectsIfCachesEmpty(swift::misc::network::CEntityFlags::Entity entities, swift::misc::network::CEntityFlags::Entity cachedEntities) const
Needs any shared info object, but only if the cache is empty.
bool possiblyWritesToSwiftDb() const
Will write to swift DB.
CDatabaseReaderConfigList()=default
Default constructor.
bool possiblyReadsFromSwiftDb() const
Will read from swift DB.
static CDatabaseReaderConfigList forPilotClient()
Init for pilot client.
Generic ordered container with value semantics.
Definition: collection.h:107
Generic sequential container with value semantics.
Definition: sequence.h:86
CSequence()=default
Default constructor.
Mix of the most commonly used mixin classes.
Definition: valueobject.h:114
@ DbReading
directly from DB
Definition: dbflags.h:27
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
#define SWIFT_METAMEMBER(MEMBER,...)
Macro to define an element within a metaclass.
Definition: metaclass.h:73
#define SWIFT_METACLASS(CLASS,...)
Macro to define a nested metaclass that describes the attributes of its enclosing class.
Definition: metaclass.h:53
#define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED)
When a derived class and a base class both inherit from mixin::MetaType, the derived class uses this ...
Classes interacting with the swift database (aka "datastore").
#define SWIFT_DECLARE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template declaration of mixins for a CSequence subclass to be placed near the top of the hea...
Definition: sequence.h:62
#define SWIFT_CORE_EXPORT
Export a class or function from the library.
#define SWIFT_DECLARE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template declaration of mixins for a CValueObject subclass to be placed near the top of the ...
Definition: valueobject.h:65