EHM DAL 0.2.5
Data abstraction layer for Eastside Hockey Manager
Loading...
Searching...
No Matches
abstract_table_item.h
1#pragma once
2
3// Application headers
4namespace ehm_dal::database {
5class DatabaseVersion;
6}
7
8// Qt headers
9class QDataStream;
10#include <QVariant>
11#include <type_traits>
12
13namespace ehm_dal::schema {
14
15template<typename T>
16concept IntegralNumber = std::is_integral<T>::value;
17
18// -- Table item/record --- //
23{
24public:
33
34 // File i/o
41 virtual bool read(QDataStream &in, ehm_dal::database::DatabaseVersion &version);
48 virtual bool write(QDataStream &out, ehm_dal::database::DatabaseVersion &version);
49
50 // Initialisation
55 inline virtual bool init() = 0;
56
57protected:
58 // Get data
59 inline virtual bool deletable() const { return false; }
60 template<IntegralNumber T>
61 QVariant fromHexVector(const std::vector<T> &raw_data, const qint32 role) const;
68 QVariant fromValue(const QVariant &value, const qint32 role) const;
69};
70
71// --- Get vector of numbers as a string --- //
72template<IntegralNumber T>
73QVariant AbstractTableItem::fromHexVector(const std::vector<T> &raw_data, const qint32 role) const
74{
75 if (role != Qt::DisplayRole)
76 return QVariant();
77
78 QStringList buffer;
79 for (const auto &itr : raw_data)
80 buffer << QString("%1").arg(static_cast<quint8>(itr), 2, 16, QLatin1Char('0'));
81
82 return buffer.join(QStringLiteral(" "));
83}
84
85} // namespace ehm_dal::schema
The DatabaseVersion class represents the database version number.
Definition: database_version.h:12
The AbstractTableItem class represents a row in a Table with no primary key (id/uid) field.
Definition: abstract_table_item.h:23
virtual ~AbstractTableItem()
Default destructor.
virtual bool init()=0
Initialises the table item members. This only needs to be called once per item.
QVariant fromValue(const QVariant &value, const qint32 role) const
Returns a value as a QVariant if the role is Qt::DisplayRole or Qt::EditRole. A blank QVariant is ret...
virtual bool read(QDataStream &in, ehm_dal::database::DatabaseVersion &version)
Reads a table row from the QDataStream.
virtual bool write(QDataStream &out, ehm_dal::database::DatabaseVersion &version)
Writes a table row to the QDataStream.
AbstractTableItem()
Default constructor.
Definition: abstract_table_item.h:16