swift
distributionlist.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_DB_DISTRIBUTIONLIST_H
7 #define SWIFT_MISC_DB_DISTRIBUTIONLIST_H
8 
9 #include <QSet>
10 #include <QString>
11 
12 #include "misc/collection.h"
14 #include "misc/db/distribution.h"
15 #include "misc/platform.h"
16 #include "misc/sequence.h"
17 #include "misc/swiftmiscexport.h"
18 
19 SWIFT_DECLARE_SEQUENCE_MIXINS(swift::misc::db, CDistribution, CDistributionList)
20 
21 namespace swift::misc::db
22 {
28  public CSequence<CDistribution>,
29  public IDatastoreObjectList<CDistribution, CDistributionList, int>,
30  public mixin::MetaType<CDistributionList>
31  {
32  public:
35 
38 
41 
43  QStringList getChannels() const;
44 
46  void sortByStability(Qt::SortOrder order = Qt::AscendingOrder);
47 
49  bool containsEqualOrMoreStable(CDistribution &distribution) const;
50 
52  bool containsUnrestricted() const;
53 
55  bool containsChannel(const QString &channel) const;
56 
58  CDistribution findFirstByChannelOrDefault(const QString &channel) const;
59 
61  CDistributionList findByRestriction(bool restricted) const;
62 
64  CDistribution getMostStableOrDefault() const;
65 
67  CDistribution getLeastStableOrDefault() const;
68 
70  static CDistributionList fromDatabaseJson(const QJsonArray &array);
71 
73  static CDistributionList fromDatabaseJson(const QString &json);
74  };
75 } // namespace swift::misc::db
76 
77 Q_DECLARE_METATYPE(swift::misc::db::CDistributionList)
79 
80 #endif // SWIFT_MISC_DB_DISTRIBUTIONLIST_H
Generic ordered container with value semantics.
Definition: collection.h:107
Generic sequential container with value semantics.
Definition: sequence.h:86
CSequence()=default
Default constructor.
Distributions for channel.
Definition: distribution.h:27
Multiple distributions for different channels:
List of objects read from database. Such objects should implement.
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
#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 ...
#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_MISC_EXPORT
Export a class or function from the library.