cutelyst  5.0.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
validatorresult.cpp
1 /*
2  * SPDX-FileCopyrightText: (C) 2017-2023 Matthias Fehring <mf@huessenbergnetz.de>
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #include "validatorresult_p.h"
7 
8 #include <QJsonArray>
9 #include <QJsonValue>
10 
11 using namespace Cutelyst;
12 
14  : d(new ValidatorResultPrivate)
15 {
16 }
17 
18 ValidatorResult::ValidatorResult(const ValidatorResult &other) noexcept = default;
19 
20 ValidatorResult::ValidatorResult(ValidatorResult &&other) noexcept = default;
21 
22 ValidatorResult &ValidatorResult::operator=(const ValidatorResult &other) noexcept = default;
23 
25 
26 ValidatorResult::~ValidatorResult() noexcept = default;
27 
28 bool ValidatorResult::isValid() const noexcept
29 {
30  return d->errors.empty();
31 }
32 
33 void ValidatorResult::addError(const QString &field, const QString &message)
34 {
35  QStringList fieldErrors = d->errors.value(field);
36  fieldErrors.append(message);
37  d->errors.insert(field, fieldErrors);
38 }
39 
41 {
42  QStringList strings;
43 
44  for (const auto &error : d->errors) {
45  strings.append(error);
46  }
47 
48  return strings;
49 }
50 
52 {
53  return d->errors;
54 }
55 
56 QStringList ValidatorResult::errors(const QString &field) const noexcept
57 {
58  return d->errors.value(field);
59 }
60 
61 bool ValidatorResult::hasErrors(const QString &field) const noexcept
62 {
63  return d->errors.contains(field);
64 }
65 
67 {
68  QJsonObject json;
69 
70  for (const auto &[key, error] : d->errors.asKeyValueRange()) {
71  json.insert(key, QJsonArray::fromStringList(error));
72  }
73 
74  return json;
75 }
76 
78 {
79  return QStringList(d->errors.keys());
80 }
81 
82 QVariantHash ValidatorResult::values() const noexcept
83 {
84  return d->values;
85 }
86 
87 QVariant ValidatorResult::value(const QString &field) const noexcept
88 {
89  return d->values.value(field);
90 }
91 
92 void ValidatorResult::addValue(const QString &field, const QVariant &value)
93 {
94  d->values.insert(field, value);
95 }
96 
97 QVariantHash ValidatorResult::extras() const noexcept
98 {
99  return d->extras;
100 }
101 
102 QVariant ValidatorResult::extra(const QString &field) const noexcept
103 {
104  return d->extras.value(field);
105 }
106 
107 void ValidatorResult::addExtra(const QString &field, const QVariant &extra)
108 {
109  d->extras.insert(field, extra);
110 }
QVariant value(const QString &field) const noexcept
QStringList failedFields() const
Returns a list of fields with errors.
QJsonObject errorsJsonObject() const
QVariantHash values() const noexcept
ValidatorResult & operator=(const ValidatorResult &other) noexcept
QHash< QString, QStringList > errors() const noexcept
QStringList errorStrings() const
iterator insert(QLatin1StringView key, const QJsonValue &value)
QVariant extra(const QString &field) const noexcept
The Cutelyst namespace holds all public Cutelyst API.
void addError(const QString &field, const QString &message)
void addValue(const QString &field, const QVariant &value)
QVariantHash extras() const noexcept
void append(QList< T > &&value)
Provides information about performed validations.
void addExtra(const QString &field, const QVariant &extra)
bool hasErrors(const QString &field) const noexcept
QJsonArray fromStringList(const QStringList &list)