This refactors the schema package and subpackages to support editions.
An Edition is a collection of sql migrations. A given boundary binary
can have multiple migration editions. The `schema.Manager` is updated to
apply the necessary migrations in the correct order, leveraging an
Edition's priority to determine the order in which the separate Editions
are applied.
The sql migration files are now nested under a directory for the
edition.
This also switches from the generated code to using embed, which
eliminates the need for the `make migrations` target and the generated
code. As such this commit removes the target and generated code.
See:
https://pkg.go.dev/embed
51 lines
1.2 KiB
PL/PgSQL
51 lines
1.2 KiB
PL/PgSQL
begin;
|
|
|
|
-- For now at least the IDs will be the same as the name, because this allows us
|
|
-- to not have to persist some generated ID to worker and controller nodes.
|
|
-- Eventually we may want them to diverge, so we have both here for now.
|
|
|
|
create table server (
|
|
private_id text,
|
|
type text,
|
|
name text not null unique
|
|
constraint server_name_must_not_be_empty
|
|
check(length(trim(name)) > 0),
|
|
description text,
|
|
address text,
|
|
create_time wt_timestamp,
|
|
update_time wt_timestamp,
|
|
primary key (private_id, type)
|
|
);
|
|
|
|
create trigger
|
|
immutable_columns
|
|
before
|
|
update on server
|
|
for each row execute procedure immutable_columns('create_time');
|
|
|
|
create trigger
|
|
default_create_time_column
|
|
before
|
|
insert on server
|
|
for each row execute procedure default_create_time();
|
|
|
|
create table recovery_nonces (
|
|
nonce text
|
|
primary key,
|
|
create_time wt_timestamp
|
|
);
|
|
|
|
create trigger
|
|
default_create_time_column
|
|
before
|
|
insert on recovery_nonces
|
|
for each row execute procedure default_create_time();
|
|
|
|
create trigger
|
|
immutable_columns
|
|
before
|
|
update on recovery_nonces
|
|
for each row execute procedure immutable_columns('nonce', 'create_time');
|
|
|
|
commit;
|