36 lines
1.1 KiB
PL/PgSQL
36 lines
1.1 KiB
PL/PgSQL
-- terms_notes: default terms & conditions / notes per document type.
|
|
-- One row per type (PO, INVOICE, ...). Idempotent.
|
|
|
|
BEGIN;
|
|
|
|
CREATE TABLE IF NOT EXISTS terms_notes (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
type VARCHAR(30) NOT NULL,
|
|
notes TEXT NOT NULL,
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
|
created_by BIGINT,
|
|
updated_by BIGINT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS terms_notes_type_key ON terms_notes(type);
|
|
|
|
ALTER TABLE terms_notes DROP CONSTRAINT IF EXISTS terms_notes_type_check;
|
|
ALTER TABLE terms_notes
|
|
ADD CONSTRAINT terms_notes_type_check
|
|
CHECK (type IN ('PO', 'INVOICE'));
|
|
|
|
ALTER TABLE terms_notes DROP CONSTRAINT IF EXISTS fk_terms_notes_created_by;
|
|
ALTER TABLE terms_notes
|
|
ADD CONSTRAINT fk_terms_notes_created_by FOREIGN KEY (created_by) REFERENCES users(id);
|
|
ALTER TABLE terms_notes DROP CONSTRAINT IF EXISTS fk_terms_notes_updated_by;
|
|
ALTER TABLE terms_notes
|
|
ADD CONSTRAINT fk_terms_notes_updated_by FOREIGN KEY (updated_by) REFERENCES users(id);
|
|
|
|
COMMIT;
|
|
|
|
-- Verify:
|
|
-- SELECT * FROM terms_notes;
|