2 Copyright (c) 2013, " Ford Motor Company
5 Redistribution and use in source and binary forms, " with or without
6 modification, " are permitted provided that the following conditions are met:
8 Redistributions of source code must retain the above copyright notice, " this
9 list of conditions and the following disclaimer.
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
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.
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.
33 #include "policy/sql_pt_queries.h"
38 const std::string kCreateSchema =
40 "CREATE TABLE IF NOT EXISTS `device`( "
41 " `id` VARCHAR(100) PRIMARY KEY NOT NULL, "
42 " `hardware` VARCHAR(45), "
43 " `firmware_rev` VARCHAR(45), "
45 " `os_version` VARCHAR(45), "
46 " `carrier` VARCHAR(45), "
47 " `max_number_rfcom_ports` INTEGER,"
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 "
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, "
63 " `flag_update_required` BOOL NOT NULL "
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) "
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 "
80 "CREATE TABLE IF NOT EXISTS `priority`( "
81 " `value` VARCHAR(45) PRIMARY KEY NOT NULL "
83 "CREATE TABLE IF NOT EXISTS `hmi_level`( "
84 " `value` VARCHAR(45) PRIMARY KEY NOT NULL "
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`) "
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 "
99 "CREATE TABLE IF NOT EXISTS `message_type`( "
100 " `name` VARCHAR(45) PRIMARY KEY NOT NULL "
102 "CREATE TABLE IF NOT EXISTS `version`( "
103 " `number` VARCHAR(45) NOT NULL "
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`) "
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`) "
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`) "
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`) "
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 "
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`) "
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`) "
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`) "
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`) "
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`) "
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`) "
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, "
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`) "
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`);"
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'); "
336 const std::string kDropSchema =
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`; "
386 const std::string kDeleteData =
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`; "
414 const std::string kCheckDBIntegrity = "PRAGMA integrity_check";
416 const std::string kCheckPgNumber = "PRAGMA page_count";
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` = ?";
424 const std::string kSelectPreloaded =
425 "SELECT `preloaded_pt` FROM `module_config` "
426 "WHERE `preloaded_pt` = 1 LIMIT 1";
428 const std::string kSelectEndpoint =
429 "SELECT `url`, `application_id` FROM `endpoint` WHERE `service` = ? ";
431 const std::string kInsertFunctionalGroup =
432 "INSERT INTO `functional_group` (`name`, `user_consent_prompt`) "
435 const std::string kInsertRpc =
436 "INSERT INTO `rpc` (`name`, `hmi_level_value`, `functional_group_id`) "
439 const std::string kInsertRpcWithParameter =
440 "INSERT INTO `rpc` (`name`, `hmi_level_value`, `parameter`, `functional_group_id`) "
441 " VALUES (?, ?, ?, ?)";
443 const std::string kInsertApplication =
444 "INSERT OR IGNORE INTO `application` (`id`, `is_revoked`, `memory_kb`,"
445 " `heart_beat_timeout_ms`, `certificate`) VALUES (?,?,?,?,?)";
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";
451 const std::string kInsertNickname =
452 "INSERT OR IGNORE INTO `nickname` (`application_id`, `name`) VALUES (?, ?)";
454 const std::string kInsertAppType =
455 "INSERT OR IGNORE INTO `app_type` (`application_id`, `name`) VALUES (?, ?)";
457 const std::string kUpdateVersion = "UPDATE `version` SET `number`= ?";
459 const std::string kInsertMessageType =
460 "INSERT OR IGNORE INTO `message_type` (`name`) VALUES (?)";
462 const std::string kInsertLanguage =
463 "INSERT OR IGNORE INTO `language` (`code`) VALUES (?)";
465 const std::string kInsertMessageString =
466 "INSERT INTO `message` (`tts`, `label`, `line1`, `line2`, `language_code`, "
467 " `message_type_name`, `textBody`) VALUES (?, ?, ?, ?, ?, ?, ?)";
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` = ?";
476 const std::string kInsertEndpoint =
477 "INSERT INTO `endpoint` (`service`, `url`, `application_id`) "
480 const std::string kInsertSecondsBetweenRetry =
481 "INSERT INTO `seconds_between_retry` (`index`, `value`) VALUES (?, ?)";
483 const std::string kInsertNotificationsByPriority =
484 "INSERT OR REPLACE INTO `notifications_by_priority` (`priority_value`, `value`) "
487 const std::string kInsertDeviceData =
488 "INSERT OR IGNORE INTO `device` (`id`) VALUES (?)";
490 const std::string kInsertAppLevel =
491 "INSERT INTO `app_level` (`application_id`) VALUES (?)";
493 const std::string kDeleteSecondsBetweenRetries =
494 "DELETE FROM `seconds_between_retry`";
496 const std::string kDeleteEndpoint = "DELETE FROM `endpoint`";
498 const std::string kDeleteAppLevel = "DELETE FROM `app_level`";
500 const std::string kDeleteMessageString = "DELETE FROM `message`";
502 const std::string kDeleteFunctionalGroup = "DELETE FROM `functional_group`";
504 const std::string kDeleteRpc = "DELETE FROM `rpc`";
506 const std::string kDeleteAppGroup = "DELETE FROM `app_group`";
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`";
515 const std::string kSelectEndpoints =
516 "SELECT `url`, `service`, `application_id` "
518 "GROUP BY `application_id`";
520 const std::string kSelectNotificationsPerMin =
521 "SELECT `priority_value`, `value` FROM notifications_by_priority";
523 const std::string kSelectAppLevels = "SELECT `application_id` FROM `app_level`";
525 const std::string kSelectDeviceData = "SELECT * FROM `device`";
527 const std::string kSelectFunctionalGroups =
528 "SELECT `id`,`name`, `user_consent_prompt` "
529 "FROM `functional_group`";
531 const std::string kSelectAllRpcs =
532 "SELECT `name`, `hmi_level_value`, `parameter` "
533 "FROM `rpc` WHERE `functional_group_id` = ? ";
535 const std::string kSelectUserMsgsVersion =
536 "SELECT DISTINCT `number` FROM `version`";
538 const std::string kSelectAppPolicies = "SELECT `id`, `memory_kb`, "
539 " `heart_beat_timeout_ms`, `certificate` FROM `application`";
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` = ?";
546 const std::string kSelectNicknames = "SELECT DISTINCT `name` FROM `nickname` "
547 "WHERE `application_id` = ?";
549 const std::string kSelectAppTypes = "SELECT DISTINCT `name` FROM `app_type` "
550 "WHERE `application_id` = ?";
552 const std::string kSelectSecondsBetweenRetries =
553 "SELECT `value` FROM `seconds_between_retry` ORDER BY `index`";
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` "
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` "
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` "
572 const std::string kIncrementIgnitionCycles =
573 "UPDATE `module_meta` SET `ignition_cycles_since_last_exchange` = 1 + "
574 " `ignition_cycles_since_last_exchange`";
576 const std::string kResetIgnitionCycles =
577 "UPDATE `module_meta` SET `ignition_cycles_since_last_exchange` = 0";
579 const std::string kSelectTimeoutResponse =
580 "SELECT `timeout_after_x_seconds` FROM `module_config` LIMIT 1";
582 const std::string kUpdateFlagUpdateRequired =
583 "UPDATE `module_meta` SET `flag_update_required` = ?";
585 const std::string kSelectFlagUpdateRequired =
586 "SELECT `flag_update_required` FROM `module_meta` LIMIT 1";
588 const std::string kUpdateCountersSuccessfulUpdate =
589 "UPDATE `module_meta` SET `pt_exchanged_at_odometer_x` = ?,"
590 "`pt_exchanged_x_days_after_epoch` = ?";
592 const std::string kDeleteApplication = "DELETE FROM `application`";
594 const std::string kSelectApplicationRevoked =
595 "SELECT `is_revoked` FROM `application` WHERE `id` = ?";
597 const std::string kSelectApplicationRepresented =
598 "SELECT COUNT(`id`) FROM `application` WHERE `id` = ?";
600 const std::string kSelectApplicationIsDefault =
601 "SELECT `is_default` FROM `application` WHERE `id` = ?";
603 const std::string kUpdateIsDefault =
604 "UPDATE `application` SET `is_default` = ? WHERE `id` = ?";
606 const std::string kDeleteDevice = "DELETE FROM `device` WHERE `id` = ?";
608 } // namespace sql_pt
609 } // namespace policy