Update define
[platform/core/multimedia/libmedia-service.git] / src / include / common / media-svc-env.h
1 /*
2  * libmedia-service
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Hyunjun Ko <zzoon.ko@samsung.com>, Haejeong Kim <backto.kim@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22
23
24 #ifndef _MEDIA_SVC_ENV_H_
25 #define _MEDIA_SVC_ENV_H_
26
27 #include <time.h>
28 #include <media-util.h>
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 /**
35  * DB information
36  */
37
38 #define LATEST_VERSION_NUMBER                                   6
39
40 /**
41  * Notice : New table user version -1 : alter table issue
42  */
43 #define USER_V1                                                                 1
44 #define USER_V2                                                                 2
45 #define USER_V3                                                                 3
46 #define USER_V4                                                                 4
47 #define USER_V5                                                                 5
48 #define USER_V6                                                                 6
49
50
51 /**
52  * DB table information
53  */
54
55 /**
56  * Table Name
57  */
58 #define MEDIA_SVC_DB_TABLE_MEDIA                                "media"                         /**< media table*/
59 #define MEDIA_SVC_DB_TABLE_FOLDER                               "folder"                        /**< media_folder table*/
60 #define MEDIA_SVC_DB_TABLE_PLAYLIST                             "playlist"                      /**< playlist table*/
61 #define MEDIA_SVC_DB_TABLE_PLAYLIST_MAP                 "playlist_map"          /**< playlist_map table*/
62 #define MEDIA_SVC_DB_TABLE_ALBUM                                "album"                         /**< album table*/
63 #define MEDIA_SVC_DB_TABLE_TAG                                  "tag"                           /**< tag table*/
64 #define MEDIA_SVC_DB_TABLE_TAG_MAP                              "tag_map"                       /**< tag_map table*/
65 #define MEDIA_SVC_DB_TABLE_BOOKMARK                             "bookmark"                      /**< bookmark table*/
66 #define MEDIA_SVC_DB_TABLE_STORAGE                              "storage"                       /**< storage table*/
67 #define MEDIA_SVC_DB_TABLE_TMP_TABLE                            "tmp"                   /**< tmp table for backup*/
68 #define MEDIA_SVC_DB_TABLE_FACE                                 "face"                  /**< face table*/
69 #define MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST                       "face_scan_list"        /**< face_scan_list table*/
70 #define MEDIA_SVC_DB_TABLE_UHD                                  "uhd"                           /**<  uhd table*/
71 #define MEDIA_SVC_DB_TABLE_PVR                                  "pvr"                           /**<  pvr table*/
72
73 /**
74  * View Name
75  */
76 #define MEDIA_SVC_DB_VIEW_MEDIA                                 "media_view"            /**< media_view*/
77 #define MEDIA_SVC_DB_VIEW_PLAYLIST                              "playlist_view"         /**< playlist_view*/
78 #define MEDIA_SVC_DB_VIEW_TAG                                   "tag_view"              /**< tag_view*/
79
80 /**
81  * Trigger Name
82  */
83 #define MEDIA_SVC_DB_TRIGGER_FOLDER                             "folder_cleanup"
84 #define MEDIA_SVC_DB_TRIGGER_PLAYLIST_MAP                       "playlist_map_cleanup"          /**< media to map*/
85 #define MEDIA_SVC_DB_TRIGGER_PLAYLIST_MAP1                      "playlist_map_cleanup_1"        /**< playlist to map*/
86 #define MEDIA_SVC_DB_TRIGGER_ALBUM                              "album_cleanup"
87 #define MEDIA_SVC_DB_TRIGGER_TAG_MAP                    "tag_map_cleanup"               /**< media to map*/
88 #define MEDIA_SVC_DB_TRIGGER_TAG_MAP1                   "tag_map_cleanup_1"             /**< tag to map*/
89 #define MEDIA_SVC_DB_TRIGGER_BOOKMARK                   "bookmark_cleanup"
90 #define MEDIA_SVC_DB_TRIGGER_STORAGE                    "storage_folder_cleanup"
91 #define MEDIA_SVC_DB_TRIGGER_FACE_SCAN_LIST     "face_scan_list_cleanup"
92 #define MEDIA_SVC_DB_TRIGGER_FACE                               "face_cleanup"
93 #define MEDIA_SVC_DB_TRIGGER_PVR                            "pvr_item_cleanup"
94 #define MEDIA_SVC_DB_TRIGGER_UHD                            "uhd_item_cleanup"
95
96 /**
97  * Trigger Name
98  */
99 #define MEDIA_SVC_DB_COLUMN_THUMBNAIL                   "thumbnail_path"
100 #define MEDIA_SVC_DB_COLUMN_MAP_ID                              "_id"
101
102
103 /**
104  * option
105  */
106 #define MEDIA_SVC_DB_TYPE_TEXT                                  "TEXT"
107 #define MEDIA_SVC_DB_TYPE_INT                                   "INTEGER"
108 #define MEDIA_SVC_DB_TYPE_DOUBLE                                "DOUBLE"
109
110 /**
111  * Query form
112  */
113 #define MEDIA_SVC_DB_QUERY_TABLE_WITH_UNIQUE    "CREATE TABLE IF NOT EXISTS '%s' (%s, unique(%s));"
114 #define MEDIA_SVC_DB_QUERY_TABLE                                "CREATE TABLE IF NOT EXISTS '%s' (%s);"
115 #define MEDIA_SVC_DB_QUERY_INDEX                                "CREATE INDEX IF NOT EXISTS %s on '%s' (%s);"
116 #define MEDIA_SVC_DB_QUERY_TRIGGER                              "CREATE TRIGGER IF NOT EXISTS '%s' DELETE ON '%s' BEGIN DELETE FROM %s WHERE %s=old.%s;END;"
117 #define MEDIA_SVC_DB_QUERY_TRIGGER_WITH_COUNT   "CREATE TRIGGER IF NOT EXISTS '%s' DELETE ON '%s' BEGIN DELETE FROM %s WHERE (SELECT count(*) FROM '%s' WHERE %s=old.%s)=1 AND %s=old.%s;END;"
118 #define MEDIA_SVC_DB_QUERY_VIEW_MEDIA                   "CREATE VIEW IF NOT EXISTS %s AS SELECT * from %s;"
119 #define MEDIA_SVC_DB_QUERY_VIEW_PLAYLIST                "CREATE VIEW IF NOT EXISTS %s AS SELECT %s FROM playlist \
120                         LEFT OUTER JOIN playlist_map ON playlist.playlist_id = playlist_map.playlist_id \
121                         LEFT OUTER JOIN media_view ON (playlist_map.media_uuid = media_view.media_uuid AND media_view.validity=1) \
122                         LEFT OUTER JOIN (SELECT count(playlist_id) as media_count, playlist_id FROM playlist_map group by playlist_id) as cnt_tbl ON (cnt_tbl.playlist_id=playlist_map.playlist_id AND media_view.validity=1);"
123 #define MEDIA_SVC_DB_QUERY_VIEW_TAG                     "CREATE VIEW IF NOT EXISTS %s AS SELECT %s FROM tag \
124                         LEFT OUTER JOIN tag_map ON tag.tag_id=tag_map.tag_id \
125                         LEFT OUTER JOIN media_view ON (tag_map.media_uuid = media_view.media_uuid AND media_view.validity=1) \
126                         LEFT OUTER JOIN (SELECT count(tag_id) as media_count, tag_id FROM tag_map group by tag_id) as cnt_tbl ON (cnt_tbl.tag_id=tag_map.tag_id AND media_view.validity=1);"
127 #define MEDIA_SVC_DB_QUERY_ALTER_TABLE          "ALTER TABLE %s ADD COLUMN %s;"
128 #define MEDIA_SVC_DB_QUERY_DROP_VIEW                    "DROP VIEW IF EXISTS %s;"
129
130
131
132 #define MEDIA_SVC_METADATA_LEN_MAX                      512                     /**< Length of metadata*/
133 #define MEDIA_SVC_DATATAKEN_SIZE                        19                      /**< Length of datataken */
134 #define MEDIA_SVC_PATHNAME_SIZE                 4096                    /**< Length of Path name. */
135 #define MEDIA_SVC_UUID_SIZE                                     36                      /**< Length of UUID*/
136 #define MEDIA_SVC_QUERY_LEN_MAX                 4096*2          /**< Max Query length*/
137 #define MEDIA_SVC_QUERY_LEN_NORMAL              4096                    /**< Normal Query length*/
138
139
140 #define MEDIA_SVC_TAG_UNKNOWN                           ""
141
142 #define THUMB_EXT               "jpg"
143
144 enum Exif_Orientation {
145         NOT_AVAILABLE = 0,
146         NORMAL = 1,
147         HFLIP = 2,
148         ROT_180 = 3,
149         VFLIP = 4,
150         TRANSPOSE = 5,
151         ROT_90 = 6,
152         TRANSVERSE = 7,
153         ROT_270 = 8
154 };
155
156 typedef enum {
157         MEDIA_SVC_QUERY_INSERT_ITEM,
158         MEDIA_SVC_QUERY_SET_ITEM_VALIDITY,
159         MEDIA_SVC_QUERY_MOVE_ITEM,
160         MEDIA_SVC_QUERY_UPDATE_ITEM,
161         MEDIA_SVC_QUERY_INSERT_FOLDER,
162         MEDIA_SVC_QUERY_UPDATE_COMMON,
163 } media_svc_query_type_e;
164
165 typedef enum {
166         MEDIA_SVC_DB_LIST_MEDIA = 0,
167         MEDIA_SVC_DB_LIST_FOLDER,
168         MEDIA_SVC_DB_LIST_PLAYLIST_MAP,
169         MEDIA_SVC_DB_LIST_PLAYLIST,
170         MEDIA_SVC_DB_LIST_ALBUM,
171         MEDIA_SVC_DB_LIST_TAG_MAP,
172         MEDIA_SVC_DB_LIST_TAG,
173         MEDIA_SVC_DB_LIST_BOOKMARK,
174         MEDIA_SVC_DB_LIST_STORAGE,
175         MEDIA_SVC_DB_LIST_UHD,
176         MEDIA_SVC_DB_LIST_PVR,
177         MEDIA_SVC_DB_LIST_FACE_SCAN_LIST,
178         MEDIA_SVC_DB_LIST_FACE,
179         MEDIA_SVC_DB_LIST_MAX,
180 } media_svc_table_slist_e;
181
182 typedef struct {
183         char *trigger_name;
184         char *view_name;
185         char *event_table;
186         char *action_table;
187 } table_info_s;
188
189 typedef struct {
190         char *name;
191         char *type;
192         bool has_option;
193         char *option;
194         int version;
195         bool is_index;
196         char *index_name;
197         bool is_unique;
198         bool is_trigger;
199         bool is_view;
200 } column_info_s;
201
202
203 #ifdef __cplusplus
204 }
205 #endif
206
207 #endif /*_MEDIA_SVC_ENV_H_*/