contentstorage/castorage/data/castoragedb_create.sql
author hgs
Fri, 23 Jul 2010 14:03:00 +0300
changeset 106 e78d6e055a5b
parent 98 d2f833ab7940
child 107 b34d53f6acdf
permissions -rw-r--r--
201029
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
88
hgs
parents:
diff changeset
     1
DROP TABLE IF EXISTS CA_ENTRY;
hgs
parents:
diff changeset
     2
DROP TABLE IF EXISTS CA_GROUP_ENTRY;
hgs
parents:
diff changeset
     3
DROP TABLE IF EXISTS CA_ICON;
hgs
parents:
diff changeset
     4
DROP TABLE IF EXISTS CA_LAUNCH;
hgs
parents:
diff changeset
     5
DROP TABLE IF EXISTS CA_ATTRIBUTE;
hgs
parents:
diff changeset
     6
DROP TABLE IF EXISTS CA_LOCALIZATION_TEXT;
hgs
parents:
diff changeset
     7
DROP TABLE IF EXISTS CA_DB_PROPERTIES;
hgs
parents:
diff changeset
     8
hgs
parents:
diff changeset
     9
SELECT "CREATE TABLE CA_ENTRY" AS " ";
hgs
parents:
diff changeset
    10
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    11
CREATE TABLE CA_ENTRY( ENTRY_ID INTEGER PRIMARY KEY,
hgs
parents:
diff changeset
    12
                                 EN_TEXT TEXT NOT NULL COLLATE NOCASE,
hgs
parents:
diff changeset
    13
                                 EN_DESCRIPTION TEXT COLLATE NOCASE,
hgs
parents:
diff changeset
    14
                                 EN_ROLE INTEGER default 1,
hgs
parents:
diff changeset
    15
                                 EN_TYPE_NAME TEXT NOT NULL,
hgs
parents:
diff changeset
    16
                                 EN_ICON_ID INTEGER,
hgs
parents:
diff changeset
    17
                                 EN_CREATION_TIME BIGINT default -1 NOT NULL,
hgs
parents:
diff changeset
    18
                                 EN_UID INTEGER UNIQUE, 
hgs
parents:
diff changeset
    19
                                 EN_FLAGS INTEGER default 8, 
hgs
parents:
diff changeset
    20
                                 FOREIGN KEY(EN_ICON_ID) REFERENCES CA_ICON(ICON_ID) );
hgs
parents:
diff changeset
    21
CREATE INDEX EntryText_CAIndex ON CA_ENTRY(EN_TEXT);
hgs
parents:
diff changeset
    22
