43 lines
2.0 KiB
SQL
43 lines
2.0 KiB
SQL
|
|
CREATE TYPE HASH_TYPE AS ENUM ('SHA256');
|
|
CREATE TYPE SIGNATURE_TYPE AS ENUM ('JWS/JCS');
|
|
|
|
-- DROP TABLE IF EXISTS public.audit CASCADE;
|
|
CREATE TABLE public.audit (
|
|
audit_id BIGSERIAL PRIMARY KEY,
|
|
version SMALLINT NOT NULL,
|
|
event_id UUID,
|
|
agreement_id UUID,
|
|
hash_type HASH_TYPE NOT NULL,
|
|
digest TEXT NOT NULL,
|
|
created BIGINT NOT NULL,
|
|
created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE INDEX idx__public__audit__event_id ON public.audit (event_id);
|
|
CREATE INDEX idx__public__audit__agreement_id ON public.audit (agreement_id);
|
|
CREATE INDEX idx__public__audit__created ON public.audit (created);
|
|
CREATE INDEX idx__public__audit__created_ts ON public.audit (created_ts);
|
|
CREATE INDEX idx__public__audit__updated_ts ON public.audit (updated_ts);
|
|
ALTER TABLE public.audit
|
|
ADD CONSTRAINT cnst__audit__event_or_agreement
|
|
CHECK (num_nonnulls(event_id, agreement_id) = 1);
|
|
|
|
-- DROP TABLE IF EXISTS public.audit_signature CASCADE;
|
|
CREATE TABLE public.audit_signature (
|
|
signature_id BIGSERIAL PRIMARY KEY,
|
|
audit_id BIGINT NOT NULL REFERENCES public.audit(audit_id),
|
|
version SMALLINT NOT NULL,
|
|
id TEXT NOT NULL,
|
|
signedOn BIGINT NOT NULL,
|
|
type SIGNATURE_TYPE NOT NULL,
|
|
jws TEXT NOT NULL,
|
|
created_ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_ts TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE INDEX idx__public__audit_signature__id ON public.audit_signature (id);
|
|
CREATE INDEX idx__public__audit_signature__signedOn ON public.audit_signature (signedOn);
|
|
CREATE INDEX idx__public__audit_signature__type ON public.audit_signature (type);
|
|
CREATE INDEX idx__public__audit_signature__created_ts ON public.audit_signature (created_ts);
|
|
CREATE INDEX idx__public__audit_signature__updated_ts ON public.audit_signature (updated_ts);
|