CREATE DATABASE ded;
-- Install uuid-ossp extension
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Create the Organisations table.
CREATE TABLE organisations (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Add index to created column.
CREATE INDEX idx_organisations_created ON organisations(created);
-- Let's add some placeholder data to organisations table.
INSERT INTO organisations (name, created) VALUES ('Random Organisation 1', CURRENT_TIMESTAMP);
INSERT INTO organisations (name, created) VALUES ('Random Organisation 2', CURRENT_TIMESTAMP);
INSERT INTO organisations (name, created) VALUES ('Random Organisation 3', CURRENT_TIMESTAMP);
-- Persons!
CREATE TABLE persons (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
first_name VARCHAR(56) NOT NULL,
last_name VARCHAR(56) NOT NULL,
organisation_id INT NOT NULL,
role_name VARCHAR(56) NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_person_organisation
FOREIGN KEY(organisation_id)
REFERENCES organisations(id)
ON DELETE CASCADE
);
-- Add index to created column.
CREATE INDEX idx_persons_created ON persons(created);
-- Add some people
INSERT INTO persons (first_name, last_name, organisation_id, role_name, created) VALUES ('Larry', 'Cluno', 1, 'Lead Inspector', CURRENT_TIMESTAMP);
INSERT INTO persons (first_name, last_name, organisation_id, role_name, created) VALUES ('Olivia', 'Capstan-Melville', 1, 'Lead Inspector', CURRENT_TIMESTAMP);
-- Operations!
CREATE TABLE operations (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description VARCHAR(255) NOT NULL,
organisation_id INT NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_operation_organisation
FOREIGN KEY(organisation_id)
REFERENCES organisations(id)
ON DELETE CASCADE
);
-- Add index to created column.
CREATE INDEX idx_operations_created ON operations(created);
-- Engagement Strategies
CREATE TABLE engagement_strategies (
id SERIAL PRIMARY KEY,
valid_from TIMESTAMP NOT NULL,
valid_to TIMESTAMP NOT NULL,
description VARCHAR(255),
operation_id INT NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_es_operation
FOREIGN KEY(operation_id)
REFERENCES operations(id)
ON DELETE CASCADE
);
CREATE INDEX idx_engagement_strategy_created ON engagement_strategies(created);
-- Create some operations
INSERT INTO operations (name, created, description, organisation_id) VALUES ('Operation 1', CURRENT_TIMESTAMP, 'Operation 1 Description', 1);
INSERT INTO operations (name, created, description, organisation_id) VALUES ('Operation 2', CURRENT_TIMESTAMP, 'Operation 2 Description', 1);
INSERT INTO operations (name, created, description, organisation_id) VALUES ('Operation 3', CURRENT_TIMESTAMP, 'Operation 3 Description', 2);
-- Create some ESs
INSERT INTO engagement_strategies (valid_from, valid_to, operation_id, created) VALUES ('2021-01-01', '2023-01-01', 1, CURRENT_TIMESTAMP);
INSERT INTO engagement_strategies (valid_from, valid_to, operation_id, created) VALUES ('2023-01-01', '2025-01-01', 1, CURRENT_TIMESTAMP);