CREATE INDEX EntryCreationTime_CAIndex ON CA_ENTRY(EN_CREATION_TIME);
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
SELECT "CREATE TABLE CA_GROUP_ENTRY" AS " ";
hgs
parents:
diff changeset
    25
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    26
CREATE TABLE CA_GROUP_ENTRY( GROUP_ENTRY_ID INTEGER PRIMARY KEY ,
hgs
parents:
diff changeset
    27
                                  GE_GROUP_ID INTEGER NOT NULL,
hgs
parents:
diff changeset
    28
                                  GE_ENTRY_ID INTEGER NOT NULL,
hgs
parents:
diff changeset
    29
                                  GE_POSITION INTEGER,
hgs
parents:
diff changeset
    30
                                  UNIQUE( GE_GROUP_ID, GE_ENTRY_ID ),
hgs
parents:
diff changeset
    31
                                  FOREIGN KEY(GE_GROUP_ID) REFERENCES CA_ENTRY(ENTRY_ID),
hgs
parents:
diff changeset
    32
                                  FOREIGN KEY(GE_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
hgs
parents:
diff changeset
    33
CREATE INDEX GroupGE_POSITION_CAIndex ON CA_GROUP_ENTRY(GE_POSITION);
hgs
parents:
diff changeset
    34
CREATE TRIGGER update_position_in_ca_group_entry_after_remove AFTER DELETE ON CA_GROUP_ENTRY
hgs
parents:
diff changeset
    35
BEGIN
hgs
parents:
diff changeset
    36
    UPDATE CA_GROUP_ENTRY SET GE_POSITION = GE_POSITION - 1 WHERE GE_POSITION > old.GE_POSITION AND GE_GROUP_ID = old.GE_GROUP_ID;
hgs
parents:
diff changeset
    37
END; 
hgs
parents:
diff changeset
    38
CREATE TRIGGER update_position_in_ca_group_entry_before_insert BEFORE INSERT ON CA_GROUP_ENTRY
hgs
parents:
diff changeset
    39
BEGIN
hgs
parents:
diff changeset
    40
    UPDATE CA_GROUP_ENTRY SET GE_POSITION = GE_POSITION + 1 WHERE GE_POSITION >= new.GE_POSITION AND GE_GROUP_ID = new.GE_GROUP_ID;
hgs
parents:
diff changeset
    41
END;
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
SELECT "CREATE TABLE CA_ICON" AS " ";
hgs
parents:
diff changeset
    44
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    45
CREATE TABLE CA_ICON( ICON_ID INTEGER PRIMARY KEY ,
hgs
parents:
diff changeset
    46
                                  IC_FILENAME TEXT,
hgs
parents:
diff changeset
    47
                                  IC_SKIN_ID TEXT,
94
hgs
parents: 93
diff changeset
    48
                                  IC_APP_ID TEXT,
88
hgs
parents:
diff changeset
    49
                                  UNIQUE( IC_FILENAME, IC_SKIN_ID, IC_APP_ID ) );
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
SELECT "CREATE TABLE CA_LAUNCH" AS " ";
hgs
parents:
diff changeset
    52
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    53
CREATE TABLE CA_LAUNCH( LAUNCH_ID INTEGER PRIMARY KEY ,
hgs
parents:
diff changeset
    54
                                  LA_ENTRY_ID INTEGER NOT NULL,
hgs
parents:
diff changeset
    55
                                  LA_LAUNCH_TIME INTEGER NOT NULL,
hgs
parents:
diff changeset
    56
                                  FOREIGN KEY(LA_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
hgs
parents:
diff changeset
    57
CREATE INDEX LaunchLaunchTime_CAIndex ON CA_LAUNCH(LA_LAUNCH_TIME);
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
SELECT "CREATE TABLE CA_ATTRIBUTE" AS " ";
hgs
parents:
diff changeset
    60
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    61
CREATE TABLE CA_ATTRIBUTE( ATTRIBUTE_ID INTEGER PRIMARY KEY ,
hgs
parents:
diff changeset
    62
                                  AT_ENTRY_ID INTEGER NOT NULL,
hgs
parents:
diff changeset
    63
                                  AT_NAME TEXT NOT NULL,
hgs
parents:
diff changeset
    64
                                  AT_VALUE TEXT NOT NULL,
hgs
parents:
diff changeset
    65
                                  UNIQUE( AT_ENTRY_ID, AT_NAME ),
hgs
parents:
diff changeset
    66
                                  FOREIGN KEY(AT_ENTRY_ID) REFERENCES CA_ENTRY(ENTRY_ID) );
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
SELECT "CREATE TABLE CA_LOCALIZATION_TEXT" AS " ";
hgs
parents:
diff changeset
    69
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    70
CREATE TABLE CA_LOCALIZATION_TEXT( LOC_TEXT_ID INTEGER PRIMARY KEY ,
hgs
parents:
diff changeset
    71
                                  LT_TABLE_NAME TEXT ,
hgs
parents:
diff changeset
    72
                                  LT_ATTRIBUTE_NAME TEXT ,
hgs
parents:
diff changeset
    73
                                  LT_STRING_ID TEXT ,
94
hgs
parents: 93
diff changeset
    74
                                  LT_QMFILENAME TEXT,
88
hgs
parents:
diff changeset
    75
                                  LT_ROW_ID INTEGER );
hgs
parents:
diff changeset
    76
                                  
hgs
parents:
diff changeset
    77
SELECT "CREATE TABLE CA_DB_PROPERTIES" AS " ";
hgs
parents:
diff changeset
    78
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    79
CREATE TABLE CA_DB_PROPERTIES( DB_PROPERTIES_ID INTEGER PRIMARY KEY ,
hgs
parents:
diff changeset
    80
                                  DB_PROPERTY TEXT UNIQUE,
hgs
parents:
diff changeset
    81
                                  DB_VALUE TEXT );       
hgs
parents:
diff changeset
    82
                                   
hgs
parents:
diff changeset
    83
94
hgs
parents: 93
diff changeset
    84
SELECT "INSERT INITIAL DATA TO CA_DB_PROPERTIES" AS " ";
hgs
parents: 93
diff changeset
    85
hgs
parents: 93
diff changeset
    86
SELECT "------------------------------------" AS " ";
hgs
parents: 93
diff changeset
    87
INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
hgs
parents: 93
diff changeset
    88
VALUES ( 'Version', '00001' );
hgs
parents: 93
diff changeset
    89
INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
hgs
parents: 93
diff changeset
    90
VALUES ( 'Language', '' );
hgs
parents: 93
diff changeset
    91
INSERT INTO CA_DB_PROPERTIES ( DB_PROPERTY, DB_VALUE ) 
hgs
parents: 93
diff changeset
    92
VALUES ( 'QMfile', 'contentstorage_' );
88
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
-- CREATE VIEW COLLECTION
hgs
parents:
diff changeset
    95
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
    96
SELECT "CREATE VIEW COLLECTION" AS " ";
hgs
parents:
diff changeset
    97
DROP VIEW IF EXISTS COLLECTION;
hgs
parents:
diff changeset
    98
CREATE VIEW COLLECTION 
hgs
parents:
diff changeset
    99
  AS SELECT 
92
hgs
parents: 89
diff changeset
   100
    "" AS "COLLECTION_NAME",
hgs
parents: 89
diff changeset
   101
    "" AS "COL_LOCNAME",
106
hgs
parents: 98
diff changeset
   102
    "" AS "COL_SHORT_NAME",
hgs
parents: 98
diff changeset
   103
    "" AS "COL_TITLE_NAME",
92
hgs
parents: 89
diff changeset
   104
    "" AS "COL_APP_GROUP_NAME", 
94
hgs
parents: 93
diff changeset
   105
    "" AS "ICON_FILENAME",
hgs
parents: 93
diff changeset
   106
    "" AS "ICON_SKIN_ID",
93
hgs
parents: 92
diff changeset
   107
    "" AS "FLAGS";
88
hgs
parents:
diff changeset
   108
    
hgs
parents:
diff changeset
   109
SELECT "  CREATE TRIGGER collection_insert" AS " ";
hgs
parents:
diff changeset
   110
CREATE TRIGGER collection_insert INSTEAD OF INSERT ON COLLECTION 
hgs
parents:
diff changeset
   111
BEGIN  
hgs
parents:
diff changeset
   112
  -- INSERT ICON
94
hgs
parents: 93
diff changeset
   113
  INSERT INTO CA_ICON (IC_FILENAME, IC_SKIN_ID) 
hgs
parents: 93
diff changeset
   114
  VALUES ( new.ICON_FILENAME, new.ICON_SKIN_ID);
88
hgs
parents:
diff changeset
   115
  -- DELETE IF ICON IS NULL OR IF IT IS DUPLICATE
hgs
parents:
diff changeset
   116
  DELETE FROM CA_ICON WHERE ICON_ID = last_insert_rowid() AND 
94
hgs
parents: 93
diff changeset
   117
      ( (IC_FILENAME IS NULL AND IC_SKIN_ID IS NULL) OR 
hgs
parents: 93
diff changeset
   118
        (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON_FILENAME AND ICON_ID <> last_insert_rowid()) IS NOT NULL OR 
hgs
parents: 93
diff changeset
   119
        (SELECT ICON_ID FROM CA_ICON WHERE IC_SKIN_ID = new.ICON_SKIN_ID AND ICON_ID <> last_insert_rowid()) IS NOT NULL);
88
hgs
parents:
diff changeset
   120
  -- INSERT ENTRY
92
hgs
parents: 89
diff changeset
   121
    INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_FLAGS, EN_ICON_ID ) 
94
hgs
parents: 93
diff changeset
   122
    VALUES ( new.COLLECTION_NAME , 2, "collection",  new.FLAGS, (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON_FILENAME OR IC_SKIN_ID = new.ICON_SKIN_ID ));
92
hgs
parents: 89
diff changeset
   123
    -- LOCALIZATION 
94
hgs
parents: 93
diff changeset
   124
    INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_QMFILENAME, LT_ROW_ID ) 
hgs
parents: 93
diff changeset
   125
    VALUES ( 'CA_ENTRY', 'EN_TEXT', new.COL_LOCNAME, ( SELECT DB_VALUE FROM CA_DB_PROPERTIES WHERE DB_PROPERTY = "QMfile" ), ( SELECT last_insert_rowid() ) );
92
hgs
parents: 89
diff changeset
   126
    DELETE FROM CA_LOCALIZATION_TEXT WHERE LT_STRING_ID IS NULL AND LOC_TEXT_ID = last_insert_rowid() ;
hgs
parents: 89
diff changeset
   127
    -- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
88
hgs
parents:
diff changeset
   128
  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
hgs
parents:
diff changeset
   129
  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "menucollections") , 
hgs
parents:
diff changeset
   130
          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME), 
