2/%  QString guard = _database->namespaces().join(
"_").toUpper() + 
"_" + _klass->name().toUpper() + 
"_H_";
 
    8#include <kDB/Forward.h> 
    9#include <knowCore/Global.h> 
   10#include <knowCore/ValueList.h> 
   13#include "TypesDefinitions.h" 
   18  for(
const definitions::Forward* fw : _database->forwards())
 
   21    for(
const QString& ns : fw->namespaces())
 
   25    class /%= fw->name() %/;
 
   27    for(
const QString& ns : fw->namespaces())
 
   33  if(not _database->namespaces().isEmpty())
 
   36namespace /%= _database->namespaces().join(
"::") %/
 
   40  for(
const definitions::Class* klass : _database->classes())
 
   45  class /%= klass->name() %/Value;
 
   46  class /%= klass->name() %/Record;
 
   47  class /%= klass->name() %/SelectQuery;
 
   51  for(
const definitions::Class* sklass : _klass->classOfSubDefinitions())
 
   54  class /%= sklass->name() %/Value;
 
   55  class /%= sklass->name() %/Record;
 
   56  class /%= sklass->name() %/SelectQuery;
 
   60  class /%= _klass->name() %/Value;
 
   61  class /%= _klass->name() %/Record;
 
   64  class /%= _klass->name() %/SelectQuery
 
   66    friend class /%= _klass->name() %/Record;
 
   70    /%= _klass->name() %/SelectQuery(/%= databaseOrContainer(_klass) %/);
 
   71    /%= _klass->name() %/SelectQuery(/%= databaseOrContainer(_klass) %/, 
const QString& _fieldName, 
const knowCore::Value& _value, Sql::Operand _op);
 
   72    /%= _klass->name() %/SelectQuery(/%= databaseOrContainer(_klass) %/, 
const QString& _expression, 
const QVariantList& _values);
 
   73    /%= _klass->name() %/SelectQuery(Private* _d);
 
   75    /%= _klass->name() %/SelectQuery();
 
   76    /%= _klass->name() %/SelectQuery(
const /%= _klass->name() %/SelectQuery& _rhs);
 
   77    /%= _klass->name() %/SelectQuery& operator=(
const /%= _klass->name() %/SelectQuery& _rhs);
 
   78    ~/%= _klass->name() %/SelectQuery();
 
   80    std::size_t count(
int _count = 0) 
const;
 
   81    QList</%= _klass->name() %/Record> exec(
int _count = 0) 
const;
 
   82    QList</%= _klass->name() %/Record> exec(
int _skip, 
int _count) 
const;
 
   83    /%= _klass->name() %/Record first() 
const;
 
   85    /%= _klass->name() %/SelectQuery operator||(
const /%= _klass->name() %/SelectQuery& _rhs) 
const;
 
   86    /%= _klass->name() %/SelectQuery operator&&(
const /%= _klass->name() %/SelectQuery& _rhs) 
const;
 
   89  for(
const definitions::Field* field : _klass->fields())
 
   91    /%= _klass->name() %/SelectQuery orderBy/%= capitalizeFirstLetter(field->name()) %/(Sql::Sort _order) 
const;/%
 
   94    /%= _klass->name() %/SelectQuery randomOrder() 
