2023-10-17 12:03:56 +02:00
-- Table: public.Message
-- DROP TABLE IF EXISTS public."Message";
CREATE TABLE IF NOT EXISTS public . " Message "
(
id serial NOT NULL ,
person_id integer NOT NULL ,
organization_id integer NOT NULL ,
author_on_behalf_of_organization integer ,
" timestamp " timestamp without time zone NOT NULL ,
2024-02-18 12:03:57 +01:00
content character varying ( 4096 ) NOT NULL ,
sender_type character varying ( 12 ) NOT NULL ,
2023-10-17 12:03:56 +02:00
CONSTRAINT " Message_pkey " PRIMARY KEY ( id ) ,
CONSTRAINT " Message_author_on_behalf_of_company_fkey " FOREIGN KEY ( author_on_behalf_of_organization )
REFERENCES public . " Person " ( id ) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE CASCADE ,
CONSTRAINT " Message_organization_id_fkey " FOREIGN KEY ( organization_id )
REFERENCES public . " Organization " ( id ) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE CASCADE ,
CONSTRAINT " Message_person_id_fkey " FOREIGN KEY ( person_id )
REFERENCES public . " Person " ( id ) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE CASCADE ,
CONSTRAINT " Message_sender_type_check " CHECK ( sender_type : : text = ' ORGANIZATION ' : : text OR sender_type : : text = ' PERSON ' : : text ) ,
CONSTRAINT " Message_sender_constraint " CHECK ( author_on_behalf_of_organization IS NULL AND sender_type : : text = ' PERSON ' : : text OR author_on_behalf_of_organization IS NOT NULL AND sender_type : : text = ' ORGANIZATION ' : : text )
)
TABLESPACE pg_default ;
ALTER TABLE IF EXISTS public . " Message "
OWNER to postgres ;
COMMENT ON COLUMN public . " Message " . sender_type
IS ' sender_type can be either be PERSON or ORGANIZATION, depending who '' s sending the message. It is PERSON if and only if author_on_behalf_of_organization is NULL. It is ORGANIZATION if and only if author_on_behalf_of_organization is NOT NULL. This column may seem redundant if we already know how to identify a sender, but it does give more clarity to the API implementers ' ;
COMMENT ON CONSTRAINT " Message_sender_type_check " ON public . " Message "
IS ' We want the sender to be either PERSON or ORGANIZATION ' ;
COMMENT ON CONSTRAINT " Message_sender_constraint " ON public . " Message "
IS ' If '' author_on_behalf_of_organization '' is NULL, then the sender is a person, instead, if '' author_on_behalf_of_organization '' is not NULL, the sender is a organization ' ;