Co-authored-by: gobha <jasafpro@gmail.com> Co-committed-by: gobha <jasafpro@gmail.com>
32 lines
1.6 KiB
SQL
32 lines
1.6 KiB
SQL
-- ==========================================
|
|
-- Chat Switchboard — 023 Extension Dependencies
|
|
-- ==========================================
|
|
-- v0.38.2: Library package dependency tracking.
|
|
-- Consumers declare which libraries they depend on.
|
|
-- Libraries with active consumers cannot be uninstalled.
|
|
-- ==========================================
|
|
|
|
-- Add 'library' to the packages type constraint.
|
|
ALTER TABLE packages DROP CONSTRAINT IF EXISTS packages_type_check;
|
|
ALTER TABLE packages ADD CONSTRAINT packages_type_check
|
|
CHECK (type IN ('surface', 'extension', 'full', 'workflow', 'library'));
|
|
|
|
CREATE TABLE IF NOT EXISTS ext_dependencies (
|
|
consumer_id TEXT NOT NULL,
|
|
library_id TEXT NOT NULL,
|
|
version_spec TEXT NOT NULL DEFAULT '>=0.0.0',
|
|
resolved_ver TEXT NOT NULL DEFAULT '0.0.0',
|
|
PRIMARY KEY (consumer_id, library_id),
|
|
FOREIGN KEY (consumer_id) REFERENCES packages(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (library_id) REFERENCES packages(id) ON DELETE RESTRICT
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_ext_deps_consumer ON ext_dependencies(consumer_id);
|
|
CREATE INDEX IF NOT EXISTS idx_ext_deps_library ON ext_dependencies(library_id);
|
|
|
|
COMMENT ON TABLE ext_dependencies IS 'v0.38.2: Package dependency graph — consumers → libraries';
|
|
COMMENT ON COLUMN ext_dependencies.consumer_id IS 'Package that depends on the library';
|
|
COMMENT ON COLUMN ext_dependencies.library_id IS 'Library package being depended upon';
|
|
COMMENT ON COLUMN ext_dependencies.version_spec IS 'Semver version spec declared by consumer (e.g. ">=1.0.0")';
|
|
COMMENT ON COLUMN ext_dependencies.resolved_ver IS 'Actual library version at dependency creation time';
|