CREATE TABLE SchemaVersionTable (version INTEGER NOT NULL DEFAULT 0)

INSERT INTO SchemaVersionTable (version) VALUES (22)

CREATE TABLE ResourceTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                            name TEXT UNIQUE NOT NULL,
                            isVirtual BOOL DEFAULT 0)

INSERT INTO ResourceTable (isVirtual,name) VALUES (1,'akonadi_search_resource')

CREATE TABLE CollectionTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                              remoteId TEXT,
                              remoteRevision TEXT,
                              name TEXT NOT NULL,
                              parentId BIGINT,
                              resourceId BIGINT NOT NULL,
                              subscribed BOOL NOT NULL DEFAULT 1,
                              cachePolicyInherit BOOL NOT NULL DEFAULT 1,
                              cachePolicyCheckInterval INTEGER NOT NULL DEFAULT -1,
                              cachePolicyCacheTimeout INTEGER NOT NULL DEFAULT -1,
                              cachePolicySyncOnDemand BOOL NOT NULL DEFAULT 0,
                              cachePolicyLocalParts TEXT,
                              queryString TEXT,
                              queryLanguage TEXT)

INSERT INTO CollectionTable (name,parentId,resourceId) VALUES ('Search',NULL,1)

CREATE TABLE MimeTypeTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                            name TEXT UNIQUE NOT NULL)

INSERT INTO MimeTypeTable (name) VALUES ('application/octet-stream')

INSERT INTO MimeTypeTable (name) VALUES ('message/rfc822')

INSERT INTO MimeTypeTable (name) VALUES ('text/calendar')

INSERT INTO MimeTypeTable (name) VALUES ('text/vcard')

INSERT INTO MimeTypeTable (name) VALUES ('inode/directory')

CREATE TABLE PimItemTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                           rev INTEGER NOT NULL DEFAULT 0,
                           remoteId TEXT,
                           remoteRevision TEXT,
                           collectionId BIGINT,
                           mimeTypeId BIGINT,
                           datetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                           atime TIMESTAMP,
                           dirty BOOL,
                           size BIGINT NOT NULL DEFAULT 0)

CREATE TABLE FlagTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                        name TEXT UNIQUE NOT NULL)

INSERT INTO FlagTable (name) VALUES ('important')

INSERT INTO FlagTable (name) VALUES ('has_attachment')

INSERT INTO FlagTable (name) VALUES ('spam')

INSERT INTO FlagTable (name) VALUES ('\ANSWERED')

INSERT INTO FlagTable (name) VALUES ('\FLAGGED')

INSERT INTO FlagTable (name) VALUES ('\DELETED')

INSERT INTO FlagTable (name) VALUES ('\SEEN')

INSERT INTO FlagTable (name) VALUES ('\DRAFT')

CREATE TABLE PartTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                        pimItemId BIGINT NOT NULL,
                        name TEXT NOT NULL,
                        data LONGBLOB,
                        datasize BIGINT NOT NULL,
                        version INTEGER DEFAULT 0,
                        external BOOL DEFAULT 0)

CREATE TABLE CollectionAttributeTable (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                                       collectionId BIGINT NOT NULL,
                                       type LONGBLOB NOT NULL,
                                       value LONGBLOB)

CREATE TABLE PimItemFlagRelation (PimItem_id BIGINT NOT NULL,
                                  Flag_id BIGINT NOT NULL,
                                  PRIMARY KEY (PimItem_id, Flag_id))

CREATE TABLE CollectionMimeTypeRelation (Collection_id BIGINT NOT NULL,
                                         MimeType_id BIGINT NOT NULL,
                                         PRIMARY KEY (Collection_id, MimeType_id))

CREATE TABLE CollectionPimItemRelation (Collection_id BIGINT NOT NULL,
                                        PimItem_id BIGINT NOT NULL,
                                        PRIMARY KEY (Collection_id, PimItem_id))

CREATE UNIQUE INDEX CollectionTable_parentAndNameIndex ON CollectionTable (parentId,name)

CREATE INDEX PimItemTable_collectionIndex ON PimItemTable (collectionId)

CREATE UNIQUE INDEX PartTable_pimItemIdNameIndex ON PartTable (pimItemId,name)

CREATE INDEX PartTable_pimItemNameIndex ON PartTable (name)

CREATE INDEX CollectionAttributeTable_collectionIndex ON CollectionAttributeTable (collectionId)