hgs
parents:
diff changeset
   131
          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "menucollections")) );
106
hgs
parents: 98
diff changeset
   132
    -- ADD ATTRIBUTES
92
hgs
parents: 89
diff changeset
   133
    INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )
hgs
parents: 89
diff changeset
   134
    VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME AND (EN_TYPE_NAME = "collection::downloaded" OR EN_TYPE_NAME = "collection") ), "appgroup_name", new.COL_APP_GROUP_NAME );
106
hgs
parents: 98
diff changeset
   135
    INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )
hgs
parents: 98
diff changeset
   136
    VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME AND (EN_TYPE_NAME = "collection::downloaded" OR EN_TYPE_NAME = "collection") ), "short_name", new.COL_SHORT_NAME );
hgs
parents: 98
diff changeset
   137
    INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )
hgs
parents: 98
diff changeset
   138
    VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME AND (EN_TYPE_NAME = "collection::downloaded" OR EN_TYPE_NAME = "collection") ), "title_name", new.COL_TITLE_NAME );
88
hgs
parents:
diff changeset
   139
END;
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
-- CREATE VIEW ITEM_TO_COLLECTION
hgs
parents:
diff changeset
   142
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
   143
SELECT "CREATE VIEW ITEM_TO_COLLECTION" AS " ";
hgs
parents:
diff changeset
   144
