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 new file mode 100644 index 0000000..28a13a5 --- /dev/null +++ b/psi.sqlite-schema-(Photos-7,-Monterey,-macOS-12.0.1).md @@ -0,0 +1,93 @@ +```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 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 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 groups( + category INT2, + owning_groupid INT, + content_string TEXT, + normalized_string TEXT, + lookup_identifier TEXT, + token_ranges_0 INT8, + token_ranges_1 INT8, + UNIQUE( + category, + owning_groupid, + content_string, + lookup_identifier, + token_ranges_0, + token_ranges_1 + ) +); +CREATE TABLE lookup(identifier TEXT PRIMARY KEY, category INT2); +CREATE TABLE word_embedding(word TEXT, extended_word TEXT, score DOUBLE); +CREATE TRIGGER trigger_groups_delete +AFTER DELETE ON groups BEGIN +INSERT INTO prefix(prefix, rowid, normalized_string, category) +VALUES( + 'delete', + old.rowid, + old.normalized_string, + 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', + normalized_string, + category UNINDEXED, + tokenize = 'PSITokenizer' +); +CREATE VIRTUAL TABLE word_embedding_prefix USING fts5(extended_word) +``` \ No newline at end of file