Files
threshold/internal/db/schema/migrations/oss/postgres/1/02_domains.up.sql
T
Timothy Messier 8caaf3e076 refactor(schema): Add support for migration editions
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
2021-10-08 06:50:26 -04:00

59 lines
2.2 KiB
PL/PgSQL

begin;
-- wt_email defines a type for email which must be less than 320 chars and only
-- contain lower case values. The type is defined to allow nulls and not be
-- unique, which can be overriden as needed when used in tables.
create domain wt_email as text
constraint wt_email_too_short
check (length(trim(value)) > 0)
constraint wt_email_too_long
check (length(trim(value)) < 320);
comment on domain wt_email is
'standard column for email addresses';
-- wt_full_name defines a type for a person's full name which must be less than
-- 512 chars. The type is defined to allow nulls and not be unique, which can
-- be overriden as needed when used in tables.
create domain wt_full_name text
constraint wt_full_name_too_short
check (length(trim(value)) > 0)
constraint wt_full_name_too_long
check(length(trim(value)) <= 512); -- gotta pick some upper limit.
comment on domain wt_full_name is
'standard column for the full name of a person';
-- wt_url defines a type for URLs which must be longer that 3 chars and
-- less than 4k chars. It's defined to allow nulls, which can be overridden as
-- needed when used in tables.
create domain wt_url as text
constraint wt_url_too_short
check (length(trim(value)) > 3)
constraint wt_url_too_long
check (length(trim(value)) < 4000)
constraint wt_url_invalid_protocol
check (value ~ 'https?:\/\/*');
comment on domain wt_url is
'standard column for URLs';
-- wt_name defines a type for resource names that must be less than 128 chars.
-- It's defined to allow nulls.
create domain wt_name as text
constraint wt_name_too_short
check (length(trim(value)) > 0)
constraint wt_name_too_long
check (length(trim(value)) < 128);
comment on domain wt_name is
'standard column for resource names';
-- wt_description defines a type for resource descriptions that must be less
-- than 1024 chars. It's defined to allow nulls.
create domain wt_description as text
constraint wt_description_too_short
check (length(trim(value)) > 0)
constraint wt_description_too_long
check (length(trim(value)) < 1024);
comment on domain wt_description is
'standard column for resource descriptions';
commit;