DROP VIEW IF EXISTS ITEM_TO_COLLECTION;
hgs
parents:
diff changeset
   145
CREATE VIEW ITEM_TO_COLLECTION 
hgs
parents:
diff changeset
   146
  AS SELECT 
hgs
parents:
diff changeset
   147
    "" AS "ITEM_TYPE",
hgs
parents:
diff changeset
   148
    "" AS "ITEM_NAME",
106
hgs
parents: 98
diff changeset
   149
    "" AS "ITEM_SHORTNAME",
94
hgs
parents: 93
diff changeset
   150
    "" AS "ICON_FILENAME",
hgs
parents: 93
diff changeset
   151
    "" AS "ICON_SKIN_ID",
88
hgs
parents:
diff changeset
   152
    "" AS "ITEM_DEST",    
hgs
parents:
diff changeset
   153
    "" AS "COLLECTION_NAME";
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
SELECT "  CREATE TRIGGER item_to_collection_insert_app" AS " ";
hgs
parents:
diff changeset
   156
CREATE TRIGGER item_to_collection_insert_app INSTEAD OF INSERT ON ITEM_TO_COLLECTION WHEN new.ITEM_TYPE="application"
hgs
parents:
diff changeset
   157
BEGIN
hgs
parents:
diff changeset
   158
  -- INSERT ENTRY