const;
 
   97  enum class /%= _klass->name() %/Fields {/%
 
   99  for(
const definitions::Field* field : _klass->fields())
 
  101    /%= field->name() %/,/%
 
  106  class /%= baseValueClassName(_klass) %/
 
  108    friend class /%= _klass->name() %/Record;
 
  110    for(
const definitions::Class* sklass : _klass->classOfSubDefinitions())
 
  113      friend class /%= sklass->name() %/;
 
  114      friend class /%= sklass->name() %/SelectQuery;
 
  123    /%= baseValueClassName(_klass) %/(Private* _d);
 
  125    if(hasDefaultBaseValueConstructor(_klass))
 
  127    /%= baseValueClassName(_klass) %/();/%
 
  129    /%= baseValueClassName(_klass) %/(/%= baseValueConstructionArguments(_klass, 
true, 
true) %/);
 
  130    /%= baseValueClassName(_klass) %/(
const /%= baseValueClassName(_klass) %/& _rhs);
 
  131    /%= baseValueClassName(_klass) %/& operator=(
const /%= baseValueClassName(_klass) %/& _rhs);
 
  132    ~/%= baseValueClassName(_klass) %/();
 
  134    cres_qresult<knowCore::ValueHash> toValueHash() 
const;
 
  135    static cres_qresult</%= baseValueClassName(_klass) %/> fromValueHash(
const knowCore::ValueHash& _valueHash);
 
  137    bool operator==(
const /%= baseValueClassName(_klass) %/& _rhs) 
const;
 
  138    bool operator!=(
const /%= baseValueClassName(_klass) %/& _rhs) 
const;
 
  142  for(
const definitions::Field* field : _klass->fields())
 
  144    if(isBaseValueField(_klass, field))
 
  147    /%= cppReturnType(field) %/ /%= field->name() %/() 
const;/%
 
  148      if(not field->options().testFlag(definitions::Field::Constant) and not field->options().testFlag(definitions::Field::Key))
 
  150    void set/%= capitalizeFirstLetter(field->name()) %/(/%= cppArgType(field) %/ _value);/%
 
  157    if(_klass->doesImplement(definitions::INIT))
 
  162    if(_klass->doesImplement(definitions::CLEANUP))
 
  167    if(_klass->doesImplement(definitions::EXTENDED))
 
  170#include "/%= baseValueClassName(_klass) %/_.h"/%
 
  176  if(hasExtendedValueClass(_klass))
 
  180  class /%= _klass->name() %/Value : 
public /%= _klass->name() %/BaseValue
 
  182    friend class /%= _klass->name() %/Record;
 
  184    for(
const definitions::Class* sklass : _klass->classOfSubDefinitions())
 
  187      friend class /%= sklass->name() %/;
 
  188      friend class /%= sklass->name() %/SelectQuery;
 
  195    /%= _klass->name() %/Value(Private* _d);
 
  199    /%= _klass->name() %/Value();
 
  201    /%= _klass->name() %/Value(
const kDB::Repository::QueryConnectionInfo& _connection, 
const /%= _klass->name() %/BaseValue& _base_value, /%= onlyExtendedValueConstructionArguments(_klass, 
true, 
false) %/);
 
  202    /%= _klass->name() %/Value(
const /%= _klass->name() %/Value& _rhs);
 
  203    /%= _klass->name() %/Value& operator=(
const /%= _klass->name() %/Value& _rhs);
 
  204    ~/%= _klass->name() %/Value();
 
  206    bool operator==(
const /%= _klass->name() %/Value& _rhs) 
const;
 
  207    bool operator!=(
const /%= _klass->name() %/Value& _rhs) 
const;
 
  211  for(
const definitions::Field* field : _klass->fields())
 
  213    if(isExtendedValueField(_klass, field))
 
  216    /%= cppReturnType(field) %/ /%= field->name() %/() 
const;/%
 
  217      if(not field->options().testFlag(definitions::Field::Constant) and not field->options().testFlag(definitions::Field::Key))
 
  219    void set/%= capitalizeFirstLetter(field->name()) %/(/%= cppArgType(field) %/ _value);/%
 
  226    if(_klass->doesImplement(definitions::INIT))
 
  231    if(_klass->doesImplement(definitions::CLEANUP))
 
  236    if(_klass->doesImplement(definitions::EXTENDED))
 
  239#include "/%= _klass->name() %/Value_.h
"/% 
  243    kDB::Repository::QueryConnectionInfo connection() const; 
  245  //END extended value class 
  250  class /%= _klass->name() %/Record : public /%= _klass->name() %/Value 
  253    for(const definitions::Class* sklass : _klass->classOfSubDefinitions()) 
  256      friend class /%= sklass->name() %/; 
  257      friend class /%= sklass->name() %/SelectQuery; 
  262    using SelectQuery = /%= _klass->name() %/SelectQuery; 
  263    using SqlSort = /%= _database->namespaces().join("::
") %/::Sql::Sort; 
  264    using SqlOperand = /%= _database->namespaces().join("::
") %/::Sql::Operand; 
  267    if(not _klass->classOfContainerDefinition()) 
  274      static cres_qresult<void> createTable(const kDB::Repository::QueryConnectionInfo& _connection);
 
  278    static cres_qresult</%= _klass->name() %/Record> create(/%= databaseOrContainer(_klass) %/, /%= createArguments(_klass, true) %/);
 
  279    static cres_qresult<QList</%= _klass->name() %/Record>> create(/%= databaseOrContainer(_klass) %/, const QList</%= _klass->name() %/Value>& _values);
 
  282      AccessShare, RowShare, RowExclusive, ShareUpdateExclusive, Share, ShareRowExclusive, Exclusive, AccessExclusive
 
  284    static cres_qresult<void> lock(const kDB::Repository::Transaction& _transaction, LockMode _mode = LockMode::AccessExclusive);
 
  286    /%= _klass->name() %/Record();
 
  287    /%= _klass->name() %/Record(const /%= _klass->name() %/Record& _rhs);
 
  288    /%= _klass->name() %/Record& operator=(const /%= _klass->name() %/Record& _rhs);
 
  289    /%= _klass->name() %/Record(/%= databaseOrContainer(_klass) %/ /%= constructorKeyArguments(_klass) %/);
 
  290    ~/%= _klass->name() %/Record();
 
  292    bool operator==(const /%= _klass->name() %/Record& _rhs) const;
 
  296    bool sameValuesAs(const /%= _klass->name() %/Record& _rhs) const;
 
  297    bool operator!=(const /%= _klass->name() %/Record& _rhs) const;
 
  299    cres_qresult<void> discard();
 
  300    cres_qresult<void> refresh();
 
  304    cres_qresult<void> record();
 
  308    cres_qresult<void> record(const kDB::Repository::QueryConnectionInfo& _connection);
 
  312    cres_qresult<void> erase();
 
  316    cres_qresult<void> erase(const kDB::Repository::QueryConnectionInfo& _connection);
 
  320    bool isPersistent() const;
 
  323  // Add function to access children
 
  324  if(not _klass->children().empty())
 
  326    for(const definitions::Class* child : _klass->children())
 
  328      if(hasSingleChild(child, _klass))
 
  330    /%= child->name() %/ /%= childfunctionname(child->name()) %/() const;/%
 
  333    /%= child->name() %/SelectQuery /%= childrenfunctionname(child->name()) %/() const;/%
 
  338  // Add field function: getter for auto, and query for everything
 
  339  for(const definitions::Field* field : _klass->fields())
 
  341    if(isRecordField(_klass, field))
 
  343    /%= cppReturnType(field) %/ /%= field->name() %/() const;/%
 
  346    static SelectQuery by/%= capitalizeFirstLetter(field->name()) %/(/%= databaseOrContainer(_klass) %/, /%= cppArgType(field) %/, Sql::Operand _op = Sql::Operand::EQ);/%
 
  353    static SelectQuery by(/%= databaseOrContainer(_klass) %/, const QString& _expression, const QVariantList& _values); // QVariantList has to be used, because knowCore::Value cannot hold a /%= _klass->name() %/Fields
 
  355    template<typename _T1_, typename ... _T_>
 
  356    static SelectQuery by(/%= databaseOrContainer(_klass) %/, const QString& _expression, _T1_ _v, _T_... _values)
 
  358      return by(/%= databaseOrContainerParameterName(_klass) %/, _expression, QVariantList(), _v, _values...);
 
  361    template<typename _T1_, typename ... _T_>
 
  362    static SelectQuery by(/%= databaseOrContainer(_klass) %/, const QString& _expression, const QVariantList& _arguments, _T1_ _v,  _T_... _values)
 
  364      QVariantList args = _arguments; args.append(QVariant::fromValue(_v));
 
  365      return by(/%= databaseOrContainerParameterName(_klass) %/, _expression, args, _values...);
 
  370    static SelectQuery all(/%= databaseOrContainer(_klass) %/);
 
  373/%  for(const definitions::Mapping* mapping : _klass->mappings())
 
  375    const definitions::Class* klass = mapping->other(_klass);%/
 
  376    QList</%= klass->name() %/> /%= functiongetallname(klass->name()) %/() const;
 
  377    cres_qresult<void> add/%= klass->name() %/(const /%= klass->name() %/& _other);
 
  378    cres_qresult<void> remove/%= klass->name() %/(const /%= klass->name() %/& _other);
 
  382    if(_klass->doesImplement(definitions::INIT))
 
  387    if(_klass->doesImplement(definitions::CLEANUP))
 
  392    if(_klass->doesImplement(definitions::EXTENDED))
 
  395#include "/%= _klass->name() %/Record_.h
"/% 
  399    kDB::Repository::QueryConnectionInfo connection() const; 
  404  //END Generate the record class 
  405  if(hasExtendedValueClass(_klass)) 
  407  //BEGIN Extended value constructor with default 
  408  inline /%= _klass->name() %/Value::/%= _klass->name() %/Value(const kDB::Repository::QueryConnectionInfo& _connection, /%= extendedValueConstructionArguments(_klass, true, true) %/) : /%= _klass->name() %/Value() 
  410    init(_connection, /%= extendedValueConstructionArguments(_klass, false, false) %/); 
  413  //END Extended value constructor with default 
  415if(not _database->namespaces().isEmpty()) 
  424  if(hasExtendedValueClass(_klass)) 
  426Q_DECLARE_METATYPE(/%= _database->namespaces().join("::
") %/::/%= _klass->name() %/BaseValue)/% 
  429Q_DECLARE_METATYPE(/%= _database->namespaces().join("::
") %/::/%= _klass->name() %/Value) 
  430Q_DECLARE_METATYPE(/%= _database->namespaces().join("::
") %/::/%= _klass->name() %/Record) 
  431Q_DECLARE_METATYPE(/%= _database->namespaces().join("::
") %/::/%= _klass->name() %/Fields) 
  433#include <knowCore/Formatter.h> 
  435clog_format_declare_formatter(/%= _database->namespaces().join("::
") %/::/%= _klass->name() %/Record) 
  437  return format_to(ctx.out(), "'/%= _database->namespaces().join("::") %/::/%= _klass->name() %/Record'"); 
Definition QueryConnectionInfo.h:8
 
Definition ValueHash.h:13