Last active
December 16, 2015 17:19
-
-
Save erincandescent/5469240 to your computer and use it in GitHub Desktop.
Package manager schema
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BEGIN TRANSACTION; | |
PRAGMA foreign_keys = OFF; | |
CREATE TABLE manifest ( | |
key TEXT NOT NULL UNIQUE, | |
value TEXT | |
); | |
CREATE UNIQUE INDEX ix_manifest_key ON manifest (key); | |
CREATE TABLE repository ( | |
id INTEGER PRIMARY KEY, | |
type TEXT NOT NULL, | |
name TEXT NOT NULL, | |
path TEXT NOT NULL | |
); | |
CREATE TABLE package ( | |
id SHA1 NOT NULL, | |
name TEXT NOT NULL, | |
host_arch TEXT CHECK(valid_architecture(host_arch)), | |
target_arch TEXT CHECK(valid_architecture(target_arch)), | |
version TEXT NOT NULL COLLATE version, | |
manifest BLOB NOT NULL | |
); | |
CREATE INDEX ix_package ON package | |
(name, version, host_arch, target_arch); | |
CREATE TABLE package_source ( | |
package SHA1 NOT NULL, | |
repository INTEGER NOT NULL, | |
FOREIGN KEY (package) REFERENCES package(id), | |
FOREIGN KEY (repository) REFERENCES repository(id) | |
); | |
CREATE TABLE feature_candidate ( | |
id INTEGER PRIMARY KEY, | |
name TEXT NOT NULL, | |
version TEXT COLLATE version, | |
host_arch TEXT CHECK(valid_architecture(host_arch)), | |
target_arch TEXT CHECK(valid_architecture(target_arch)), | |
package SHA1 NOT NULL, | |
installed BOOL DEFAULT 0, | |
FOREIGN KEY (package) REFERENCES package(id) | |
); | |
CREATE UNIQUE INDEX ix_feature_candidate_package on feature_candidate | |
(name, package, host_arch, target_arch); | |
CREATE TABLE selected_feature ( | |
feature INTEGER NOT NULL UNIQUE, | |
name TEXT NOT NULL, | |
host_arch TEXT CHECK(valid_architecture(host_arch)), | |
target_arch TEXT CHECK(valid_architecture(target_arch)), | |
FOREIGN KEY (feature) REFERENCES feature_candidate(id) | |
); | |
CREATE UNIQUE INDEX ix_selected_feature ON selected_feature (name, host_arch, target_arch); | |
PRAGMA foreign_keys = ON; | |
PRAGMA user_version = 1; | |
COMMIT TRANSACTION; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment