2
0

declarations.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #ifndef DECLARATIONS_H
  2. #define DECLARATIONS_H
  3. #include <QtCore>
  4. /*!
  5. * \brief An alias for QString
  6. *
  7. * Very long description *with* **markdown?**
  8. * - - -
  9. * # Header
  10. */
  11. using ColName = QString;
  12. using ColData = QVariant;
  13. using TableName = QString;
  14. using RowId = int;
  15. using TableNames = QStringList;
  16. // [G]: May lead to some confusion. TableData suggest data for the entire table.
  17. // but in reallity it is data per column *of single row* (unless i misunderstand)
  18. // [F]: That's correct. We could maybe call it EntryData or RowData?
  19. using RowData = QMap<ColName, ColData>;
  20. using ColumnData = QPair<ColName, ColData>;
  21. using ColumnNames = QStringList;
  22. using TableColumns = QMap<TableName, ColumnNames>;
  23. // [G]: Needs some work. Inheriting from QPair may be helpful but
  24. // may also be overkill. Lets determine the specific uses of DataPosition
  25. // and provide our own interface i would say.
  26. // [F]: Good idea! Implementing something similar to first and second methods
  27. // of QPair would be useful to carry over, or some other way of quickly and
  28. // unambiguously accessing the elements.
  29. /*struct DataPosition : QPair<TableName, RowId> {
  30. TableName tableName;
  31. RowId rowId;
  32. DataPosition()
  33. : tableName(first), rowId(second)
  34. {}
  35. DataPosition(TableName table_name, RowId row_id)
  36. : QPair<TableName, RowId>::QPair(table_name, row_id),
  37. tableName(first), rowId(second)
  38. {}
  39. DataPosition(const DataPosition& other) = default;
  40. DataPosition& operator=(const DataPosition& other) = default;
  41. };*/
  42. //[F]: How about something like this?
  43. struct DataPosition {
  44. TableName tableName;
  45. RowId rowId;
  46. DataPosition()
  47. : tableName(TableName())
  48. {};
  49. DataPosition(TableName table_name, RowId row_id)
  50. : tableName(table_name), rowId(row_id)
  51. {};
  52. DataPosition(const DataPosition& other) = default;
  53. DataPosition& operator=(const DataPosition& other) = default;
  54. };
  55. // [F]:
  56. // In many places throughout the application, we have to programatically access or write data
  57. // to or from the database using column names as identifiers, doing something like this:
  58. //
  59. // newData.insert("dept", ui->deptLocLineEdit->text());
  60. // newData.value("multipilot") // do stuff
  61. //
  62. // Declaring the literals here avoids memory allocation at runtime for construction of temporary qstrings
  63. // like ("dept"). See https://doc.qt.io/qt-5/qstring.html#QStringLiteral
  64. //
  65. // Table names
  66. static const auto DB_TABLE_FLIGHTS = QStringLiteral("flights");
  67. static const auto DB_TABLE_PILOTS = QStringLiteral("pilots");
  68. static const auto DB_TABLE_TAILS = QStringLiteral("tails");
  69. static const auto DB_TABLE_AIRCRAFT = QStringLiteral("aircraft");
  70. static const auto DB_TABLE_AIRPORTS = QStringLiteral("airports");
  71. // Default Positions
  72. static auto const DEFAULT_FLIGHT_POSITION = DataPosition(DB_TABLE_FLIGHTS, 0);
  73. static auto const DEFAULT_PILOT_POSITION = DataPosition(DB_TABLE_PILOTS, 0);
  74. static auto const DEFAULT_TAIL_POSITION = DataPosition(DB_TABLE_TAILS, 0);
  75. static auto const DEFAULT_AIRCRAFT_POSITION = DataPosition(DB_TABLE_AIRCRAFT, 0);
  76. // Flights table columns
  77. static const auto DB_FLIGHTS_DOFT = QStringLiteral("doft");
  78. static const auto DB_FLIGHTS_DEPT = QStringLiteral("dept");
  79. static const auto DB_FLIGHTS_DEST = QStringLiteral("dest");
  80. static const auto DB_FLIGHTS_TOFB = QStringLiteral("tofb");
  81. static const auto DB_FLIGHTS_TONB = QStringLiteral("tonb");
  82. static const auto DB_FLIGHTS_PIC = QStringLiteral("pic");
  83. static const auto DB_FLIGHTS_ACFT = QStringLiteral("acft");
  84. static const auto DB_FLIGHTS_TBLK = QStringLiteral("tblk");
  85. static const auto DB_FLIGHTS_TSPSE = QStringLiteral("tSPSE");
  86. static const auto DB_FLIGHTS_TSPME = QStringLiteral("tSPME");
  87. static const auto DB_FLIGHTS_TMP = QStringLiteral("tMP");
  88. static const auto DB_FLIGHTS_TNIGHT = QStringLiteral("tNIGHT");
  89. static const auto DB_FLIGHTS_TIFR = QStringLiteral("tIFR");
  90. static const auto DB_FLIGHTS_TPIC = QStringLiteral("tPIC");
  91. static const auto DB_FLIGHTS_TPICUS = QStringLiteral("tPICUS");
  92. static const auto DB_FLIGHTS_TSIC = QStringLiteral("tSIC");
  93. static const auto DB_FLIGHTS_TDUAL = QStringLiteral("tDUAL");
  94. static const auto DB_FLIGHTS_TFI = QStringLiteral("tFI");
  95. static const auto DB_FLIGHTS_TSIM = QStringLiteral("tSIM");
  96. static const auto DB_FLIGHTS_PILOTFLYING = QStringLiteral("pilotFlying");
  97. static const auto DB_FLIGHTS_TODAY = QStringLiteral("toDay");
  98. static const auto DB_FLIGHTS_TONIGHT = QStringLiteral("toNight");
  99. static const auto DB_FLIGHTS_LDGDAY = QStringLiteral("ldgDay");
  100. static const auto DB_FLIGHTS_LDGNIGHT = QStringLiteral("ldgNight");
  101. static const auto DB_FLIGHTS_AUTOLAND = QStringLiteral("autoland");
  102. static const auto DB_FLIGHTS_SECONDPILOT = QStringLiteral("secondPilot");
  103. static const auto DB_FLIGHTS_THIRDPILOT = QStringLiteral("thirdPilot");
  104. static const auto DB_FLIGHTS_APPROACHTYPE = QStringLiteral("approachType");
  105. static const auto DB_FLIGHTS_FLIGHTNUMBER = QStringLiteral("flightNumber");
  106. static const auto DB_FLIGHTS_REMARKS = QStringLiteral("remarks");
  107. // tails table
  108. static const auto DB_TAILS_REGISTRATION = QStringLiteral("registration");
  109. static const auto DB_TAILS_COMPANY = QStringLiteral("company");
  110. static const auto DB_TAILS_MAKE = QStringLiteral("make");
  111. static const auto DB_TAILS_MODEL = QStringLiteral("model");
  112. static const auto DB_TAILS_VARIANT = QStringLiteral("variant");
  113. static const auto DB_TAILS_MULTIPILOT = QStringLiteral("multipilot");
  114. static const auto DB_TAILS_MULTIENGINE = QStringLiteral("multiengine");
  115. static const auto DB_TAILS_ENGINETYPE = QStringLiteral("engineType");
  116. static const auto DB_TAILS_WEIGHTCLASS = QStringLiteral("weightClass");
  117. // pilots table
  118. static const auto DB_PILOTS_LASTNAME = QStringLiteral("lastname");
  119. static const auto DB_PILOTS_FIRSTNAME = QStringLiteral("firstname");
  120. static const auto DB_PILOTS_ALIAS = QStringLiteral("alias");
  121. static const auto DB_PILOTS_COMPANY = QStringLiteral("company");
  122. static const auto DB_PILOTS_EMPLOYEEID = QStringLiteral("employeeid");
  123. static const auto DB_PILOTS_PHONE = QStringLiteral("phone");
  124. static const auto DB_PILOTS_EMAIL = QStringLiteral("email");
  125. // all tables
  126. static const auto DB_ROWID = QStringLiteral("ROWID");
  127. static const auto DB_NULL = QStringLiteral("");
  128. static const auto DB_NULL_hhmm = QStringLiteral("00:00");
  129. /*static const auto DB_ = QStringLiteral("");
  130. static const auto DB_ = QStringLiteral("");
  131. static const auto DB_ = QStringLiteral("");
  132. static const auto DB_ = QStringLiteral("");
  133. static const auto DB_ = QStringLiteral("");*/
  134. #endif // DECLARATIONS_H