Files
Torsten Grote 0f3f2d6f80 [db] improve search
This now also searches in descriptions, author and package names.
The search also considers all languages now and is insensitive to diacritics in most languages.

The AppMetadataFts needed to be re-created for this to work. A migration and a test for this have been added.
2025-11-04 08:50:50 -03:00

1034 lines
32 KiB
JSON

{
"formatVersion": 1,
"database": {
"version": 9,
"identityHash": "33bf34813c9be51d73151e7f48001ae5",
"entities": [
{
"tableName": "CoreRepository",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `icon` TEXT, `address` TEXT NOT NULL, `webBaseUrl` TEXT, `timestamp` INTEGER NOT NULL, `version` INTEGER, `formatVersion` TEXT, `maxAge` INTEGER, `description` TEXT NOT NULL, `certificate` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT"
},
{
"fieldPath": "address",
"columnName": "address",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "webBaseUrl",
"columnName": "webBaseUrl",
"affinity": "TEXT"
},
{
"fieldPath": "timestamp",
"columnName": "timestamp",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "version",
"columnName": "version",
"affinity": "INTEGER"
},
{
"fieldPath": "formatVersion",
"columnName": "formatVersion",
"affinity": "TEXT"
},
{
"fieldPath": "maxAge",
"columnName": "maxAge",
"affinity": "INTEGER"
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "certificate",
"columnName": "certificate",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"repoId"
]
}
},
{
"tableName": "Mirror",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `url` TEXT NOT NULL, `countryCode` TEXT, PRIMARY KEY(`repoId`, `url`), FOREIGN KEY(`repoId`) REFERENCES `CoreRepository`(`repoId`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "url",
"columnName": "url",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "countryCode",
"columnName": "countryCode",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"url"
]
},
"foreignKeys": [
{
"table": "CoreRepository",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId"
],
"referencedColumns": [
"repoId"
]
}
]
},
{
"tableName": "AntiFeature",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `id` TEXT NOT NULL, `icon` TEXT NOT NULL, `name` TEXT NOT NULL, `description` TEXT NOT NULL, PRIMARY KEY(`repoId`, `id`), FOREIGN KEY(`repoId`) REFERENCES `CoreRepository`(`repoId`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"id"
]
},
"foreignKeys": [
{
"table": "CoreRepository",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId"
],
"referencedColumns": [
"repoId"
]
}
]
},
{
"tableName": "Category",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `id` TEXT NOT NULL, `icon` TEXT NOT NULL, `name` TEXT NOT NULL, `description` TEXT NOT NULL, PRIMARY KEY(`repoId`, `id`), FOREIGN KEY(`repoId`) REFERENCES `CoreRepository`(`repoId`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"id"
]
},
"foreignKeys": [
{
"table": "CoreRepository",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId"
],
"referencedColumns": [
"repoId"
]
}
]
},
{
"tableName": "ReleaseChannel",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `id` TEXT NOT NULL, `icon` TEXT NOT NULL, `name` TEXT NOT NULL, `description` TEXT NOT NULL, PRIMARY KEY(`repoId`, `id`), FOREIGN KEY(`repoId`) REFERENCES `CoreRepository`(`repoId`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"id"
]
},
"foreignKeys": [
{
"table": "CoreRepository",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId"
],
"referencedColumns": [
"repoId"
]
}
]
},
{
"tableName": "RepositoryPreferences",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `weight` INTEGER NOT NULL, `enabled` INTEGER NOT NULL, `lastUpdated` INTEGER, `lastETag` TEXT, `userMirrors` TEXT, `disabledMirrors` TEXT, `username` TEXT, `password` TEXT, PRIMARY KEY(`repoId`))",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "weight",
"columnName": "weight",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "enabled",
"columnName": "enabled",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastUpdated",
"columnName": "lastUpdated",
"affinity": "INTEGER"
},
{
"fieldPath": "lastETag",
"columnName": "lastETag",
"affinity": "TEXT"
},
{
"fieldPath": "userMirrors",
"columnName": "userMirrors",
"affinity": "TEXT"
},
{
"fieldPath": "disabledMirrors",
"columnName": "disabledMirrors",
"affinity": "TEXT"
},
{
"fieldPath": "username",
"columnName": "username",
"affinity": "TEXT"
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId"
]
}
},
{
"tableName": "AppMetadata",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `packageName` TEXT NOT NULL, `added` INTEGER NOT NULL, `lastUpdated` INTEGER NOT NULL, `name` TEXT, `summary` TEXT, `description` TEXT, `localizedName` TEXT, `localizedSummary` TEXT, `webSite` TEXT, `changelog` TEXT, `license` TEXT, `sourceCode` TEXT, `issueTracker` TEXT, `translation` TEXT, `preferredSigner` TEXT, `video` TEXT, `authorName` TEXT, `authorEmail` TEXT, `authorWebSite` TEXT, `authorPhone` TEXT, `donate` TEXT, `liberapayID` TEXT, `liberapay` TEXT, `openCollective` TEXT, `bitcoin` TEXT, `litecoin` TEXT, `flattrID` TEXT, `categories` TEXT, `isCompatible` INTEGER NOT NULL, PRIMARY KEY(`repoId`, `packageName`), FOREIGN KEY(`repoId`) REFERENCES `CoreRepository`(`repoId`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "added",
"columnName": "added",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastUpdated",
"columnName": "lastUpdated",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT"
},
{
"fieldPath": "summary",
"columnName": "summary",
"affinity": "TEXT"
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT"
},
{
"fieldPath": "localizedName",
"columnName": "localizedName",
"affinity": "TEXT"
},
{
"fieldPath": "localizedSummary",
"columnName": "localizedSummary",
"affinity": "TEXT"
},
{
"fieldPath": "webSite",
"columnName": "webSite",
"affinity": "TEXT"
},
{
"fieldPath": "changelog",
"columnName": "changelog",
"affinity": "TEXT"
},
{
"fieldPath": "license",
"columnName": "license",
"affinity": "TEXT"
},
{
"fieldPath": "sourceCode",
"columnName": "sourceCode",
"affinity": "TEXT"
},
{
"fieldPath": "issueTracker",
"columnName": "issueTracker",
"affinity": "TEXT"
},
{
"fieldPath": "translation",
"columnName": "translation",
"affinity": "TEXT"
},
{
"fieldPath": "preferredSigner",
"columnName": "preferredSigner",
"affinity": "TEXT"
},
{
"fieldPath": "video",
"columnName": "video",
"affinity": "TEXT"
},
{
"fieldPath": "authorName",
"columnName": "authorName",
"affinity": "TEXT"
},
{
"fieldPath": "authorEmail",
"columnName": "authorEmail",
"affinity": "TEXT"
},
{
"fieldPath": "authorWebSite",
"columnName": "authorWebSite",
"affinity": "TEXT"
},
{
"fieldPath": "authorPhone",
"columnName": "authorPhone",
"affinity": "TEXT"
},
{
"fieldPath": "donate",
"columnName": "donate",
"affinity": "TEXT"
},
{
"fieldPath": "liberapayID",
"columnName": "liberapayID",
"affinity": "TEXT"
},
{
"fieldPath": "liberapay",
"columnName": "liberapay",
"affinity": "TEXT"
},
{
"fieldPath": "openCollective",
"columnName": "openCollective",
"affinity": "TEXT"
},
{
"fieldPath": "bitcoin",
"columnName": "bitcoin",
"affinity": "TEXT"
},
{
"fieldPath": "litecoin",
"columnName": "litecoin",
"affinity": "TEXT"
},
{
"fieldPath": "flattrID",
"columnName": "flattrID",
"affinity": "TEXT"
},
{
"fieldPath": "categories",
"columnName": "categories",
"affinity": "TEXT"
},
{
"fieldPath": "isCompatible",
"columnName": "isCompatible",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"packageName"
]
},
"foreignKeys": [
{
"table": "CoreRepository",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId"
],
"referencedColumns": [
"repoId"
]
}
]
},
{
"tableName": "AppMetadataFts",
"createSql": "CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`repoId` INTEGER NOT NULL, `name` TEXT, `summary` TEXT, `description` TEXT, `authorName` TEXT, `packageName` TEXT NOT NULL, tokenize=unicode61 `remove_diacritics=1` `separators=.` `tokenchars=-`, content=`AppMetadata`, notindexed=`repoId`)",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT"
},
{
"fieldPath": "summary",
"columnName": "summary",
"affinity": "TEXT"
},
{
"fieldPath": "description",
"columnName": "description",
"affinity": "TEXT"
},
{
"fieldPath": "authorName",
"columnName": "authorName",
"affinity": "TEXT"
},
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": []
},
"ftsVersion": "FTS4",
"ftsOptions": {
"tokenizer": "unicode61",
"tokenizerArgs": [
"remove_diacritics=1",
"separators=.",
"tokenchars=-"
],
"contentTable": "AppMetadata",
"languageIdColumnName": "",
"matchInfo": "FTS4",
"notIndexedColumns": [
"repoId"
],
"prefixSizes": [],
"preferredOrder": "ASC"
},
"contentSyncTriggers": [
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_AppMetadataFts_BEFORE_UPDATE BEFORE UPDATE ON `AppMetadata` BEGIN DELETE FROM `AppMetadataFts` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_AppMetadataFts_BEFORE_DELETE BEFORE DELETE ON `AppMetadata` BEGIN DELETE FROM `AppMetadataFts` WHERE `docid`=OLD.`rowid`; END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_AppMetadataFts_AFTER_UPDATE AFTER UPDATE ON `AppMetadata` BEGIN INSERT INTO `AppMetadataFts`(`docid`, `repoId`, `name`, `summary`, `description`, `authorName`, `packageName`) VALUES (NEW.`rowid`, NEW.`repoId`, NEW.`name`, NEW.`summary`, NEW.`description`, NEW.`authorName`, NEW.`packageName`); END",
"CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_AppMetadataFts_AFTER_INSERT AFTER INSERT ON `AppMetadata` BEGIN INSERT INTO `AppMetadataFts`(`docid`, `repoId`, `name`, `summary`, `description`, `authorName`, `packageName`) VALUES (NEW.`rowid`, NEW.`repoId`, NEW.`name`, NEW.`summary`, NEW.`description`, NEW.`authorName`, NEW.`packageName`); END"
]
},
{
"tableName": "LocalizedFile",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `packageName` TEXT NOT NULL, `type` TEXT NOT NULL, `locale` TEXT NOT NULL, `name` TEXT NOT NULL, `sha256` TEXT, `size` INTEGER, `ipfsCidV1` TEXT, PRIMARY KEY(`repoId`, `packageName`, `type`, `locale`), FOREIGN KEY(`repoId`, `packageName`) REFERENCES `AppMetadata`(`repoId`, `packageName`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "locale",
"columnName": "locale",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sha256",
"columnName": "sha256",
"affinity": "TEXT"
},
{
"fieldPath": "size",
"columnName": "size",
"affinity": "INTEGER"
},
{
"fieldPath": "ipfsCidV1",
"columnName": "ipfsCidV1",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"packageName",
"type",
"locale"
]
},
"foreignKeys": [
{
"table": "AppMetadata",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId",
"packageName"
],
"referencedColumns": [
"repoId",
"packageName"
]
}
]
},
{
"tableName": "LocalizedFileList",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `packageName` TEXT NOT NULL, `type` TEXT NOT NULL, `locale` TEXT NOT NULL, `name` TEXT NOT NULL, `sha256` TEXT, `size` INTEGER, `ipfsCidV1` TEXT, PRIMARY KEY(`repoId`, `packageName`, `type`, `locale`, `name`), FOREIGN KEY(`repoId`, `packageName`) REFERENCES `AppMetadata`(`repoId`, `packageName`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "locale",
"columnName": "locale",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sha256",
"columnName": "sha256",
"affinity": "TEXT"
},
{
"fieldPath": "size",
"columnName": "size",
"affinity": "INTEGER"
},
{
"fieldPath": "ipfsCidV1",
"columnName": "ipfsCidV1",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"packageName",
"type",
"locale",
"name"
]
},
"foreignKeys": [
{
"table": "AppMetadata",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId",
"packageName"
],
"referencedColumns": [
"repoId",
"packageName"
]
}
]
},
{
"tableName": "Version",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `packageName` TEXT NOT NULL, `versionId` TEXT NOT NULL, `added` INTEGER NOT NULL, `releaseChannels` TEXT, `antiFeatures` TEXT, `whatsNew` TEXT, `isCompatible` INTEGER NOT NULL, `file_name` TEXT NOT NULL, `file_sha256` TEXT NOT NULL, `file_size` INTEGER, `file_ipfsCidV1` TEXT, `src_name` TEXT, `src_sha256` TEXT, `src_size` INTEGER, `src_ipfsCidV1` TEXT, `manifest_versionName` TEXT NOT NULL, `manifest_versionCode` INTEGER NOT NULL, `manifest_maxSdkVersion` INTEGER, `manifest_nativecode` TEXT, `manifest_features` TEXT, `manifest_usesSdk_minSdkVersion` INTEGER, `manifest_usesSdk_targetSdkVersion` INTEGER, `manifest_signer_sha256` TEXT, `manifest_signer_hasMultipleSigners` INTEGER, PRIMARY KEY(`repoId`, `packageName`, `versionId`), FOREIGN KEY(`repoId`, `packageName`) REFERENCES `AppMetadata`(`repoId`, `packageName`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "versionId",
"columnName": "versionId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "added",
"columnName": "added",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "releaseChannels",
"columnName": "releaseChannels",
"affinity": "TEXT"
},
{
"fieldPath": "antiFeatures",
"columnName": "antiFeatures",
"affinity": "TEXT"
},
{
"fieldPath": "whatsNew",
"columnName": "whatsNew",
"affinity": "TEXT"
},
{
"fieldPath": "isCompatible",
"columnName": "isCompatible",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "file.name",
"columnName": "file_name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "file.sha256",
"columnName": "file_sha256",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "file.size",
"columnName": "file_size",
"affinity": "INTEGER"
},
{
"fieldPath": "file.ipfsCidV1",
"columnName": "file_ipfsCidV1",
"affinity": "TEXT"
},
{
"fieldPath": "src.name",
"columnName": "src_name",
"affinity": "TEXT"
},
{
"fieldPath": "src.sha256",
"columnName": "src_sha256",
"affinity": "TEXT"
},
{
"fieldPath": "src.size",
"columnName": "src_size",
"affinity": "INTEGER"
},
{
"fieldPath": "src.ipfsCidV1",
"columnName": "src_ipfsCidV1",
"affinity": "TEXT"
},
{
"fieldPath": "manifest.versionName",
"columnName": "manifest_versionName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "manifest.versionCode",
"columnName": "manifest_versionCode",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "manifest.maxSdkVersion",
"columnName": "manifest_maxSdkVersion",
"affinity": "INTEGER"
},
{
"fieldPath": "manifest.nativecode",
"columnName": "manifest_nativecode",
"affinity": "TEXT"
},
{
"fieldPath": "manifest.features",
"columnName": "manifest_features",
"affinity": "TEXT"
},
{
"fieldPath": "manifest.usesSdk.minSdkVersion",
"columnName": "manifest_usesSdk_minSdkVersion",
"affinity": "INTEGER"
},
{
"fieldPath": "manifest.usesSdk.targetSdkVersion",
"columnName": "manifest_usesSdk_targetSdkVersion",
"affinity": "INTEGER"
},
{
"fieldPath": "manifest.signer.sha256",
"columnName": "manifest_signer_sha256",
"affinity": "TEXT"
},
{
"fieldPath": "manifest.signer.hasMultipleSigners",
"columnName": "manifest_signer_hasMultipleSigners",
"affinity": "INTEGER"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"packageName",
"versionId"
]
},
"foreignKeys": [
{
"table": "AppMetadata",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId",
"packageName"
],
"referencedColumns": [
"repoId",
"packageName"
]
}
]
},
{
"tableName": "VersionedString",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`repoId` INTEGER NOT NULL, `packageName` TEXT NOT NULL, `versionId` TEXT NOT NULL, `type` TEXT NOT NULL, `name` TEXT NOT NULL, `version` INTEGER, PRIMARY KEY(`repoId`, `packageName`, `versionId`, `type`, `name`), FOREIGN KEY(`repoId`, `packageName`, `versionId`) REFERENCES `Version`(`repoId`, `packageName`, `versionId`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "repoId",
"columnName": "repoId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "versionId",
"columnName": "versionId",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "version",
"columnName": "version",
"affinity": "INTEGER"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"repoId",
"packageName",
"versionId",
"type",
"name"
]
},
"foreignKeys": [
{
"table": "Version",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"repoId",
"packageName",
"versionId"
],
"referencedColumns": [
"repoId",
"packageName",
"versionId"
]
}
]
},
{
"tableName": "AppPrefs",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`packageName` TEXT NOT NULL, `ignoreVersionCodeUpdate` INTEGER NOT NULL, `preferredRepoId` INTEGER, `appPrefReleaseChannels` TEXT, PRIMARY KEY(`packageName`))",
"fields": [
{
"fieldPath": "packageName",
"columnName": "packageName",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "ignoreVersionCodeUpdate",
"columnName": "ignoreVersionCodeUpdate",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "preferredRepoId",
"columnName": "preferredRepoId",
"affinity": "INTEGER"
},
{
"fieldPath": "appPrefReleaseChannels",
"columnName": "appPrefReleaseChannels",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"packageName"
]
}
}
],
"views": [
{
"viewName": "LocalizedIcon",
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT * FROM LocalizedFile WHERE type='icon'"
},
{
"viewName": "HighestVersion",
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT repoId, packageName, antiFeatures FROM Version\n GROUP BY repoId, packageName HAVING MAX(manifest_versionCode)"
},
{
"viewName": "PreferredRepo",
"createSql": "CREATE VIEW `${VIEW_NAME}` AS SELECT packageName, repoId AS preferredRepoId FROM AppMetadata\n JOIN RepositoryPreferences AS pref USING (repoId)\n LEFT JOIN AppPrefs USING (packageName)\n WHERE pref.enabled = 1 AND (repoId = COALESCE(preferredRepoId, repoId) OR\n NOT EXISTS (SELECT 1 FROM AppMetadata WHERE repoId=AppPrefs.preferredRepoId AND packageName=AppPrefs.packageName)\n )\n GROUP BY packageName HAVING MAX(pref.weight)"
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '33bf34813c9be51d73151e7f48001ae5')"
]
}
}