Files
threshold/internal/db/schema/migrations/oss/postgres/44/04_sessions.up.sql
T
Johan Brandhorst-Satzkorn eb113b5c9e fix(db): Reorder migrations (#2688)
Migration numbers need to be consistent between version upgrades.
The migrations for the key lifecycle management were merged
into v0.11.1 as number 56, but are currently 58 in main.
This reorders them down to 56, fixing an issue when
migrating from 0.11.1 to main.
2022-12-08 13:40:14 -05:00

81 lines
2.7 KiB
PL/PgSQL

begin;
alter table session drop constraint session_scope_id_fkey;
alter table session rename column scope_id to project_id;
alter table session
add constraint iam_scope_project_fkey
foreign key (project_id)
references iam_scope_project (scope_id)
on delete set null
on update cascade
;
-- Replaces trigger from 01/50_session.up.sql
-- Replaced in 56/02_add_data_key_foreign_key_references
create or replace function cancel_session_with_null_fk() returns trigger
as $$
begin
case
when new.user_id is null then
perform cancel_session(new.public_id);
when new.host_id is null then
perform cancel_session(new.public_id);
when new.target_id is null then
perform cancel_session(new.public_id);
when new.host_set_id is null then
perform cancel_session(new.public_id);
when new.auth_token_id is null then
perform cancel_session(new.public_id);
when new.project_id is null then
perform cancel_session(new.public_id);
end case;
return new;
end;
$$ language plpgsql;
-- Replaces trigger from 01/50_session.up.sql
create or replace function insert_session() returns trigger
as $$
begin
case
when new.user_id is null then
raise exception 'user_id is null';
when new.host_id is null then
raise exception 'host_id is null';
when new.target_id is null then
raise exception 'target_id is null';
when new.host_set_id is null then
raise exception 'host_set_id is null';
when new.auth_token_id is null then
raise exception 'auth_token_id is null';
when new.project_id is null then
raise exception 'project_id is null';
when new.endpoint is null then
raise exception 'endpoint is null';
else
end case;
return new;
end;
$$ language plpgsql;
-- Replaces view from 34/04_views.up.sql
-- Replaced in 56/06_add_session_private_key_column
drop view session_list;
create view session_list as
select
s.public_id, s.user_id, s.host_id, s.target_id,
s.host_set_id, s.auth_token_id, s.project_id, s.certificate,s.expiration_time,
s.connection_limit, s.tofu_token, s.key_id, s.termination_reason, s.version,
s.create_time, s.update_time, s.endpoint, s.worker_filter,
ss.state, ss.previous_end_time, ss.start_time, ss.end_time, sc.public_id as connection_id,
sc.client_tcp_address, sc.client_tcp_port, sc.endpoint_tcp_address, sc.endpoint_tcp_port,
sc.bytes_up, sc.bytes_down, sc.closed_reason
from session s
join session_state ss on
s.public_id = ss.session_id
left join session_connection sc on
s.public_id = sc.session_id;
commit;