69ba61e9bed1f242abc29c4c4fb7e4e2005b9a52
[platform/core/appfw/pkgmgr-info.git] / parser / src / pkgmgr_parser_db_queries.h
1 /*
2  * Copyright (c) 2000 - 2017 Samsung Electronics Co., Ltd. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #ifndef __PKGMGR_PARSER_DB_QUERIES_H__
19 #define __PKGMGR_PARSER_DB_QUERIES_H__
20
21 #define QUERY_CREATE_TABLE_PACKAGE_INFO \
22         "CREATE TABLE IF NOT EXISTS package_info (\n" \
23         "  package TEXT PRIMARY KEY NOT NULL,\n" \
24         "  package_type TEXT DEFAULT 'tpk',\n" \
25         "  package_version TEXT,\n" \
26         "  package_api_version TEXT,\n" \
27         "  package_tep_name TEXT,\n" \
28         "  package_zip_mount_file TEXT,\n" \
29         "  install_location TEXT NOT NULL,\n" \
30         "  package_size TEXT,\n" \
31         "  package_removable TEXT NOT NULL DEFAULT 'true',\n" \
32         "  package_preload TEXT NOT NULL DEFAULT 'false',\n" \
33         "  package_readonly TEXT NOT NULL DEFAULT 'false',\n" \
34         "  package_update TEXT NOT NULL DEFAULT 'false',\n" \
35         "  package_appsetting TEXT NOT NULL DEFAULT 'false',\n" \
36         "  package_nodisplay TEXT NOT NULL DEFAULT 'false',\n" \
37         "  package_system TEXT NOT NULL DEFAULT 'false',\n" \
38         "  author_name TEXT,\n" \
39         "  author_email TEXT,\n" \
40         "  author_href TEXT,\n" \
41         "  installed_time TEXT,\n" \
42         "  installed_storage TEXT,\n" \
43         "  storeclient_id TEXT,\n" \
44         "  mainapp_id TEXT,\n" \
45         "  package_url TEXT,\n" \
46         "  root_path TEXT,\n" \
47         "  external_path TEXT,\n" \
48         "  csc_path TEXT,\n" \
49         "  package_support_mode TEXT,\n" \
50         "  package_support_disable TEXT NOT NULL DEFAULT 'false',\n" \
51         "  package_disable TEXT NOT NULL DEFAULT 'false')"
52
53 #define QUERY_CREATE_TABLE_PACKAGE_LOCALIZED_INFO \
54         "CREATE TABLE IF NOT EXISTS package_localized_info (\n" \
55         "  package TEXT NOT NULL,\n" \
56         "  package_locale TEXT NOT NULL DEFAULT 'No Locale',\n" \
57         "  package_label TEXT,\n" \
58         "  package_icon TEXT,\n" \
59         "  package_description TEXT,\n" \
60         "  package_license TEXT,\n" \
61         "  package_author TEXT,\n" \
62         "  PRIMARY KEY(package, package_locale),\n" \
63         "  FOREIGN KEY(package)\n" \
64         "  REFERENCES package_info(package) ON DELETE CASCADE)"
65
66 #define QUERY_CREATE_TABLE_PACKAGE_PRIVILEGE_INFO \
67         "CREATE TABLE IF NOT EXISTS package_privilege_info (\n" \
68         "  package TEXT NOT NULL,\n" \
69         "  privilege TEXT NOT NULL,\n" \
70         "  type TEXT NOT NULL,\n" \
71         "  PRIMARY KEY(package, privilege, type)\n" \
72         "  FOREIGN KEY(package)\n" \
73         "  REFERENCES package_info(package) ON DELETE CASCADE)"
74
75 #define QUERY_CREATE_TABLE_PACKAGE_APPDEFINED_PRIVILEGE_INFO \
76         "CREATE TABLE IF NOT EXISTS package_appdefined_privilege_info (\n" \
77         "  package TEXT NOT NULL,\n" \
78         "  privilege TEXT NOT NULL,\n" \
79         "  license TEXT,\n" \
80         "  type TEXT NOT NULL,\n" \
81         "  PRIMARY KEY(package, privilege, type)\n" \
82         "  FOREIGN KEY(package)\n" \
83         "  REFERENCES package_info(package) ON DELETE CASCADE)"
84
85 #define QUERY_CREATE_TABLE_PACKAGE_UPDATE_INFO \
86         "CREATE TABLE IF NOT EXISTS package_update_info (\n" \
87         "  package TEXT NOT NULL,\n" \
88         "  update_version TEXT NOT NULL,\n" \
89         "  update_type TEXT NOT NULL DEFAULT 'none',\n" \
90         "  PRIMARY KEY(package)\n" \
91         "  FOREIGN KEY(package)\n" \
92         "  REFERENCES package_info(package) ON DELETE CASCADE)"
93
94 #define QUERY_CREATE_TABLE_PACKAGE_APP_INFO \
95         "CREATE TABLE IF NOT EXISTS package_app_info (\n" \
96         "  app_id TEXT PRIMARY KEY NOT NULL,\n" \
97         "  app_component TEXT NOT NULL,\n" \
98         "  app_exec TEXT,\n" \
99         "  app_nodisplay TEXT NOT NULL DEFAULT 'false',\n" \
100         "  app_type TEXT,\n" \
101         "  app_onboot TEXT NOT NULL DEFAULT 'false',\n" \
102         "  app_multiple TEXT NOT NULL DEFAULT 'false',\n" \
103         "  app_autorestart TEXT NOT NULL DEFAULT 'false',\n" \
104         "  app_taskmanage TEXT NOT NULL DEFAULT 'false',\n" \
105         "  app_hwacceleration TEXT NOT NULL DEFAULT 'use-system-setting',\n" \
106         "  app_screenreader TEXT NOT NULL DEFAULT 'use-system-setting',\n" \
107         "  app_mainapp TEXT NOT NULL,\n" \
108         "  app_recentimage TEXT NOT NULL DEFAULT 'false',\n" \
109         "  app_launchcondition TEXT,\n" \
110         "  app_indicatordisplay TEXT NOT NULL DEFAULT 'true',\n" \
111         "  app_portraitimg TEXT,\n" \
112         "  app_landscapeimg TEXT,\n" \
113         "  app_guestmodevisibility TEXT NOT NULL DEFAULT 'true',\n" \
114         "  app_permissiontype TEXT NOT NULL DEFAULT 'normal',\n" \
115         "  app_preload TEXT NOT NULL DEFAULT 'false',\n" \
116         "  app_submode TEXT NOT NULL DEFAULT 'false',\n" \
117         "  app_submode_mainid TEXT,\n" \
118         "  app_installed_storage TEXT NOT NULL,\n" \
119         "  app_process_pool TEXT NOT NULL DEFAULT 'false',\n" \
120         "  app_launch_mode TEXT NOT NULL DEFAULT 'caller',\n" \
121         "  app_ui_gadget TEXT NOT NULL DEFAULT 'false',\n" \
122         "  app_support_mode TEXT,\n" \
123         "  app_support_disable TEXT NOT NULL DEFAULT 'false',\n" \
124         "  app_disable TEXT NOT NULL DEFAULT 'false',\n" \
125         "  app_package_type TEXT DEFAULT 'tpk',\n" \
126         "  app_package_system TEXT NOT NULL,\n" \
127         "  app_removable TEXT NOT NULL DEFAULT 'false',\n" \
128         "  app_package_installed_time TEXT,\n" \
129         "  app_support_ambient TEXT NOT NULL DEFAULT 'false',\n" \
130         "  component_type TEXT,\n" \
131         "  package TEXT NOT NULL,\n" \
132         "  app_tep_name TEXT,\n" \
133         "  app_zip_mount_file TEXT,\n" \
134         "  app_background_category INTEGER DEFAULT 0,\n" \
135         "  app_root_path TEXT,\n" \
136         "  app_api_version TEXT,\n" \
137         "  app_effective_appid TEXT,\n" \
138         "  app_splash_screen_display TEXT NOT NULL DEFAULT 'true',\n" \
139         "  app_external_path TEXT,\n" \
140         "  app_setup_appid TEXT,\n" \
141         "  FOREIGN KEY(package)\n" \
142         "  REFERENCES package_info(package) ON DELETE CASCADE)"
143
144 #define QUERY_CREATE_TABLE_PACKAGE_APP_LOCALIZED_INFO \
145         "CREATE TABLE IF NOT EXISTS package_app_localized_info (\n" \
146         "  app_id TEXT NOT NULL,\n" \
147         "  app_locale TEXT NOT NULL DEFAULT 'No Locale',\n" \
148         "  app_label TEXT,\n" \
149         "  app_icon TEXT,\n" \
150         "  PRIMARY KEY(app_id,app_locale)\n" \
151         "  FOREIGN KEY(app_id)\n" \
152         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
153
154 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL \
155         "CREATE TABLE IF NOT EXISTS package_app_app_control (\n" \
156         "  app_id TEXT NOT NULL,\n" \
157         "  app_control TEXT NOT NULL,\n" \
158         "  visibility TEXT NOT NULL DEFAULT 'local-only',\n" \
159         "  app_control_id TEXT NOT NULL DEFAULT 'no-name-app-control',\n" \
160         "  PRIMARY KEY(app_id,app_control)\n" \
161         "  FOREIGN KEY(app_id)\n" \
162         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
163
164 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CONTROL_PRIVILEGE \
165         "CREATE TABLE IF NOT EXISTS package_app_app_control_privilege (\n" \
166         "  app_id TEXT NOT NULL,\n" \
167         "  app_control TEXT NOT NULL,\n" \
168         "  privilege TEXT NOT NULL,\n" \
169         "  FOREIGN KEY(app_id,app_control)\n" \
170         "  REFERENCES package_app_app_control(app_id,app_control) ON DELETE CASCADE)"
171
172 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_CATEGORY \
173         "CREATE TABLE IF NOT EXISTS package_app_app_category (\n" \
174         "  app_id TEXT NOT NULL,\n" \
175         "  category TEXT NOT NULL,\n" \
176         "  PRIMARY KEY(app_id,category)\n" \
177         "  FOREIGN KEY(app_id)\n" \
178         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
179
180 #define QUERY_CREATE_TABLE_PACKAGE_APP_APP_METADATA \
181         "CREATE TABLE IF NOT EXISTS package_app_app_metadata (\n" \
182         "  app_id TEXT NOT NULL,\n" \
183         "  md_key TEXT NOT NULL,\n" \
184         "  md_value TEXT,\n" \
185         "  PRIMARY KEY(app_id, md_key, md_value)\n" \
186         "  FOREIGN KEY(app_id)\n" \
187         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
188
189 #define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL \
190         "CREATE TABLE IF NOT EXISTS package_app_data_control (\n" \
191         "  app_id TEXT NOT NULL,\n" \
192         "  providerid TEXT NOT NULL,\n" \
193         "  access TEXT NOT NULL,\n" \
194         "  type TEXT NOT NULL,\n" \
195         "  trusted TEXT NOT NULL,\n" \
196         "  PRIMARY KEY(providerid, type)\n" \
197         "  FOREIGN KEY(app_id)\n" \
198         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
199
200 #define QUERY_CREATE_TABLE_PACKAGE_APP_DATA_CONTROL_PRIVILEGE \
201         "CREATE TABLE IF NOT EXISTS package_app_data_control_privilege (\n" \
202         "  providerid TEXT,\n" \
203         "  privilege TEXT NOT NULL,\n" \
204         "  type TEXT NOT NULL,\n" \
205         "  PRIMARY KEY(providerid, privilege, type)\n" \
206         "  FOREIGN KEY(providerid, type)\n" \
207         "  REFERENCES package_app_data_control(providerid, type) ON DELETE CASCADE)"
208
209 #define QUERY_CREATE_TABLE_PACKAGE_APP_INFO_FOR_UID \
210         "CREATE TABLE IF NOT EXISTS package_app_info_for_uid (\n" \
211         "  app_id TEXT NOT NULL,\n" \
212         "  uid INTEGER NOT NULL,\n" \
213         "  is_disabled TEXT NOT NULL DEFAULT 'false',\n" \
214         "  is_splash_screen_enabled TEXT NOT NULL,\n" \
215         "  PRIMARY KEY(app_id, uid)\n" \
216         "  FOREIGN KEY(app_id)\n" \
217         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
218
219 #define QUERY_CREATE_TRIGGER_UPDATE_PACKAGE_APP_INFO_FOR_UID \
220         "CREATE TRIGGER IF NOT EXISTS update_package_appinfo_for_uid\n"\
221         "AFTER INSERT ON package_app_info_for_uid\n" \
222         "BEGIN\n" \
223         "  DELETE FROM package_app_info_for_uid\n"\
224         "    WHERE is_splash_screen_enabled=\n" \
225         "    (SELECT package_app_info.app_splash_screen_display FROM\n" \
226         "       package_app_info, package_app_info_for_uid\n" \
227         "     WHERE package_app_info.app_id=NEW.app_id) AND is_disabled='false';\n" \
228         "END;"
229
230 #define QUERY_CREATE_TABLE_PACKAGE_APP_SPLASH_SCREEN \
231         "CREATE TABLE IF NOT EXISTS package_app_splash_screen (\n" \
232         "  app_id TEXT NOT NULL,\n" \
233         "  src TEXT NOT NULL,\n" \
234         "  type TEXT NOT NULL,\n" \
235         "  orientation TEXT NOT NULL,\n" \
236         "  indicatordisplay TEXT,\n" \
237         "  operation TEXT NOT NULL,\n" \
238         "  color_depth TEXT NOT NULL DEFAULT '24',\n" \
239         "  PRIMARY KEY(app_id, orientation, operation)\n" \
240         "  FOREIGN KEY(app_id)\n" \
241         "  REFERENCES package_app_info(app_id) ON DELETE CASCADE)"
242
243 #define QUERY_CREATE_TABLE_PACKAGE_DEPENDENCY_INFO \
244         "CREATE TABLE IF NOT EXISTS package_dependency_info (\n" \
245         "  package TEXT NOT NULL,\n" \
246         "  depends_on TEXT NOT NULL,\n" \
247         "  type TEXT NOT NULL,\n" \
248         "  required_version TEXT,\n" \
249         "  PRIMARY KEY(package, depends_on),\n" \
250         "  FOREIGN KEY(package)\n" \
251         "  REFERENCES package_info(package) ON DELETE CASCADE)"
252
253 /* FIXME: duplicated at pkgmgrinfo_db.c */
254 #define QUERY_CREATE_TABLE_PACKAGE_CERT_INDEX_INFO \
255         "CREATE TABLE IF NOT EXISTS package_cert_index_info (\n" \
256         "  cert_info TEXT UNIQUE,\n" \
257         "  cert_id INTEGER PRIMARY KEY,\n" \
258         "  cert_ref_count INTEGER NOT NULL)"
259
260 #define QUERY_CREATE_TABLE_PACKAGE_CERT_INFO \
261         "CREATE TABLE IF NOT EXISTS package_cert_info (\n" \
262         "  package TEXT PRIMARY KEY,\n" \
263         "  package_count INTEGER,\n" \
264         "  author_root_cert INTEGER,\n" \
265         "  author_im_cert INTEGER,\n" \
266         "  author_signer_cert INTEGER,\n" \
267         "  dist_root_cert INTEGER,\n" \
268         "  dist_im_cert INTEGER,\n" \
269         "  dist_signer_cert INTEGER,\n" \
270         "  dist2_root_cert INTEGER,\n" \
271         "  dist2_im_cert INTEGER,\n" \
272         "  dist2_signer_cert INTEGER)"
273
274 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO \
275         "CREATE TRIGGER IF NOT EXISTS update_cert_info\n" \
276         "AFTER UPDATE ON package_cert_info\n" \
277         "WHEN (NEW.package_count = 0)\n" \
278         "BEGIN\n" \
279         "  DELETE FROM package_cert_info WHERE package=OLD.package;\n" \
280         "END;"
281
282 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2 \
283         "CREATE TRIGGER IF NOT EXISTS update_cert_info2\n" \
284         "AFTER UPDATE ON package_cert_info\n" \
285         "WHEN (NEW.package_count = OLD.package_count + 1)\n" \
286         "BEGIN\n" \
287         "  UPDATE package_cert_index_info SET\n" \
288         "    cert_ref_count = cert_ref_count - 1\n" \
289         "  WHERE cert_id = OLD.author_root_cert\n" \
290         "    OR cert_id = OLD.author_im_cert\n" \
291         "    OR cert_id = OLD.author_signer_cert\n" \
292         "    OR cert_id = OLD.dist_root_cert\n" \
293         "    OR cert_id = OLD.dist_im_cert\n" \
294         "    OR cert_id = OLD.dist_signer_cert\n" \
295         "    OR cert_id = OLD.dist2_root_cert\n" \
296         "    OR cert_id = OLD.dist2_im_cert\n" \
297         "    OR cert_id = OLD.dist2_signer_cert;\n" \
298         "END;"
299
300 #define QUERY_CREATE_TRIGGER_DELETE_CERT_INFO \
301         "CREATE TRIGGER IF NOT EXISTS delete_cert_info\n" \
302         "AFTER DELETE ON package_cert_info\n" \
303         "BEGIN\n" \
304         "  UPDATE package_cert_index_info SET\n" \
305         "    cert_ref_count = cert_ref_count - 1\n" \
306         "  WHERE cert_id = OLD.author_root_cert\n" \
307         "    OR cert_id = OLD.author_im_cert\n" \
308         "    OR cert_id = OLD.author_signer_cert\n" \
309         "    OR cert_id = OLD.dist_root_cert\n" \
310         "    OR cert_id = OLD.dist_im_cert\n" \
311         "    OR cert_id = OLD.dist_signer_cert\n" \
312         "    OR cert_id = OLD.dist2_root_cert\n" \
313         "    OR cert_id = OLD.dist2_im_cert\n" \
314         "    OR cert_id = OLD.dist2_signer_cert;\n" \
315         "END;"
316
317 #define QUERY_CREATE_TRIGGER_UPDATE_CERT_INDEX_INFO \
318         "CREATE TRIGGER IF NOT EXISTS update_cert_index_info\n" \
319         "AFTER UPDATE ON package_cert_index_info\n" \
320         "WHEN ((SELECT cert_ref_count FROM package_cert_index_info\n" \
321         "       WHERE cert_id = OLD.cert_id) = 0)\n"\
322         "BEGIN\n" \
323         "  DELETE FROM package_cert_index_info WHERE cert_id = OLD.cert_id;\n" \
324         "END;"
325
326 #endif  /* __PKGMGR_PARSER_DB_QUERIES_H__ */