init push
This commit is contained in:
85
migrations/20260408_crew_related_tables.sql
Normal file
85
migrations/20260408_crew_related_tables.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
-- +goose Up
|
||||
CREATE TABLE IF NOT EXISTS crews (
|
||||
id BINARY(16) PRIMARY KEY,
|
||||
crew_type VARCHAR(32) NOT NULL,
|
||||
user_id BINARY(16) NOT NULL,
|
||||
start_date DATETIME NOT NULL,
|
||||
end_date DATETIME NOT NULL,
|
||||
created_at DATETIME NULL,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NULL,
|
||||
updated_by BINARY(16) NULL,
|
||||
deleted_at DATETIME NULL,
|
||||
deleted_by BINARY(16) NULL,
|
||||
CONSTRAINT chk_crews_crew_type CHECK (crew_type IN ('main', 'additional')),
|
||||
CONSTRAINT chk_crews_date_range CHECK (start_date <= end_date),
|
||||
CONSTRAINT fk_crews_user FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_crews_user_id ON crews(user_id);
|
||||
CREATE INDEX idx_crews_crew_type ON crews(crew_type);
|
||||
CREATE INDEX idx_crews_start_date ON crews(start_date);
|
||||
CREATE INDEX idx_crews_end_date ON crews(end_date);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS roster_crews (
|
||||
id BINARY(16) PRIMARY KEY,
|
||||
roster_id BINARY(16) NOT NULL,
|
||||
crew_id BINARY(16) NOT NULL,
|
||||
confirm_at DATETIME NULL,
|
||||
role VARCHAR(32) NOT NULL,
|
||||
created_at DATETIME NULL,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NULL,
|
||||
updated_by BINARY(16) NULL,
|
||||
deleted_at DATETIME NULL,
|
||||
deleted_by BINARY(16) NULL,
|
||||
CONSTRAINT chk_roster_crews_role CHECK (role IN ('Pilot', 'Copilot', 'Doctor', 'AirRescuer')),
|
||||
CONSTRAINT fk_roster_crews_roster FOREIGN KEY (roster_id) REFERENCES hems_duty_rosters(id),
|
||||
CONSTRAINT fk_roster_crews_crew FOREIGN KEY (crew_id) REFERENCES crews(id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_roster_crews_roster_id ON roster_crews(roster_id);
|
||||
CREATE INDEX idx_roster_crews_role ON roster_crews(role);
|
||||
CREATE UNIQUE INDEX idx_roster_crews_roster_crew ON roster_crews(roster_id, crew_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS duty_roster_other_persons (
|
||||
id BINARY(16) PRIMARY KEY,
|
||||
roster_id BINARY(16) NOT NULL,
|
||||
name VARCHAR(191) NOT NULL,
|
||||
mobile_phone VARCHAR(64) NULL,
|
||||
email VARCHAR(191) NULL,
|
||||
created_at DATETIME NULL,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NULL,
|
||||
updated_by BINARY(16) NULL,
|
||||
deleted_at DATETIME NULL,
|
||||
deleted_by BINARY(16) NULL,
|
||||
CONSTRAINT fk_duty_roster_other_persons_roster FOREIGN KEY (roster_id) REFERENCES hems_duty_rosters(id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_duty_roster_other_persons_roster_id ON duty_roster_other_persons(roster_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS duty_roster_crew_pilot_additionals (
|
||||
id BINARY(16) PRIMARY KEY,
|
||||
crew_id BINARY(16) NOT NULL,
|
||||
flight_instructor TINYINT(1) NOT NULL DEFAULT 0,
|
||||
line_checker TINYINT(1) NOT NULL DEFAULT 0,
|
||||
supervisor TINYINT(1) NOT NULL DEFAULT 0,
|
||||
examiner TINYINT(1) NOT NULL DEFAULT 0,
|
||||
copilot TINYINT(1) NOT NULL DEFAULT 0,
|
||||
created_at DATETIME NULL,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NULL,
|
||||
updated_by BINARY(16) NULL,
|
||||
deleted_at DATETIME NULL,
|
||||
deleted_by BINARY(16) NULL,
|
||||
CONSTRAINT fk_duty_roster_crew_pilot_additionals_crew FOREIGN KEY (crew_id) REFERENCES crews(id)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX idx_duty_roster_crew_pilot_additionals_crew_id ON duty_roster_crew_pilot_additionals(crew_id);
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE IF EXISTS duty_roster_crew_pilot_additionals;
|
||||
DROP TABLE IF EXISTS duty_roster_other_persons;
|
||||
DROP TABLE IF EXISTS roster_crews;
|
||||
DROP TABLE IF EXISTS crews;
|
||||
Reference in New Issue
Block a user