hgs
parents:
diff changeset
   159
  INSERT OR IGNORE INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_UID ) 
hgs
parents:
diff changeset
   160
  VALUES ( new.ITEM_NAME, 1, "application", new.ITEM_DEST   );
92
hgs
parents: 89
diff changeset
   161
  -- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
88
hgs
parents:
diff changeset
   162
  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
hgs
parents:
diff changeset
   163
  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
94
hgs
parents: 93
diff changeset
   164
          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_UID = new.ITEM_DEST), 
88
hgs
parents:
diff changeset
   165
          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
hgs
parents:
diff changeset
   166
END;
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
SELECT "  CREATE TRIGGER item_to_collection_insert_url" AS " ";
hgs
parents:
diff changeset
   169
CREATE TRIGGER item_to_collection_insert_url INSTEAD OF INSERT ON ITEM_TO_COLLECTION WHEN new.ITEM_TYPE="url"
hgs
parents:
diff changeset
   170
BEGIN
hgs
parents:
diff changeset
   171
  -- INSERT ICON
94
hgs
parents: 93
diff changeset
   172
  INSERT OR IGNORE INTO CA_ICON (IC_FILENAME, IC_SKIN_ID) 
hgs
parents: 93
diff changeset
   173
  VALUES ( new.ICON_FILENAME, new.ICON_SKIN_ID);
88
hgs
parents:
diff changeset
   174
  DELETE FROM CA_ICON WHERE ICON_ID = last_insert_rowid() AND 
94
hgs
parents: 93
diff changeset
   175
      ( (IC_FILENAME IS NULL AND IC_SKIN_ID IS NULL) OR 
hgs
parents: 93
diff changeset
   176
        (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON_FILENAME AND ICON_ID <> last_insert_rowid()) IS NOT NULL OR 
hgs
parents: 93
diff changeset
   177
        (SELECT ICON_ID FROM CA_ICON WHERE IC_SKIN_ID = new.ICON_SKIN_ID AND ICON_ID <> last_insert_rowid()) IS NOT NULL);  
88
hgs
parents:
diff changeset
   178
  -- INSERT ENTRY
hgs
parents:
diff changeset
   179
  INSERT OR IGNORE INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID ) 
94
hgs
parents: 93
diff changeset
   180
  VALUES ( new.ITEM_NAME, 1, "url", (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON_FILENAME OR IC_SKIN_ID = new.ICON_SKIN_ID ));
106
hgs
parents: 98
diff changeset
   181
  -- ADD ATTRIBUTES
88
hgs
parents:
diff changeset
   182
  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
106
hgs
parents: 98
diff changeset
   183
  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"url",new.ITEM_DEST );
hgs
parents: 98
diff changeset
   184
  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
hgs
parents: 98
diff changeset
   185
  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"short_name", new.ITEM_SHORTNAME );
92
hgs
parents: 89
diff changeset
   186
  -- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
88
hgs
parents:
diff changeset
   187
  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
hgs
parents:
diff changeset
   188
  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
94
hgs
parents: 93
diff changeset
   189
          (SELECT ENTRY_ID FROM CA_ENTRY WHERE (EN_TEXT = new.ITEM_NAME AND EN_TYPE_NAME = new.ITEM_TYPE )),
88
hgs
parents:
diff changeset
   190
          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
hgs
parents:
diff changeset
   191
END;
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
92
hgs
parents: 89
diff changeset
   194
