/* ---------------------------------------------------------------------- */
/* Domains                                                                */
/* ---------------------------------------------------------------------- */

CREATE DOMAIN TECH_ID AS BIGINT;

CREATE DOMAIN CODE AS VARCHAR(60);

CREATE DOMAIN FILE_PATH AS VARCHAR(1000);

CREATE DOMAIN BOOLEAN_CHAR AS boolean DEFAULT false;

/* ---------------------------------------------------------------------- */
/* Tables                                                                 */
/* ---------------------------------------------------------------------- */

CREATE TABLE CONTAINERS (
  ID bigserial NOT NULL,
  PATH FILE_PATH,
  UNARCHIVING_REQUESTED BOOLEAN_CHAR DEFAULT false,

  UNIQUE (PATH),
  PRIMARY KEY (ID)
);

CREATE TABLE DATA_SETS (
  ID bigserial NOT NULL,
  CODE CODE NOT NULL,
  CTNR_ID TECH_ID NOT NULL,
  SIZE_IN_BYTES BIGINT NOT NULL, 

  PRIMARY KEY (ID),
  UNIQUE (CODE),
  CONSTRAINT FK_DATA_SET_CONTAINERS FOREIGN KEY (CTNR_ID) REFERENCES CONTAINERS (ID) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE INDEX DATA_SETS_CODE_IDX ON DATA_SETS (CODE);