pull in new policy updates
[profile/ivi/smartdevicelink.git] / src / components / policy / src / policy / src / sql_pt_queries.cc
1 /*
2  Copyright (c) 2013, " Ford Motor Company
3  All rights reserved.
4
5  Redistribution and use in source and binary forms, " with or without
6  modification, " are permitted provided that the following conditions are met:
7
8  Redistributions of source code must retain the above copyright notice, " this
9  list of conditions and the following disclaimer.
10
11  Redistributions in binary form must reproduce the above copyright notice, "
12  this list of conditions and the following
13  disclaimer in the documentation and/or other materials provided with the
14  distribution.
15
16  Neither the name of the Ford Motor Company nor the names of its contributors
17  may be used to endorse or promote products derived from this software
18  without specific prior written permission.
19
20  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  AND ANY EXPRESS OR IMPLIED WARRANTIES, " INCLUDING, " BUT NOT LIMITED TO, " THE
22  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
24  LIABLE FOR ANY DIRECT, " INDIRECT, " INCIDENTAL, " SPECIAL, " EXEMPLARY, " OR
25  CONSEQUENTIAL DAMAGES (INCLUDING, " BUT NOT LIMITED TO, " PROCUREMENT OF
26  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, " DATA, " OR PROFITS; OR BUSINESS
27  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, " WHETHER IN
28  CONTRACT, " STRICT LIABILITY, " OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, " EVEN IF ADVISED OF THE
30  POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #include "policy/sql_pt_queries.h"
34
35 namespace policy {
36 namespace sql_pt {
37
38 const std::string kCreateSchema =
39   "BEGIN; "
40   "CREATE TABLE IF NOT EXISTS `device`( "
41   "  `id` VARCHAR(100) PRIMARY KEY NOT NULL, "
42   "  `hardware` VARCHAR(45), "
43   "  `firmware_rev` VARCHAR(45), "
44   "  `os` VARCHAR(45), "
45   "  `os_version` VARCHAR(45), "
46   "  `carrier` VARCHAR(45), "
47   "  `max_number_rfcom_ports` INTEGER,"
48   "  `unpaired` BOOL "
49   "); "
50   "CREATE TABLE IF NOT EXISTS `usage_and_error_count`( "
51   "  `count_of_iap_buffer_full` INTEGER, "
52   "  `count_sync_out_of_memory` INTEGER, "
53   "  `count_of_sync_reboots` INTEGER "
54   "); "
55   "CREATE TABLE IF NOT EXISTS `module_meta`( "
56   "  `ccpu_version` VARCHAR(45), "
57   "  `language` VARCHAR(45), "
58   "  `wers_country_code` VARCHAR(45), "
59   "  `pt_exchanged_at_odometer_x` INTEGER NOT NULL DEFAULT 0, "
60   "  `pt_exchanged_x_days_after_epoch` INTEGER NOT NULL DEFAULT 0, "
61   "  `ignition_cycles_since_last_exchange` INTEGER NOT NULL DEFAULT 0, "
62   "  `vin` VARCHAR(45),"
63   "  `flag_update_required` BOOL NOT NULL "
64   "); "
65   "CREATE TABLE IF NOT EXISTS `module_config`( "
66   "  `preloaded_pt` BOOL NOT NULL, "
67   "  `exchange_after_x_ignition_cycles` INTEGER NOT NULL, "
68   "  `exchange_after_x_kilometers` INTEGER NOT NULL, "
69   "  `exchange_after_x_days` INTEGER NOT NULL, "
70   "  `timeout_after_x_seconds` INTEGER NOT NULL, "
71   "  `vehicle_make` VARCHAR(45), "
72   "  `vehicle_model` VARCHAR(45), "
73   "  `vehicle_year` VARCHAR(4) "
74   "); "
75   "CREATE TABLE IF NOT EXISTS `functional_group`( "
76   "  `id` INTEGER PRIMARY KEY NOT NULL, "
77   "  `user_consent_prompt` TEXT UNIQUE ON CONFLICT REPLACE, "
78   "  `name` VARCHAR(100) NOT NULL "
79   "); "
80   "CREATE TABLE IF NOT EXISTS `priority`( "
81   "  `value` VARCHAR(45) PRIMARY KEY NOT NULL "
82   "); "
83   "CREATE TABLE IF NOT EXISTS `hmi_level`( "
84   "  `value` VARCHAR(45) PRIMARY KEY NOT NULL "
85   "); "
86   "CREATE TABLE IF NOT EXISTS `notifications_by_priority`( "
87   "  `priority_value` VARCHAR(45) PRIMARY KEY NOT NULL, "
88   "  `value` INTEGER NOT NULL, "
89   "  CONSTRAINT `fk_notifications_by_priority_priority1` "
90   "    FOREIGN KEY(`priority_value`) "
91   "    REFERENCES `priority`(`value`) "
92   "); "
93   "CREATE INDEX IF NOT EXISTS "
94   "`notifications_by_priority.fk_notifications_by_priority_priority1_idx` "
95   "  ON `notifications_by_priority`(`priority_value`); "
96   "CREATE TABLE IF NOT EXISTS `language`( "
97   "  `code` VARCHAR(25) PRIMARY KEY NOT NULL "
98   "); "
99   "CREATE TABLE IF NOT EXISTS `message_type`( "
100   "  `name` VARCHAR(45) PRIMARY KEY NOT NULL "
101   "); "
102   "CREATE TABLE IF NOT EXISTS `version`( "
103   "  `number` VARCHAR(45) NOT NULL "
104   "); "
105   "CREATE TABLE IF NOT EXISTS `rpc`( "
106   "  `id` INTEGER PRIMARY KEY NOT NULL, "
107   "  `name` VARCHAR(45) NOT NULL, "
108   "  `parameter` VARCHAR(45), "
109   "  `hmi_level_value` VARCHAR(45) NOT NULL, "
110   "  `functional_group_id` INTEGER NOT NULL, "
111   "  CONSTRAINT `fk_rpc_hmi_level1` "
112   "    FOREIGN KEY(`hmi_level_value`) "
113   "    REFERENCES `hmi_level`(`value`), "
114   "  CONSTRAINT `fk_rpc_functional_group1` "
115   "    FOREIGN KEY(`functional_group_id`) "
116   "    REFERENCES `functional_group`(`id`) "
117   "); "
118   "CREATE INDEX IF NOT EXISTS `rpc.fk_rpc_hmi_level1_idx` "
119   "  ON `rpc`(`hmi_level_value`); "
120   "CREATE INDEX IF NOT EXISTS `rpc.fk_rpc_functional_group1_idx` "
121   "  ON `rpc`(`functional_group_id`); "
122   "CREATE INDEX `rpc.select_rpc_name_hmi_level` "
123   "  ON `rpc`(`name`,`hmi_level_value`);"
124   "CREATE TABLE IF NOT EXISTS `application`( "
125   "  `id` VARCHAR(45) PRIMARY KEY NOT NULL, "
126   "  `keep_context` BOOLEAN, "
127   "  `steal_focus` BOOLEAN, "
128   "  `default_hmi` VARCHAR(45), "
129   "  `priority_value` VARCHAR(45), "
130   "  `is_revoked` BOOLEAN, "
131   "  `is_default` BOOLEAN, "
132   "  `is_predata` BOOLEAN, "
133   "  `memory_kb` INTEGER NOT NULL, "
134   "  `heart_beat_timeout_ms` INTEGER NOT NULL, "
135   "  `certificate` VARCHAR(45), "
136   "  CONSTRAINT `fk_application_hmi_level1` "
137   "    FOREIGN KEY(`default_hmi`) "
138   "    REFERENCES `hmi_level`(`value`), "
139   "  CONSTRAINT `fk_application_priorities1` "
140   "    FOREIGN KEY(`priority_value`) "
141   "    REFERENCES `priority`(`value`) "
142   "); "
143   "CREATE INDEX IF NOT EXISTS `application.fk_application_hmi_level1_idx` "
144   "  ON `application`(`default_hmi`); "
145   "CREATE INDEX IF NOT EXISTS `application.fk_application_priorities1_idx` "
146   "  ON `application`(`priority_value`); "
147   "CREATE TABLE IF NOT EXISTS `app_group`( "
148   "  `application_id` VARCHAR(45) NOT NULL, "
149   "  `functional_group_id` INTEGER NOT NULL, "
150   "  PRIMARY KEY(`application_id`,`functional_group_id`), "
151   "  CONSTRAINT `fk_application_has_functional_group_application1` "
152   "    FOREIGN KEY(`application_id`) "
153   "    REFERENCES `application`(`id`), "
154   "  CONSTRAINT `fk_application_has_functional_group_functional_group1` "
155   "    FOREIGN KEY(`functional_group_id`) "
156   "    REFERENCES `functional_group`(`id`) "
157   "); "
158   "CREATE INDEX IF NOT EXISTS `app_group.fk_application_has_functional_group_functional_group1_idx` "
159   "  ON `app_group`(`functional_group_id`); "
160   "CREATE INDEX IF NOT EXISTS `app_group.fk_application_has_functional_group_application1_idx` "
161   "  ON `app_group`(`application_id`); "
162   "CREATE TABLE IF NOT EXISTS `preconsented_group`( "
163   "  `application_id` VARCHAR(45) NOT NULL, "
164   "  `functional_group_id` INTEGER NOT NULL, "
165   "  PRIMARY KEY(`application_id`,`functional_group_id`), "
166   "  CONSTRAINT `fk_application_has_functional_group_application2` "
167   "    FOREIGN KEY(`application_id`) "
168   "    REFERENCES `application`(`id`), "
169   "  CONSTRAINT `fk_application_has_functional_group_functional_group2` "
170   "    FOREIGN KEY(`functional_group_id`) "
171   "    REFERENCES `functional_group`(`id`) "
172   "); "
173   "CREATE INDEX IF NOT EXISTS "
174   "`preconsented_group.fk_application_has_functional_group_functional_group2_idx` "
175   "  ON `preconsented_group`(`functional_group_id`); "
176   "CREATE INDEX IF NOT EXISTS "
177   "`preconsented_group.fk_application_has_functional_group_application2_idx` "
178   "  ON `preconsented_group`(`application_id`); "
179   "CREATE TABLE IF NOT EXISTS `seconds_between_retry`( "
180   "  `index` INTEGER PRIMARY KEY NOT NULL, "
181   "  `value` INTEGER NOT NULL "
182   "); "
183   "CREATE TABLE IF NOT EXISTS `device_consent_group`( "
184   "  `device_id` VARCHAR(100) NOT NULL, "
185   "  `functional_group_id` INTEGER NOT NULL, "
186   "  `is_consented` BOOL NOT NULL, "
187   "  `input` VARCHAR(45), "
188   "  `time_stamp` DATETIME DEFAULT CURRENT_TIMESTAMP, "
189   "  PRIMARY KEY(`device_id`,`functional_group_id`), "
190   "  CONSTRAINT `fk_device_has_functional_group_device1` "
191   "    FOREIGN KEY(`device_id`) "
192   "    REFERENCES `device`(`id`), "
193   "  CONSTRAINT `fk_device_has_functional_group_functional_group1` "
194   "    FOREIGN KEY(`functional_group_id`) "
195   "    REFERENCES `functional_group`(`id`) "
196   "); "
197   "CREATE INDEX IF NOT EXISTS "
198   "`device_consent_group.fk_device_has_functional_group_functional_group1_idx` "
199   "  ON `device_consent_group`(`functional_group_id`); "
200   "CREATE INDEX IF NOT EXISTS "
201   "`device_consent_group.fk_device_has_functional_group_device1_idx` "
202   "  ON `device_consent_group`(`device_id`); "
203   "CREATE TABLE IF NOT EXISTS `app_level`( "
204   "  `application_id` VARCHAR(45) PRIMARY KEY NOT NULL, "
205   "  `minutes_in_hmi_full` INTEGER DEFAULT 0, "
206   "  `minutes_in_hmi_limited` INTEGER DEFAULT 0, "
207   "  `minutes_in_hmi_background` INTEGER DEFAULT 0, "
208   "  `minutes_in_hmi_none` INTEGER DEFAULT 0, "
209   "  `count_of_rfcom_limit_reached` INTEGER DEFAULT 0, "
210   "  `count_of_user_selections` INTEGER DEFAULT 0, "
211   "  `count_of_rejections_sync_out_of_memory` INTEGER DEFAULT 0, "
212   "  `count_of_rejections_nickname_mismatch` INTEGER DEFAULT 0, "
213   "  `count_of_rejections_duplicate_name` INTEGER DEFAULT 0, "
214   "  `count_of_rejected_rpcs_calls` INTEGER DEFAULT 0, "
215   "  `count_of_rpcs_sent_in_hmi_none` INTEGER DEFAULT 0, "
216   "  `count_of_removals_for_bad_behavior` INTEGER DEFAULT 0, "
217   "  `count_of_run_attempts_while_revoked` INTEGER DEFAULT 0, "
218   "  `app_registration_language_gui` VARCHAR(25), "
219   "  `app_registration_language_vui` VARCHAR(25), "
220   "  CONSTRAINT `fk_app_levels_application1` "
221   "    FOREIGN KEY(`application_id`) "
222   "    REFERENCES `application`(`id`), "
223   "  CONSTRAINT `fk_app_level_language1` "
224   "    FOREIGN KEY(`app_registration_language_gui`) "
225   "    REFERENCES `language`(`code`), "
226   "  CONSTRAINT `fk_app_level_language2` "
227   "    FOREIGN KEY(`app_registration_language_vui`) "
228   "    REFERENCES `language`(`code`) "
229   "); "
230   "CREATE INDEX IF NOT EXISTS `app_level.fk_app_levels_application1_idx` "
231   "  ON `app_level`(`application_id`); "
232   "CREATE INDEX IF NOT EXISTS `app_level.fk_app_level_language1_idx` "
233   "  ON `app_level`(`app_registration_language_gui`); "
234   "CREATE INDEX IF NOT EXISTS `app_level.fk_app_level_language2_idx` "
235   "  ON `app_level`(`app_registration_language_vui`); "
236   "CREATE TABLE IF NOT EXISTS `nickname`( "
237   "  `name` VARCHAR(100) NOT NULL, "
238   "  `application_id` VARCHAR(45) NOT NULL, "
239   "  PRIMARY KEY(`name`,`application_id`), "
240   "  CONSTRAINT `fk_nickname_application1` "
241   "    FOREIGN KEY(`application_id`) "
242   "    REFERENCES `application`(`id`) "
243   "); "
244   "CREATE INDEX IF NOT EXISTS `nickname.fk_nickname_application1_idx` "
245   "  ON `nickname`(`application_id`); "
246   "CREATE TABLE IF NOT EXISTS `app_type`( "
247   "  `name` VARCHAR(50) NOT NULL, "
248   "  `application_id` VARCHAR(45) NOT NULL, "
249   "  PRIMARY KEY(`name`,`application_id`), "
250   "  CONSTRAINT `fk_app_type_application1` "
251   "    FOREIGN KEY(`application_id`) "
252   "    REFERENCES `application`(`id`) "
253   "); "
254   "CREATE INDEX IF NOT EXISTS `app_type.fk_app_type_application1_idx` "
255   "  ON `app_type`(`application_id`); "
256   "CREATE TABLE IF NOT EXISTS `consent_group`( "
257   "  `device_id` VARCHAR(100) NOT NULL, "
258   "  `application_id` VARCHAR(45) NOT NULL, "
259   "  `functional_group_id` INTEGER NOT NULL, "
260   "  `is_consented` BOOL NOT NULL, "
261   "  `input` VARCHAR(45), "
262   "  `time_stamp` DATETIME DEFAULT CURRENT_TIMESTAMP, "
263   "  PRIMARY KEY(`application_id`,`functional_group_id`,`device_id`), "
264   "  CONSTRAINT `fk_consent_group_device1` "
265   "    FOREIGN KEY(`device_id`) "
266   "    REFERENCES `device`(`id`), "
267   "  CONSTRAINT `fk_consent_group_application1` "
268   "    FOREIGN KEY(`application_id`) "
269   "    REFERENCES `application`(`id`), "
270   "  CONSTRAINT `fk_consent_group_functional_group1` "
271   "    FOREIGN KEY(`functional_group_id`) "
272   "    REFERENCES `functional_group`(`id`) "
273   "); "
274   "CREATE INDEX IF NOT EXISTS "
275   "`consent_group.fk_consent_group_device1_idx` "
276   "  ON `device_consent_group`(`device_id`); "
277   "CREATE INDEX IF NOT EXISTS `consent_group.fk_consent_group_functional_group1_idx` "
278   "  ON `consent_group`(`functional_group_id`); "
279   "CREATE TABLE IF NOT EXISTS `endpoint`( "
280   "  `service` INTEGER NOT NULL, "
281   "  `url` VARCHAR(100) NOT NULL, "
282   "  `application_id` VARCHAR(45) NOT NULL, "
283   "  CONSTRAINT `fk_endpoint_application1` "
284   "    FOREIGN KEY(`application_id`) "
285   "    REFERENCES `application`(`id`) "
286   "); "
287   "CREATE INDEX IF NOT EXISTS `endpoint.fk_endpoint_application1_idx` "
288   "  ON `endpoint`(`application_id`); "
289   "CREATE TABLE IF NOT EXISTS `message`( "
290   "  `id` INTEGER PRIMARY KEY NOT NULL, "
291   "  `tts` TEXT, "
292   "  `label` TEXT, "
293   "  `line1` TEXT, "
294   "  `line2` TEXT, "
295   "  `textBody` TEXT, "
296   "  `language_code` VARCHAR(25) NOT NULL, "
297   "  `message_type_name` VARCHAR(45) NOT NULL, "
298   "  CONSTRAINT `fk_messages_languages1` "
299   "    FOREIGN KEY(`language_code`) "
300   "    REFERENCES `language`(`code`), "
301   "  CONSTRAINT `fk_message_consumer_friendly_messages1` "
302   "    FOREIGN KEY(`message_type_name`) "
303   "    REFERENCES `message_type`(`name`) "
304   "); "
305   "CREATE INDEX IF NOT EXISTS `message.fk_messages_languages1_idx` "
306   "  ON `message`(`language_code`);"
307   "CREATE INDEX IF NOT EXISTS `message.fk_message_consumer_friendly_messages1_idx` "
308   "  ON `message`(`message_type_name`);"
309   "COMMIT;";
310
311 const std::string kInsertInitData =
312   "INSERT OR IGNORE INTO `usage_and_error_count` ( "
313   "  `count_of_iap_buffer_full`, `count_sync_out_of_memory`, "
314   "  `count_of_sync_reboots`) VALUES (0, 0, 0); "
315   "INSERT OR IGNORE INTO `module_meta` (`pt_exchanged_at_odometer_x`, "
316   "  `pt_exchanged_x_days_after_epoch`, `ignition_cycles_since_last_exchange`,"
317   "  `flag_update_required`) "
318   "  VALUES (0, 0, 0, 0); "
319   "INSERT OR IGNORE INTO `module_config` (`preloaded_pt`, "
320   "  `exchange_after_x_ignition_cycles`, `exchange_after_x_kilometers`, "
321   "  `exchange_after_x_days`, `timeout_after_x_seconds`) "
322   "  VALUES(1, 0, 0, 0, 0); "
323   "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('EMERGENCY'); "
324   "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('NAVIGATION'); "
325   "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('VOICECOMMUNICATION'); "
326   "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('COMMUNICATION'); "
327   "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('NORMAL'); "
328   "INSERT OR IGNORE INTO `priority`(`value`) VALUES ('NONE'); "
329   "INSERT OR IGNORE INTO `hmi_level`(`value`) VALUES ('FULL'); "
330   "INSERT OR IGNORE INTO `hmi_level`(`value`) VALUES ('LIMITED'); "
331   "INSERT OR IGNORE INTO `hmi_level`(`value`) VALUES ('BACKGROUND'); "
332   "INSERT OR IGNORE INTO `hmi_level`(`value`) VALUES ('NONE'); "
333   "INSERT OR IGNORE INTO `version` (`number`) VALUES('0'); "
334   "";
335
336 const std::string kDropSchema =
337   "BEGIN; "
338   "DROP INDEX IF EXISTS `message.fk_messages_languages1_idx`; "
339   "DROP INDEX IF EXISTS `message.fk_message_consumer_friendly_messages1_idx`; "
340   "DROP TABLE IF EXISTS `message`; "
341   "DROP INDEX IF EXISTS `endpoint.fk_endpoint_application1_idx`; "
342   "DROP TABLE IF EXISTS `endpoint`; "
343   "DROP INDEX IF EXISTS `consent_group.fk_consent_group_device1_idx`; "
344   "DROP INDEX IF EXISTS `consent_group.fk_consent_group_functional_group1_idx`; "
345   "DROP TABLE IF EXISTS `consent_group`; "
346   "DROP INDEX IF EXISTS `app_type.fk_app_type_application1_idx`; "
347   "DROP TABLE IF EXISTS `app_type`; "
348   "DROP INDEX IF EXISTS `nickname.fk_nickname_application1_idx`; "
349   "DROP TABLE IF EXISTS `nickname`; "
350   "DROP INDEX IF EXISTS `app_level.fk_app_level_language2_idx`; "
351   "DROP INDEX IF EXISTS `app_level.fk_app_level_language1_idx`; "
352   "DROP INDEX IF EXISTS `app_level.fk_app_levels_application1_idx`; "
353   "DROP TABLE IF EXISTS `app_level`; "
354   "DROP INDEX IF EXISTS `device_consent_group.fk_device_has_functional_group_device1_idx`; "
355   "DROP INDEX IF EXISTS `device_consent_group.fk_device_has_functional_group_functional_group1_idx`; "
356   "DROP TABLE IF EXISTS `device_consent_group`; "
357   "DROP TABLE IF EXISTS `seconds_between_retry`; "
358   "DROP INDEX IF EXISTS `preconsented_group.fk_application_has_functional_group_application2_idx`; "
359   "DROP INDEX IF EXISTS `preconsented_group.fk_application_has_functional_group_functional_group2_idx`; "
360   "DROP TABLE IF EXISTS `preconsented_group`; "
361   "DROP INDEX IF EXISTS `app_group.fk_application_has_functional_group_application1_idx`; "
362   "DROP INDEX IF EXISTS `app_group.fk_application_has_functional_group_functional_group1_idx`; "
363   "DROP TABLE IF EXISTS `app_group`; "
364   "DROP INDEX IF EXISTS `application.fk_application_priorities1_idx`; "
365   "DROP INDEX IF EXISTS `application.fk_application_hmi_level1_idx`; "
366   "DROP TABLE IF EXISTS `application`; "
367   "DROP INDEX IF EXISTS `rpc.select_rpc_name_hmi_level`; "
368   "DROP INDEX IF EXISTS `rpc.fk_rpc_functional_group1_idx`; "
369   "DROP INDEX IF EXISTS `rpc.fk_rpc_hmi_level1_idx`; "
370   "DROP TABLE IF EXISTS `rpc`; "
371   "DROP TABLE IF EXISTS `version`; "
372   "DROP TABLE IF EXISTS `message_type`; "
373   "DROP TABLE IF EXISTS `language`; "
374   "DROP INDEX IF EXISTS `notifications_by_priority.fk_notifications_by_priority_priority1_idx`; "
375   "DROP TABLE IF EXISTS `notifications_by_priority`; "
376   "DROP TABLE IF EXISTS `hmi_level`; "
377   "DROP TABLE IF EXISTS `priority`; "
378   "DROP TABLE IF EXISTS `functional_group`; "
379   "DROP TABLE IF EXISTS `module_config`; "
380   "DROP TABLE IF EXISTS `module_meta`; "
381   "DROP TABLE IF EXISTS `usage_and_error_count`; "
382   "DROP TABLE IF EXISTS `device`; "
383   "COMMIT; "
384   "VACUUM;";
385
386 const std::string kDeleteData =
387   "BEGIN; "
388   "DELETE FROM `message`; "
389   "DELETE FROM `endpoint`; "
390   "DELETE FROM `consent_group`; "
391   "DELETE FROM `app_type`; "
392   "DELETE FROM `nickname`; "
393   "DELETE FROM `app_level`; "
394   "DELETE FROM `device_consent_group`; "
395   "DELETE FROM `seconds_between_retry`; "
396   "DELETE FROM `preconsented_group`; "
397   "DELETE FROM `app_group`; "
398   "DELETE FROM `application`; "
399   "DELETE FROM `rpc`; "
400   "DELETE FROM `version`; "
401   "DELETE FROM `message_type`; "
402   "DELETE FROM `language`; "
403   "DELETE FROM `notifications_by_priority`; "
404   "DELETE FROM `hmi_level`; "
405   "DELETE FROM `priority`; "
406   "DELETE FROM `functional_group`; "
407   "DELETE FROM `module_config`; "
408   "DELETE FROM `module_meta`; "
409   "DELETE FROM `usage_and_error_count`; "
410   "DELETE FROM `device`; "
411   "COMMIT; "
412   "VACUUM;";
413
414 const std::string kCheckDBIntegrity = "PRAGMA integrity_check";
415
416 const std::string kCheckPgNumber = "PRAGMA page_count";
417
418 const std::string kSelectRpc =
419   "SELECT DISTINCT `rpc`.`parameter` FROM `rpc` "
420   "  JOIN `app_group` AS `g` ON (`g`.`functional_group_id` = `rpc`.`functional_group_id` "
421   "    AND (`g`.`application_id` = ?)) "
422   "WHERE `rpc`.`hmi_level_value` = ? AND `rpc`.`name` = ?";
423
424 const std::string kSelectPreloaded =
425   "SELECT `preloaded_pt` FROM `module_config` "
426   "WHERE `preloaded_pt` = 1 LIMIT 1";
427
428 const std::string kSelectEndpoint =
429   "SELECT `url`, `application_id` FROM `endpoint` WHERE `service` = ? ";
430
431 const std::string kInsertFunctionalGroup =
432   "INSERT INTO `functional_group` (`name`, `user_consent_prompt`) "
433   "  VALUES (?, ?)";
434
435 const std::string kInsertRpc =
436   "INSERT INTO `rpc` (`name`, `hmi_level_value`, `functional_group_id`) "
437   "  VALUES (?, ?, ?)";
438
439 const std::string kInsertRpcWithParameter =
440   "INSERT INTO `rpc` (`name`, `hmi_level_value`, `parameter`, `functional_group_id`) "
441   "  VALUES (?, ?, ?, ?)";
442
443 const std::string kInsertApplication =
444   "INSERT OR IGNORE INTO `application` (`id`, `is_revoked`, `memory_kb`,"
445   " `heart_beat_timeout_ms`, `certificate`) VALUES (?,?,?,?,?)";
446
447 const std::string kInsertAppGroup =
448   "INSERT INTO `app_group` (`application_id`, `functional_group_id`)"
449   "  SELECT ?, `id` FROM `functional_group` WHERE `name` = ? LIMIT 1";
450
451 const std::string kInsertNickname =
452   "INSERT OR IGNORE INTO `nickname` (`application_id`, `name`) VALUES (?, ?)";
453
454 const std::string kInsertAppType =
455   "INSERT OR IGNORE INTO `app_type` (`application_id`, `name`) VALUES (?, ?)";
456
457 const std::string kUpdateVersion = "UPDATE `version` SET `number`= ?";
458
459 const std::string kInsertMessageType =
460   "INSERT OR IGNORE INTO `message_type` (`name`) VALUES (?)";
461
462 const std::string kInsertLanguage =
463   "INSERT OR IGNORE INTO `language` (`code`) VALUES (?)";
464
465 const std::string kInsertMessageString =
466   "INSERT INTO `message` (`tts`, `label`, `line1`, `line2`, `language_code`, "
467   "  `message_type_name`, `textBody`) VALUES (?, ?, ?, ?, ?, ?, ?)";
468
469 const std::string kUpdateModuleConfig =
470   "UPDATE `module_config` SET `preloaded_pt` = ?, "
471   "  `exchange_after_x_ignition_cycles` = ?,"
472   "  `exchange_after_x_kilometers` = ?, `exchange_after_x_days` = ?, "
473   "  `timeout_after_x_seconds` = ?, `vehicle_make` = ?, "
474   "  `vehicle_model` = ?, `vehicle_year` = ?";
475
476 const std::string kInsertEndpoint =
477   "INSERT INTO `endpoint` (`service`, `url`, `application_id`) "
478   "  VALUES (?, ?, ?)";
479
480 const std::string kInsertSecondsBetweenRetry =
481   "INSERT INTO `seconds_between_retry` (`index`, `value`) VALUES (?, ?)";
482
483 const std::string kInsertNotificationsByPriority =
484   "INSERT OR REPLACE INTO `notifications_by_priority` (`priority_value`, `value`) "
485   "  VALUES (?, ?)";
486
487 const std::string kInsertDeviceData =
488   "INSERT OR IGNORE INTO `device` (`id`) VALUES (?)";
489
490 const std::string kInsertAppLevel =
491   "INSERT INTO `app_level` (`application_id`) VALUES (?)";
492
493 const std::string kDeleteSecondsBetweenRetries =
494   "DELETE FROM `seconds_between_retry`";
495
496 const std::string kDeleteEndpoint = "DELETE FROM `endpoint`";
497
498 const std::string kDeleteAppLevel = "DELETE FROM `app_level`";
499
500 const std::string kDeleteMessageString = "DELETE FROM `message`";
501
502 const std::string kDeleteFunctionalGroup = "DELETE FROM `functional_group`";
503
504 const std::string kDeleteRpc = "DELETE FROM `rpc`";
505
506 const std::string kDeleteAppGroup = "DELETE FROM `app_group`";
507
508 const std::string kSelectModuleConfig =
509   "SELECT `preloaded_pt`, `exchange_after_x_ignition_cycles`, "
510   " `exchange_after_x_kilometers`, `exchange_after_x_days`, "
511   " `timeout_after_x_seconds`, `vehicle_make`,"
512   " `vehicle_model`, `vehicle_year` "
513   " FROM `module_config`";
514
515 const std::string kSelectEndpoints =
516   "SELECT `url`, `service`, `application_id` "
517   "FROM `endpoint` "
518   "GROUP BY `application_id`";
519
520 const std::string kSelectNotificationsPerMin =
521   "SELECT `priority_value`, `value` FROM notifications_by_priority";
522
523 const std::string kSelectAppLevels = "SELECT `application_id` FROM `app_level`";
524
525 const std::string kSelectDeviceData = "SELECT * FROM `device`";
526
527 const std::string kSelectFunctionalGroups =
528   "SELECT `id`,`name`, `user_consent_prompt` "
529   "FROM `functional_group`";
530
531 const std::string kSelectAllRpcs =
532   "SELECT `name`, `hmi_level_value`, `parameter` "
533   "FROM `rpc` WHERE `functional_group_id` = ? ";
534
535 const std::string kSelectUserMsgsVersion =
536   "SELECT DISTINCT `number` FROM `version`";
537
538 const std::string kSelectAppPolicies = "SELECT `id`, `memory_kb`, "
539                                        " `heart_beat_timeout_ms`, `certificate` FROM `application`";
540
541 const std::string kSelectAppGroups = "SELECT `f`.`name` FROM `app_group` AS `a`"
542                                      "  LEFT JOIN `functional_group` AS `f` "
543                                      "    ON (`f`.`id` = `a`.`functional_group_id`)"
544                                      "  WHERE `a`.`application_id` = ?";
545
546 const std::string kSelectNicknames = "SELECT DISTINCT `name` FROM `nickname` "
547                                      "WHERE `application_id` = ?";
548
549 const std::string kSelectAppTypes = "SELECT DISTINCT `name` FROM `app_type` "
550                                     "WHERE `application_id` = ?";
551
552 const std::string kSelectSecondsBetweenRetries =
553   "SELECT `value` FROM `seconds_between_retry` ORDER BY `index`";
554
555 const std::string kSelectIgnitionCycles =
556   "SELECT `c`.`exchange_after_x_ignition_cycles`, "
557   "  `m`.`ignition_cycles_since_last_exchange` "
558   "  FROM `module_config` AS `c`, `module_meta` AS `m` "
559   "LIMIT 1";
560
561 const std::string kSelectKilometers =
562   "SELECT `c`.`exchange_after_x_kilometers`, "
563   "  `m`.`pt_exchanged_at_odometer_x` "
564   "  FROM `module_config` AS `c`, `module_meta` AS `m` "
565   "LIMIT 1";
566
567 const std::string kSelectDays = "SELECT `c`.`exchange_after_x_days`, "
568                                 "  `m`.`pt_exchanged_x_days_after_epoch` "
569                                 "  FROM `module_config` AS `c`, `module_meta` AS `m` "
570                                 "LIMIT 1";
571
572 const std::string kIncrementIgnitionCycles =
573   "UPDATE `module_meta` SET `ignition_cycles_since_last_exchange` = 1 + "
574   "  `ignition_cycles_since_last_exchange`";
575
576 const std::string kResetIgnitionCycles =
577   "UPDATE `module_meta` SET `ignition_cycles_since_last_exchange` = 0";
578
579 const std::string kSelectTimeoutResponse =
580   "SELECT `timeout_after_x_seconds` FROM `module_config` LIMIT 1";
581
582 const std::string kUpdateFlagUpdateRequired =
583   "UPDATE `module_meta` SET `flag_update_required` = ?";
584
585 const std::string kSelectFlagUpdateRequired =
586   "SELECT `flag_update_required` FROM `module_meta` LIMIT 1";
587
588 const std::string kUpdateCountersSuccessfulUpdate =
589   "UPDATE `module_meta` SET `pt_exchanged_at_odometer_x` = ?,"
590   "`pt_exchanged_x_days_after_epoch` = ?";
591
592 const std::string kDeleteApplication = "DELETE FROM `application`";
593
594 const std::string kSelectApplicationRevoked =
595   "SELECT `is_revoked` FROM `application` WHERE `id` = ?";
596
597 const std::string kSelectApplicationRepresented =
598   "SELECT COUNT(`id`) FROM `application` WHERE `id` = ?";
599
600 const std::string kSelectApplicationIsDefault =
601   "SELECT `is_default` FROM `application` WHERE `id` = ?";
602
603 const std::string kUpdateIsDefault =
604   "UPDATE `application` SET `is_default` = ? WHERE `id` = ?";
605
606 const std::string kDeleteDevice = "DELETE FROM `device` WHERE `id` = ?";
607
608 }  // namespace sql_pt
609 }  // namespace policy
610