-- CREATE VIEW WIDGET   _TO_COLLECTION
88
hgs
parents:
diff changeset
   195
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
   196
SELECT "CREATE VIEW WIDGET_TO_COLLECTION" AS " ";
hgs
parents:
diff changeset
   197
DROP VIEW IF EXISTS WIDGET_TO_COLLECTION;
hgs
parents:
diff changeset
   198
CREATE VIEW WIDGET_TO_COLLECTION 
hgs
parents:
diff changeset
   199
  AS SELECT 
hgs
parents:
diff changeset
   200
    "" AS "ITEM_TYPE",
hgs
parents:
diff changeset
   201
    "" AS "ITEM_NAME",
94
hgs
parents: 93
diff changeset
   202
    "" AS "ICON_FILENAME",
hgs
parents: 93
diff changeset
   203
    "" AS "ICON_SKIN_ID",
88
hgs
parents:
diff changeset
   204
    "" AS "PACKAGE_UID",
hgs
parents:
diff changeset
   205
    "" AS "LIBRARY",
hgs
parents:
diff changeset
   206
    "" AS "URI",
93
hgs
parents: 92
diff changeset
   207
    "" AS "COLLECTION_NAME";
88
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
SELECT "  CREATE TRIGGER insert_widget_to_collection" AS " ";
hgs
parents:
diff changeset
   210
CREATE TRIGGER item_to_collection_insert_widget INSTEAD OF INSERT ON WIDGET_TO_COLLECTION WHEN new.ITEM_TYPE="widget"
hgs
parents:
diff changeset
   211
BEGIN
hgs
parents:
diff changeset
   212
  -- INSERT ICON
94
hgs
parents: 93
diff changeset
   213
  INSERT OR IGNORE INTO CA_ICON (IC_FILENAME, IC_SKIN_ID) 
hgs
parents: 93
diff changeset
   214
  VALUES ( new.ICON_FILENAME, new.ICON_SKIN_ID);
88
hgs
parents:
diff changeset
   215
  DELETE FROM CA_ICON WHERE ICON_ID = last_insert_rowid() AND 
94
hgs
parents: 93
diff changeset
   216
      ( (IC_FILENAME IS NULL AND IC_SKIN_ID IS NULL) OR 
hgs
parents: 93
diff changeset
   217
        (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON_FILENAME AND ICON_ID <> last_insert_rowid()) IS NOT NULL OR 
hgs
parents: 93
diff changeset
   218
        (SELECT ICON_ID FROM CA_ICON WHERE IC_SKIN_ID = new.ICON_SKIN_ID AND ICON_ID <> last_insert_rowid()) IS NOT NULL);
88
hgs
parents:
diff changeset
   219
  -- INSERT ENTRY
hgs
parents:
diff changeset
   220
  INSERT OR IGNORE INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID ) 
94
hgs
parents: 93
diff changeset
   221
  VALUES ( new.ITEM_NAME, 1, "widget", (SELECT ICON_ID FROM CA_ICON WHERE IC_FILENAME = new.ICON_FILENAME OR IC_SKIN_ID = new.ICON_SKIN_ID ));
88
hgs
parents:
diff changeset
   222
  -- INSERT ATTRIBUTES
hgs
parents:
diff changeset
   223
  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
hgs
parents:
diff changeset
   224
  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"packageuid",new.PACKAGE_UID);
hgs
parents:
diff changeset
   225
  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
hgs
parents:
diff changeset
   226
  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"widget:library",new.LIBRARY);
hgs
parents:
diff changeset
   227
  INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
hgs
parents:
diff changeset
   228
  VALUES ( ( SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.ITEM_NAME ) ,"widget:uri",new.URI);
92
hgs
parents: 89
diff changeset
   229
  -- RELATION TO MAIN COLLECTION (ADD TO GROUP: )
88
hgs
parents:
diff changeset
   230
  INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
hgs
parents:
diff changeset
   231
  VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME) , 
