+
+template <typename T>
+QString OrmRecord<T>::columnsForSelect(const QString& prefix)
+{
+ QStringList prefixedColumns;
+ for (int i=0; i<T::sColumns.count(); i++)
+ {
+ prefixedColumns.append(prefix.isEmpty() ?
+ T::sColumns.field(i).name() :
+ QString("%1.%2").arg(prefix, T::sColumns.field(i).name()));
+ }
+ return prefixedColumns.join(",");
+}
+
+template <typename T>
+QString OrmRecord<T>::selectQuery()
+{
+ return QString("SELECT %1 FROM %2 ").arg(columnsForSelect(), T::sTableName);
+}
+
+template <typename T>
+QString OrmRecord<T>::updateQuery()
+{
+ return QString("UPDATE %1 ").arg(T::sTableName);
+}
+
+template <typename T>
+QSqlRecord OrmRecord<T>::toRecord(const QList<QSqlField> & columnList)
+{
+ QSqlRecord record;
+ for(int i=0; i< columnList.count(); i++)
+ {
+ record.append(columnList[i]);
+ }
+ return record;
+}
+
+template <typename T>
+QVariant OrmRecord<T>::convertToC(QVariant value, QVariant::Type colType)
+{
+ if (colType == QVariant::DateTime && value.canConvert<uint>())
+ {
+ QDateTime date;
+ date.setTimeSpec(Qt::UTC);
+ date.setTime_t(value.toUInt());
+ return date;
+ }
+
+ return value;
+}
+
+template <typename T>
+QVariant OrmRecord<T>::convertToDb(QVariant value, QVariant::Type colType)
+{
+ if (colType == QVariant::DateTime && value.canConvert<QDateTime>())
+ {
+ QDateTime dateTime = value.toDateTime();
+ dateTime.setTimeSpec(Qt::UTC); // this is to avoid that dateTime.toTime_t changes the time depending on the local time zone
+ return dateTime.toTime_t();
+ }
+
+ return value;
+}
+
+#endif // ORMRECORD_H
+