Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
Schema.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
6#include <phosphorconfig_export.h>
7
8#include <QJsonObject>
9#include <QMap>
10#include <QMetaType>
11#include <QString>
12#include <QVariant>
13#include <QVector>
14
15#include <functional>
16#include <memory>
17
18namespace PhosphorConfig {
19
20class IGroupPathResolver;
21
36struct PHOSPHORCONFIG_EXPORT KeyDef
37{
38 QString key;
39 QVariant defaultValue;
40 QMetaType::Type expectedType = QMetaType::UnknownType;
41
50 QString description = {};
51
67 std::function<QVariant(const QVariant& value)> validator = {};
68};
69
74struct PHOSPHORCONFIG_EXPORT MigrationStep
75{
76 int fromVersion = 0;
77 std::function<void(QJsonObject&)> migrate;
78};
79
88struct PHOSPHORCONFIG_EXPORT Schema
89{
93 int version = 1;
94
99 QString versionKey = QStringLiteral("_version");
100
109 QMap<QString, QVector<KeyDef>> groups;
110
114 QVector<MigrationStep> migrations;
115
118 std::shared_ptr<IGroupPathResolver> pathResolver;
119
122 const KeyDef* findKey(const QString& group, const QString& key) const;
123
126 QVariant defaultFor(const QString& group, const QString& key) const;
127};
128
129} // namespace PhosphorConfig
Definition IBackend.h:19
Declaration for a single configuration key.
Definition Schema.h:37
QVariant defaultValue
Definition Schema.h:39
QString key
Definition Schema.h:38
One step in a schema version migration chain.
Definition Schema.h:75
std::function< void(QJsonObject &)> migrate
Definition Schema.h:77
Declarative description of a configuration store.
Definition Schema.h:89
std::shared_ptr< IGroupPathResolver > pathResolver
Optional per-screen / custom name resolver.
Definition Schema.h:118
QMap< QString, QVector< KeyDef > > groups
Keys grouped by their group name.
Definition Schema.h:109
QVector< MigrationStep > migrations
Ordered migration chain.
Definition Schema.h:114
const KeyDef * findKey(const QString &group, const QString &key) const
Look up a KeyDef by (group, key).
QVariant defaultFor(const QString &group, const QString &key) const
Convenience: default value for a declared key, or QVariant() if the key is undeclared.