94
hgs
parents: 93
diff changeset
   232
          (SELECT ENTRY_ID FROM CA_ENTRY WHERE (EN_TEXT = new.ITEM_NAME AND EN_TYPE_NAME = new.ITEM_TYPE)), 
88
hgs
parents:
diff changeset
   233
          (SELECT IFNULL(MAX(GE_POSITION)+1, 1) FROM CA_GROUP_ENTRY WHERE GE_GROUP_ID = (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TEXT = new.COLLECTION_NAME)) );
92
hgs
parents: 89
diff changeset
   234
END;
88
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
92
hgs
parents: 89
diff changeset
   238
-- insert neccessary items
hgs
parents: 89
diff changeset
   239
SELECT "INSERT menucollections ENTRY" AS " ";
hgs
parents: 89
diff changeset
   240
INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID, EN_UID ) 
hgs
parents: 89
diff changeset
   241
VALUES ( 'AllCollections', 2, "menucollections", NULL , NULL  );
hgs
parents: 89
diff changeset
   242
hgs
parents: 89
diff changeset
   243
INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
hgs
parents: 89
diff changeset
   244
VALUES ( last_insert_rowid(), "appgroup_name", "AllCollections" );
hgs
parents: 89
diff changeset
   245
hgs
parents: 89
diff changeset
   246
SELECT "------------------------------------" AS " ";
hgs
parents: 89
diff changeset
   247
SELECT "INSERT Downloaded collection ENTRY" AS " ";
hgs
parents: 89
diff changeset
   248
INSERT INTO CA_ICON (IC_FILENAME) 
hgs
parents: 89
diff changeset
   249
VALUES ( "qtg_large_applications_download");
hgs
parents: 89
diff changeset
   250
hgs
parents: 89
diff changeset
   251
INSERT INTO CA_ENTRY (EN_TEXT, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID,  EN_FLAGS ) 
hgs
parents: 89
diff changeset
   252
VALUES ( 'Downloaded', 2, "collection::downloaded", last_insert_rowid() , 8 );
hgs
parents: 89
diff changeset
   253
hgs
parents: 89
diff changeset
   254
INSERT OR IGNORE INTO CA_ATTRIBUTE (AT_ENTRY_ID, AT_NAME, AT_VALUE )  
hgs
parents: 89
diff changeset
   255
VALUES ( last_insert_rowid(), "appgroup_name", " Downloaded" );
hgs
parents: 89
diff changeset
   256
94
hgs
parents: 93
diff changeset
   257
INSERT INTO CA_LOCALIZATION_TEXT ( LT_TABLE_NAME, LT_ATTRIBUTE_NAME, LT_STRING_ID, LT_QMFILENAME, LT_ROW_ID ) 
hgs
parents: 93
diff changeset
   258
VALUES ( 'CA_ENTRY', 'EN_TEXT', "txt_applib_dblist_downloaded",( SELECT DB_VALUE FROM CA_DB_PROPERTIES WHERE DB_PROPERTY = "QMfile" ), ( SELECT last_insert_rowid() ) );
92
hgs
parents: 89
diff changeset
   259
hgs
parents: 89
diff changeset
   260
INSERT INTO CA_GROUP_ENTRY (GE_GROUP_ID, GE_ENTRY_ID, GE_POSITION) 
hgs
parents: 89
diff changeset
   261
VALUES ( (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "menucollections") , 
hgs
parents: 89
diff changeset
   262
          (SELECT ENTRY_ID FROM CA_ENTRY WHERE EN_TYPE_NAME = "collection::downloaded"), 
hgs
parents: 89
diff changeset
   263
          1 ); 
hgs
parents: 89
diff changeset
   264
88
hgs
parents:
diff changeset
   265
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
   266
SELECT "castoragedb_create - END" AS " ";
hgs
parents:
diff changeset
   267
SELECT "------------------------------------" AS " ";
hgs
parents:
diff changeset
   268