CREATE TYPE type_airship_package AS ENUM ('Core', 'Cabin', 'Gadget', 'Motif'); CREATE TABLE IF NOT EXISTS airship_package_cache ( packageid BIGSERIAL PRIMARY KEY, packagetype type_airship_package, supplier TEXT, name TEXT, installed BOOLEAN DEFAULT FALSE, current_version TEXT, skyport_metadata JSONB, created TIMESTAMP DEFAULT NOW(), modified TIMESTAMP DEFAULT NOW() ); CREATE INDEX ON airship_package_cache (packagetype); CREATE INDEX ON airship_package_cache (supplier); CREATE INDEX ON airship_package_cache (name); CREATE UNIQUE INDEX ON airship_package_cache(packagetype, supplier, name); CREATE TABLE IF NOT EXISTS airship_package_versions ( versionid BIGSERIAL PRIMARY KEY, package BIGINT REFERENCES airship_package_cache(packageid), version TEXT, checksum TEXT, commithash TEXT, additional_data JSONB, date_released TIMESTAMP, treeupdateid BIGINT REFERENCES airship_tree_updates(treeupdateid), created TIMESTAMP DEFAULT NOW(), modified TIMESTAMP DEFAULT NOW() ); CREATE INDEX ON airship_package_versions (version); CREATE INDEX ON airship_package_versions (checksum); CREATE UNIQUE INDEX ON airship_package_versions (package, version); DROP TRIGGER IF EXISTS update_airship_package_versions_modtime ON airship_package_versions; CREATE TRIGGER update_airship_package_versions_modtime BEFORE UPDATE ON airship_package_versions FOR EACH ROW EXECUTE PROCEDURE update_modtime(); DROP TRIGGER IF EXISTS update_airship_package_cache_modtime ON airship_package_cache; CREATE TRIGGER update_airship_package_cache_modtime BEFORE UPDATE ON airship_package_cache FOR EACH ROW EXECUTE PROCEDURE update_modtime();
|