diff --git a/psi.sqlite-schema-(Photos-7,-Monterey,-macOS-12.0.1).md b/psi.sqlite-schema-(Photos-7,-Monterey,-macOS-12.0.1).md index 28a13a5..a9ac309 100644 --- a/psi.sqlite-schema-(Photos-7,-Monterey,-macOS-12.0.1).md +++ b/psi.sqlite-schema-(Photos-7,-Monterey,-macOS-12.0.1).md @@ -1,53 +1,14 @@ ```sql -CREATE INDEX asset_pk ON assets(uuid_0, uuid_1); -CREATE INDEX collection_pk ON collections(uuid_0, uuid_1); -CREATE INDEX ga_assetid ON ga(assetid, groupid); -CREATE INDEX gc_collectionid ON gc(collectionid); -CREATE INDEX group_pk ON groups( - category, - content_string, - normalized_string, - lookup_identifier -); +CREATE TABLE word_embedding(word TEXT, extended_word TEXT, score DOUBLE); CREATE INDEX word_embedding_index ON word_embedding(word); -CREATE TABLE IF NOT EXISTS 'prefix_config'(k PRIMARY KEY, v) WITHOUT ROWID; -CREATE TABLE IF NOT EXISTS 'prefix_data'(id INTEGER PRIMARY KEY, block BLOB); -CREATE TABLE IF NOT EXISTS 'prefix_docsize'(id INTEGER PRIMARY KEY, sz BLOB); -CREATE TABLE IF NOT EXISTS 'prefix_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID; -CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_config'(k PRIMARY KEY, v) WITHOUT ROWID; -CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_content'(id INTEGER PRIMARY KEY, c0); +CREATE VIRTUAL TABLE word_embedding_prefix USING fts5(extended_word) +/* word_embedding_prefix(extended_word) */ +; CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_data'(id INTEGER PRIMARY KEY, block BLOB); -CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_docsize'(id INTEGER PRIMARY KEY, sz BLOB); CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID; -CREATE TABLE assets( - uuid_0 INT, - uuid_1 INT, - creationDate INT, - UNIQUE(uuid_0, uuid_1) -); -CREATE TABLE collections( - uuid_0 INT, - uuid_1 INT, - startDate INT, - endDate INT, - title TEXT, - subtitle TEXT, - keyAssetUUID_0 INT, - keyAssetUUID_1 INT, - typeAndNumberOfAssets INT32, - sortDate DOUBLE, - UNIQUE(uuid_0, uuid_1) -); -CREATE TABLE ga( - groupid INT, - assetid INT, - PRIMARY KEY(groupid, assetid) -); -CREATE TABLE gc( - groupid INT, - collectionid INT, - PRIMARY KEY(groupid, collectionid) -); +CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_content'(id INTEGER PRIMARY KEY, c0); +CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_docsize'(id INTEGER PRIMARY KEY, sz BLOB); +CREATE TABLE IF NOT EXISTS 'word_embedding_prefix_config'(k PRIMARY KEY, v) WITHOUT ROWID; CREATE TABLE groups( category INT2, owning_groupid INT, @@ -65,8 +26,52 @@ CREATE TABLE groups( token_ranges_1 ) ); +CREATE TABLE assets( + uuid_0 INT, + uuid_1 INT, + creationDate INT, + UNIQUE(uuid_0, uuid_1) +); +CREATE TABLE ga( + groupid INT, + assetid INT, + PRIMARY KEY(groupid, assetid) +); +CREATE TABLE collections( + uuid_0 INT, + uuid_1 INT, + startDate INT, + endDate INT, + title TEXT, + subtitle TEXT, + keyAssetUUID_0 INT, + keyAssetUUID_1 INT, + typeAndNumberOfAssets INT32, + sortDate DOUBLE, + UNIQUE(uuid_0, uuid_1) +); +CREATE TABLE gc( + groupid INT, + collectionid INT, + PRIMARY KEY(groupid, collectionid) +); +CREATE VIRTUAL TABLE prefix USING fts5( + content = 'groups', + normalized_string, + category UNINDEXED, + tokenize = 'PSITokenizer' +); +CREATE TABLE IF NOT EXISTS 'prefix_data'(id INTEGER PRIMARY KEY, block BLOB); +CREATE TABLE IF NOT EXISTS 'prefix_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID; +CREATE TABLE IF NOT EXISTS 'prefix_docsize'(id INTEGER PRIMARY KEY, sz BLOB); +CREATE TABLE IF NOT EXISTS 'prefix_config'(k PRIMARY KEY, v) WITHOUT ROWID; CREATE TABLE lookup(identifier TEXT PRIMARY KEY, category INT2); -CREATE TABLE word_embedding(word TEXT, extended_word TEXT, score DOUBLE); +CREATE TRIGGER trigger_groups_insert +AFTER +INSERT ON groups BEGIN +INSERT INTO prefix(rowid, normalized_string, category) +VALUES (new.rowid, new.normalized_string, new.category); +END; CREATE TRIGGER trigger_groups_delete AFTER DELETE ON groups BEGIN INSERT INTO prefix(prefix, rowid, normalized_string, category) @@ -77,17 +82,14 @@ VALUES( old.category ); END; -CREATE TRIGGER trigger_groups_insert -AFTER -INSERT ON groups BEGIN -INSERT INTO prefix(rowid, normalized_string, category) -VALUES (new.rowid, new.normalized_string, new.category); -END; -CREATE VIRTUAL TABLE prefix USING fts5( - content = 'groups', +CREATE INDEX group_pk ON groups( + category, + content_string, normalized_string, - category UNINDEXED, - tokenize = 'PSITokenizer' + lookup_identifier ); -CREATE VIRTUAL TABLE word_embedding_prefix USING fts5(extended_word) +CREATE INDEX asset_pk ON assets(uuid_0, uuid_1); +CREATE INDEX ga_assetid ON ga(assetid, groupid); +CREATE INDEX collection_pk ON collections(uuid_0, uuid_1); +CREATE INDEX gc_collectionid ON gc(collectionid); ``` \ No newline at end of file