database_schema.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. DROP TABLE IF EXISTS 'pilots';
  2. CREATE TABLE IF NOT EXISTS 'pilots' (
  3. 'pilot_id' INTEGER NOT NULL,
  4. 'lastname' TEXT NOT NULL,
  5. 'firstname' TEXT,
  6. 'alias' TEXT,
  7. 'company' TEXT,
  8. 'employeeid' TEXT,
  9. 'phone' TEXT,
  10. 'email' TEXT,
  11. PRIMARY KEY('pilot_id' AUTOINCREMENT)
  12. );
  13. DROP TABLE IF EXISTS 'tails';
  14. CREATE TABLE IF NOT EXISTS 'tails' (
  15. 'tail_id' INTEGER NOT NULL,
  16. 'registration' TEXT NOT NULL,
  17. 'company' TEXT,
  18. 'make' TEXT,
  19. 'model' TEXT,
  20. 'variant' TEXT,
  21. 'multipilot' INTEGER,
  22. 'multiengine' INTEGER,
  23. 'engineType' INTEGER,
  24. 'weightClass' INTEGER,
  25. PRIMARY KEY('tail_id' AUTOINCREMENT)
  26. );
  27. DROP TABLE IF EXISTS 'flights';
  28. CREATE TABLE IF NOT EXISTS 'flights' (
  29. 'flight_id' INTEGER NOT NULL,
  30. 'doft' NUMERIC NOT NULL,
  31. 'dept' TEXT NOT NULL,
  32. 'dest' TEXT NOT NULL,
  33. 'tofb' INTEGER NOT NULL,
  34. 'tonb' INTEGER NOT NULL,
  35. 'pic' INTEGER NOT NULL,
  36. 'acft' INTEGER NOT NULL,
  37. 'tblk' INTEGER NOT NULL,
  38. 'tSPSE' INTEGER,
  39. 'tSPME' INTEGER,
  40. 'tMP' INTEGER,
  41. 'tNIGHT' INTEGER,
  42. 'tIFR' INTEGER,
  43. 'tPIC' INTEGER,
  44. 'tPICUS' INTEGER,
  45. 'tSIC' INTEGER,
  46. 'tDUAL' INTEGER,
  47. 'tFI' INTEGER,
  48. 'tSIM' INTEGER,
  49. 'pilotFlying' INTEGER,
  50. 'toDay' INTEGER,
  51. 'toNight' INTEGER,
  52. 'ldgDay' INTEGER,
  53. 'ldgNight' INTEGER,
  54. 'autoland' INTEGER,
  55. 'secondPilot' INTEGER,
  56. 'thirdPilot' INTEGER,
  57. 'approachType' TEXT,
  58. 'flightNumber' TEXT,
  59. 'remarks' TEXT,
  60. FOREIGN KEY('pic') REFERENCES 'pilots'('pilot_id') ON DELETE RESTRICT,
  61. FOREIGN KEY('acft') REFERENCES 'tails'('tail_id') ON DELETE RESTRICT,
  62. PRIMARY KEY('flight_id' AUTOINCREMENT)
  63. );
  64. DROP TABLE IF EXISTS 'aircraft';
  65. CREATE TABLE IF NOT EXISTS 'aircraft' (
  66. 'aircraft_id' INTEGER NOT NULL,
  67. 'make' TEXT,
  68. 'model' TEXT,
  69. 'variant' TEXT,
  70. 'name' TEXT,
  71. 'iata' TEXT,
  72. 'icao' TEXT,
  73. 'multipilot' INTEGER,
  74. 'multiengine' INTEGER,
  75. 'engineType' INTEGER,
  76. 'weightClass' INTEGER,
  77. PRIMARY KEY('aircraft_id' AUTOINCREMENT)
  78. );
  79. DROP TABLE IF EXISTS 'airports';
  80. CREATE TABLE IF NOT EXISTS 'airports' (
  81. 'airport_id' INTEGER NOT NULL,
  82. 'icao' TEXT NOT NULL,
  83. 'iata' TEXT,
  84. 'name' TEXT,
  85. 'lat' REAL,
  86. 'long' REAL,
  87. 'country' TEXT,
  88. 'alt' INTEGER,
  89. 'utcoffset' INTEGER,
  90. 'tzolson' TEXT,
  91. PRIMARY KEY('airport_id' AUTOINCREMENT)
  92. );
  93. DROP TABLE IF EXISTS 'currencies';
  94. CREATE TABLE IF NOT EXISTS 'currencies' (
  95. 'currency_id' INTEGER NOT NULL,
  96. 'currencyName' TEXT,
  97. 'expiryDate' NUMERIC,
  98. PRIMARY KEY('currency_id' AUTOINCREMENT)
  99. );
  100. DROP TABLE IF EXISTS 'changelog';
  101. CREATE TABLE IF NOT EXISTS 'changelog' (
  102. 'revision' INTEGER NOT NULL,
  103. 'comment' TEXT,
  104. 'date' NUMERIC,
  105. PRIMARY KEY('revision' AUTOINCREMENT)
  106. );
  107. DROP TABLE IF EXISTS 'simulators';
  108. CREATE TABLE IF NOT EXISTS 'simulators' (
  109. 'session_id' INTEGER NOT NULL,
  110. 'date' NUMERIC NOT NULL,
  111. 'totalTime' INTEGER NOT NULL,
  112. 'deviceType' TEXT NOT NULL,
  113. 'aircraftType' TEXT,
  114. 'registration' TEXT,
  115. 'remarks' TEXT,
  116. PRIMARY KEY('session_id' AUTOINCREMENT)
  117. );
  118. DROP VIEW IF EXISTS 'viewDefault';
  119. CREATE VIEW viewDefault AS
  120. SELECT flight_id,
  121. doft as 'Date',
  122. dept AS 'Dept',
  123. printf('%02d',(tofb/60))||':'||printf('%02d',(tofb%60)) AS 'Time',
  124. dest AS 'Dest', printf('%02d',(tonb/60))||':'||printf('%02d',(tonb%60)) AS 'Time ',
  125. printf('%02d',(tblk/60))||':'||printf('%02d',(tblk%60)) AS 'Total',
  126. CASE WHEN pilot_id = 1 THEN alias ELSE lastname||', '||substr(firstname, 1, 1)||'.' END AS 'Name PIC',
  127. CASE WHEN variant IS NOT NULL THEN make||' '||model||'-'||variant ELSE make||' '||model END AS 'Type',
  128. registration AS 'Registration',
  129. FlightNumber AS 'Flight #',
  130. remarks AS 'Remarks'
  131. FROM flights
  132. INNER JOIN pilots on flights.pic = pilots.pilot_id
  133. INNER JOIN tails on flights.acft = tails.tail_id
  134. ORDER BY date DESC;
  135. DROP VIEW IF EXISTS 'viewDefaultSim';
  136. CREATE VIEW viewDefaultSim AS
  137. SELECT flight_id AS 'rowid',
  138. doft as 'Date',
  139. dept AS 'Dept',
  140. printf('%02d',(tofb/60))||':'||printf('%02d',(tofb%60)) AS 'Time',
  141. dest AS 'Dest', printf('%02d',(tonb/60))||':'||printf('%02d',(tonb%60)) AS 'Time ',
  142. printf('%02d',(tblk/60))||':'||printf('%02d',(tblk%60)) AS 'Total',
  143. CASE WHEN pilot_id = 1 THEN alias ELSE lastname||', '||substr(firstname, 1, 1)||'.' END AS 'Name PIC',
  144. CASE WHEN variant IS NOT NULL THEN make||' '||model||'-'||variant ELSE make||' '||model END AS 'Type',
  145. registration AS 'Registration',
  146. null AS 'Sim Type',
  147. null AS 'Time of Session',
  148. remarks AS 'Remarks'
  149. FROM flights
  150. INNER JOIN pilots on flights.pic = pilots.pilot_id
  151. INNER JOIN tails on flights.acft = tails.tail_id
  152. UNION
  153. SELECT (session_id * -1),
  154. date,
  155. null, null, null, null,
  156. 'SIM',
  157. null,
  158. aircraftType,
  159. registration,
  160. deviceType,
  161. printf('%02d',(totalTime/60))||':'||printf('%02d',(totalTime%60)),
  162. remarks
  163. FROM simulators
  164. ORDER BY date DESC;
  165. DROP VIEW IF EXISTS 'viewEasa';
  166. CREATE VIEW viewEasa AS SELECT flight_id,
  167. doft as 'Date',
  168. dept AS 'Dept',
  169. printf('%02d',(tofb/60))||':'||printf('%02d',(tofb%60)) AS 'Time',
  170. dest AS 'Dest',
  171. printf('%02d',(tonb/60))||':'||printf('%02d',(tonb%60)) AS 'Time ',
  172. CASE WHEN variant IS NOT NULL THEN make||' '||model||'-'||variant ELSE make||' '||model END AS 'Type',
  173. registration AS 'Registration',
  174. (SELECT printf('%02d',(tSPSE/60))||':'||printf('%02d',(tSPSE%60)) WHERE tSPSE IS NOT NULL) AS 'SP SE',
  175. (SELECT printf('%02d',(tSPME/60))||':'||printf('%02d',(tSPME%60)) WHERE tSPME IS NOT NULL) AS 'SP ME',
  176. (SELECT printf('%02d',(tMP/60))||':'||printf('%02d',(tMP%60)) WHERE tMP IS NOT NULL) AS 'MP',
  177. printf('%02d',(tblk/60))||':'||printf('%02d',(tblk%60)) AS 'Total',
  178. CASE WHEN pilot_id = 1 THEN alias ELSE lastname||', '||substr(firstname, 1, 1)||'.' END AS 'Name PIC',
  179. ldgDay AS 'L/D',
  180. ldgNight AS 'L/N',
  181. (SELECT printf('%02d',(tNight/60))||':'||printf('%02d',(tNight%60)) WHERE tNight IS NOT NULL) AS 'Night',
  182. (SELECT printf('%02d',(tIFR/60))||':'||printf('%02d',(tIFR%60)) WHERE tIFR IS NOT NULL) AS 'IFR',
  183. (SELECT printf('%02d',(tPIC/60))||':'||printf('%02d',(tPIC%60)) WHERE tPIC IS NOT NULL) AS 'PIC',
  184. (SELECT printf('%02d',(tSIC/60))||':'||printf('%02d',(tSIC%60)) WHERE tSIC IS NOT NULL) AS 'SIC',
  185. (SELECT printf('%02d',(tDual/60))||':'||printf('%02d',(tDual%60)) WHERE tDual IS NOT NULL) AS 'Dual',
  186. (SELECT printf('%02d',(tFI/60))||':'||printf('%02d',(tFI%60)) WHERE tFI IS NOT NULL) AS 'FI',
  187. remarks AS 'Remarks'
  188. FROM flights
  189. INNER JOIN pilots on flights.pic = pilots.pilot_id
  190. INNER JOIN tails on flights.acft = tails.tail_id ORDER BY date DESC;
  191. DROP VIEW IF EXISTS 'viewEasaSim';
  192. CREATE VIEW viewEasaSim AS SELECT flight_id,
  193. doft as 'Date',
  194. dept AS 'Dept',
  195. printf('%02d',(tofb/60))||':'||printf('%02d',(tofb%60)) AS 'Time',
  196. dest AS 'Dest',
  197. printf('%02d',(tonb/60))||':'||printf('%02d',(tonb%60)) AS 'Time ',
  198. CASE WHEN variant IS NOT NULL THEN make||' '||model||'-'||variant ELSE make||' '||model END AS 'Type',
  199. registration AS 'Registration',
  200. (SELECT printf('%02d',(tSPSE/60))||':'||printf('%02d',(tSPSE%60)) WHERE tSPSE IS NOT NULL) AS 'SP SE',
  201. (SELECT printf('%02d',(tSPME/60))||':'||printf('%02d',(tSPME%60)) WHERE tSPME IS NOT NULL) AS 'SP ME',
  202. (SELECT printf('%02d',(tMP/60))||':'||printf('%02d',(tMP%60)) WHERE tMP IS NOT NULL) AS 'MP',
  203. printf('%02d',(tblk/60))||':'||printf('%02d',(tblk%60)) AS 'Total',
  204. CASE WHEN pilot_id = 1 THEN alias ELSE lastname||', '||substr(firstname, 1, 1)||'.' END AS 'Name PIC',
  205. ldgDay AS 'L/D',
  206. ldgNight AS 'L/N',
  207. (SELECT printf('%02d',(tNight/60))||':'||printf('%02d',(tNight%60)) WHERE tNight IS NOT NULL) AS 'Night',
  208. (SELECT printf('%02d',(tIFR/60))||':'||printf('%02d',(tIFR%60)) WHERE tIFR IS NOT NULL) AS 'IFR',
  209. (SELECT printf('%02d',(tPIC/60))||':'||printf('%02d',(tPIC%60)) WHERE tPIC IS NOT NULL) AS 'PIC',
  210. (SELECT printf('%02d',(tSIC/60))||':'||printf('%02d',(tSIC%60)) WHERE tSIC IS NOT NULL) AS 'SIC',
  211. (SELECT printf('%02d',(tDual/60))||':'||printf('%02d',(tDual%60)) WHERE tDual IS NOT NULL) AS 'Dual',
  212. (SELECT printf('%02d',(tFI/60))||':'||printf('%02d',(tFI%60)) WHERE tFI IS NOT NULL) AS 'FI',
  213. null AS 'Sim Type',
  214. null AS 'Time of Session',
  215. remarks AS 'Remarks'
  216. FROM flights
  217. INNER JOIN pilots on flights.pic = pilots.pilot_id
  218. INNER JOIN tails on flights.acft = tails.tail_id
  219. UNION
  220. SELECT (session_id * -1),
  221. date,
  222. null, null, null, null,
  223. aircraftType,
  224. registration,
  225. null, null, null,
  226. 'SIM',
  227. null, null, null, null, null, null, null, null, null,
  228. deviceType, printf('%02d',(totalTime/60))||':'||printf('%02d',(totalTime%60)),
  229. remarks
  230. FROM simulators
  231. ORDER BY date DESC;
  232. DROP VIEW IF EXISTS 'viewSimulators';
  233. CREATE VIEW viewSimulators AS SELECT (session_id * -1),
  234. date as 'Date',
  235. registration AS 'Registration',
  236. aircraftType AS 'Aircraft Type',
  237. deviceType 'Sim Type',
  238. printf('%02d',(totalTime/60))||':'||printf('%02d',(totalTime%60)) AS 'Time of Session',
  239. remarks AS 'Remarks'
  240. FROM simulators
  241. ORDER BY date DESC;
  242. DROP VIEW IF EXISTS 'viewTails';
  243. CREATE VIEW viewTails AS
  244. SELECT tail_id AS 'ID',
  245. registration AS 'Registration',
  246. make||' '||model AS 'Type',
  247. company AS 'Company'
  248. FROM tails WHERE model IS NOT NULL AND variant IS NULL
  249. UNION
  250. SELECT tail_id AS 'ID',
  251. registration AS 'Registration',
  252. make||' '||model||'-'||variant AS 'Type',
  253. company AS 'Company'
  254. FROM tails WHERE variant IS NOT NULL;
  255. DROP VIEW IF EXISTS 'viewPilots';
  256. CREATE VIEW viewPilots AS
  257. SELECT pilot_id AS 'ID',
  258. lastname AS 'Last Name',
  259. firstname AS 'First Name',
  260. company AS 'Company'
  261. FROM pilots;
  262. DROP VIEW IF EXISTS 'viewTotals';
  263. CREATE VIEW viewTotals AS
  264. SELECT printf('%02d',CAST(SUM(tblk) AS INT)/60)||':'||printf('%02d',CAST(SUM(tblk) AS INT)%60) AS 'TOTAL',
  265. printf('%02d',CAST(SUM(tSPSE) AS INT)/60)||':'||printf('%02d',CAST(SUM(tSPSE) AS INT)%60) AS 'SP SE',
  266. printf('%02d',CAST(SUM(tSPME) AS INT)/60)||':'||printf('%02d',CAST(SUM(tSPME) AS INT)%60) AS 'SP ME',
  267. printf('%02d',CAST(SUM(tNIGHT) AS INT)/60)||':'||printf('%02d',CAST(SUM(tNIGHT) AS INT)%60) AS 'NIGHT',
  268. printf('%02d',CAST(SUM(tIFR) AS INT)/60)||':'||printf('%02d',CAST(SUM(tIFR) AS INT)%60) AS 'IFR',
  269. printf('%02d',CAST(SUM(tPIC) AS INT)/60)||':'||printf('%02d',CAST(SUM(tPIC) AS INT)%60) AS 'PIC',
  270. printf('%02d',CAST(SUM(tPICUS) AS INT)/60)||':'||printf('%02d',CAST(SUM(tPICUS) AS INT)%60) AS 'PICUS',
  271. printf('%02d',CAST(SUM(tSIC) AS INT)/60)||':'||printf('%02d',CAST(SUM(tSIC) AS INT)%60) AS 'SIC',
  272. printf('%02d',CAST(SUM(tDual) AS INT)/60)||':'||printf('%02d',CAST(SUM(tDual) AS INT)%60) AS 'DUAL',
  273. printf('%02d',CAST(SUM(tFI) AS INT)/60)||':'||printf('%02d',CAST(SUM(tFI) AS INT)%60) AS 'INSTRUCTOR',
  274. printf('%02d',CAST(SUM(tSIM) AS INT)/60)||':'||printf('%02d',CAST(SUM(tSIM) AS INT)%60) AS 'SIMULATOR',
  275. printf('%02d',CAST(SUM(tMP) AS INT)/60)||':'||printf('%02d',CAST(SUM(tMP) AS INT)%60) AS 'MultPilot',
  276. CAST(SUM(toDay) AS INT) AS 'TO Day',
  277. CAST(SUM(toNight) AS INT) AS 'TO Night',
  278. CAST(SUM(ldgDay) AS INT) AS 'LDG Day',
  279. CAST(SUM(ldgNight) AS INT) AS 'LDG Night'
  280. FROM flights