Changeset 0.29.2 (#197)
Co-authored-by: Jeffrey Smith <jasafpro@gmail.com> Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
--
|
||||
-- v0.28.7: packages table + package_user_settings in 012.
|
||||
-- v0.29.0: status column + extension_permissions table.
|
||||
-- v0.29.2: ext_data_tables catalog + platform read views.
|
||||
-- ==========================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS packages (
|
||||
@@ -88,3 +89,39 @@ CREATE INDEX IF NOT EXISTS idx_ext_perm_granted ON extension_permissions(granted
|
||||
COMMENT ON TABLE extension_permissions IS 'Declared permissions from package manifests. Admin grants control runtime module injection.';
|
||||
COMMENT ON COLUMN extension_permissions.permission IS 'Capability key: secrets.read, notifications.send, filters.pre_completion, db.read, db.write, api.http';
|
||||
COMMENT ON COLUMN extension_permissions.granted IS 'Admin has reviewed and approved this capability for the package';
|
||||
|
||||
|
||||
-- =========================================
|
||||
-- EXTENSION DATA TABLES CATALOG
|
||||
-- =========================================
|
||||
-- Tracks namespaced tables created for each extension on install.
|
||||
-- Used by uninstall hooks (DROP TABLE) and db.list_tables().
|
||||
-- Table names stored without the ext_{id}_ prefix.
|
||||
-- v0.29.2: Extension data storage.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ext_data_tables (
|
||||
package_id TEXT NOT NULL REFERENCES packages(id) ON DELETE CASCADE,
|
||||
table_name TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
PRIMARY KEY (package_id, table_name)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_ext_data_tables_pkg ON ext_data_tables(package_id);
|
||||
|
||||
COMMENT ON TABLE ext_data_tables IS 'Catalog of namespaced tables created by extension install hooks. Drives uninstall cleanup and db.list_tables().';
|
||||
COMMENT ON COLUMN ext_data_tables.table_name IS 'Logical name (without ext_{id}_ prefix). Physical table is ext_{package_id}_{table_name}.';
|
||||
|
||||
|
||||
-- =========================================
|
||||
-- PLATFORM VIEWS (extension read access)
|
||||
-- =========================================
|
||||
-- Column-allowlisted views over core platform tables.
|
||||
-- Extensions query these via db.view("users"), db.view("channels").
|
||||
-- Only safe, non-sensitive columns are exposed.
|
||||
-- v0.29.2: Read contract for cross-platform data access.
|
||||
|
||||
CREATE OR REPLACE VIEW ext_view_users AS
|
||||
SELECT id, display_name, email FROM users;
|
||||
|
||||
CREATE OR REPLACE VIEW ext_view_channels AS
|
||||
SELECT id, title, type, team_id FROM channels;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
-- Unified package registry. Replaces surface_registry + extensions.
|
||||
-- v0.28.7: packages + package_user_settings
|
||||
-- v0.29.0: status column + extension_permissions table
|
||||
-- v0.29.2: ext_data_tables catalog + platform read views
|
||||
|
||||
CREATE TABLE IF NOT EXISTS packages (
|
||||
id TEXT PRIMARY KEY,
|
||||
@@ -61,3 +62,28 @@ CREATE TABLE IF NOT EXISTS extension_permissions (
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_ext_perm_package ON extension_permissions(package_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_ext_perm_granted ON extension_permissions(granted);
|
||||
|
||||
|
||||
-- Extension data tables catalog (v0.29.2)
|
||||
-- Tracks namespaced tables created by extension install hooks.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ext_data_tables (
|
||||
package_id TEXT NOT NULL REFERENCES packages(id) ON DELETE CASCADE,
|
||||
table_name TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
PRIMARY KEY (package_id, table_name)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_ext_data_tables_pkg ON ext_data_tables(package_id);
|
||||
|
||||
|
||||
-- Platform views — column-allowlisted read access for extensions (v0.29.2)
|
||||
-- Extensions query these via db.view("users"), db.view("channels").
|
||||
|
||||
DROP VIEW IF EXISTS ext_view_users;
|
||||
CREATE VIEW ext_view_users AS
|
||||
SELECT id, display_name, email FROM users;
|
||||
|
||||
DROP VIEW IF EXISTS ext_view_channels;
|
||||
CREATE VIEW ext_view_channels AS
|
||||
SELECT id, title, type, team_id FROM channels;
|
||||
|
||||
Reference in New Issue
Block a user