76 lines
2.4 KiB
PL/PgSQL
76 lines
2.4 KiB
PL/PgSQL
begin;
|
|
|
|
/*
|
|
┌──────────────────┐
|
|
│ plugin │
|
|
├──────────────────┤
|
|
│public_id (pk) │
|
|
│scope_id (fk) │
|
|
└──────────────────┘
|
|
┼
|
|
┼
|
|
│
|
|
┼
|
|
┼
|
|
┌──────────────────┐
|
|
│ plugin_host │
|
|
├──────────────────┤
|
|
│public_id (pk) │
|
|
│scope_id (fk) │
|
|
│name │
|
|
│description │
|
|
│version │
|
|
│plugin_name │
|
|
│id_prefix │
|
|
└──────────────────┘
|
|
*/
|
|
create table plugin_host (
|
|
public_id wt_plugin_id primary key,
|
|
scope_id wt_scope_id not null
|
|
-- TODO: Allow plugins to be created in different scopes and
|
|
-- constrain the host-catalog's plugin reference accordingly.
|
|
constraint iam_scope_global_fkey
|
|
references iam_scope_global(scope_id)
|
|
on delete cascade
|
|
on update cascade,
|
|
name wt_name,
|
|
description text,
|
|
create_time wt_timestamp,
|
|
update_time wt_timestamp,
|
|
version wt_version,
|
|
constraint plugin_fkey
|
|
foreign key (scope_id, public_id)
|
|
references plugin(scope_id, public_id)
|
|
on delete cascade
|
|
on update cascade,
|
|
constraint plugin_host_scope_id_name_uq
|
|
unique(scope_id, name)
|
|
);
|
|
|
|
create trigger update_version_column after update on plugin_host
|
|
for each row execute procedure update_version_column();
|
|
|
|
create trigger update_time_column before update on plugin_host
|
|
for each row execute procedure update_time_column();
|
|
|
|
create trigger default_create_time_column before insert on plugin_host
|
|
for each row execute procedure default_create_time();
|
|
|
|
create trigger immutable_columns before update on plugin_host
|
|
for each row execute procedure immutable_columns('public_id', 'create_time');
|
|
|
|
create trigger insert_plugin_subtype before insert on plugin_host
|
|
for each row execute procedure insert_plugin_subtype();
|
|
|
|
create trigger update_plugin_subtype before update on plugin_host
|
|
for each row execute procedure update_plugin_subtype();
|
|
|
|
create trigger delete_plugin_subtype after delete on plugin_host
|
|
for each row execute procedure delete_plugin_subtype();
|
|
|
|
insert into oplog_ticket (name, version)
|
|
values
|
|
('plugin_host', 1);
|
|
|
|
commit;
|