init push
This commit is contained in:
150
migrations/20260313_contacts_profiles.sql
Normal file
150
migrations/20260313_contacts_profiles.sql
Normal file
@@ -0,0 +1,150 @@
|
||||
-- +goose Up
|
||||
-- HEMS contacts/users module schema extension
|
||||
|
||||
ALTER TABLE roles
|
||||
ADD COLUMN IF NOT EXISTS code VARCHAR(64) NULL,
|
||||
ADD UNIQUE KEY IF NOT EXISTS uq_roles_code (code);
|
||||
|
||||
ALTER TABLE users
|
||||
ADD COLUMN IF NOT EXISTS username VARCHAR(100) NULL,
|
||||
ADD UNIQUE KEY IF NOT EXISTS uq_users_username (username),
|
||||
ADD COLUMN IF NOT EXISTS is_active TINYINT(1) NOT NULL DEFAULT 1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pilot_profiles (
|
||||
user_id BINARY(16) NOT NULL,
|
||||
pilot_category ENUM('regular','freelance','dry_lease') NOT NULL,
|
||||
short_name VARCHAR(120) NULL,
|
||||
license_no VARCHAR(120) NULL,
|
||||
license_issued_at DATETIME NULL,
|
||||
license_expired_at DATETIME NULL,
|
||||
technician_license_no VARCHAR(120) NULL,
|
||||
has_ifr_qualification TINYINT(1) NOT NULL DEFAULT 0,
|
||||
is_chief_pilot TINYINT(1) NOT NULL DEFAULT 0,
|
||||
is_dul TINYINT(1) NOT NULL DEFAULT 0,
|
||||
total_flight_minutes INT NOT NULL DEFAULT 0,
|
||||
responsible_pilot_minutes INT NOT NULL DEFAULT 0,
|
||||
second_pilot_minutes INT NOT NULL DEFAULT 0,
|
||||
double_command_minutes INT NOT NULL DEFAULT 0,
|
||||
flight_instructor_minutes INT NOT NULL DEFAULT 0,
|
||||
night_flight_minutes INT NOT NULL DEFAULT 0,
|
||||
ifr_flight_minutes INT NOT NULL DEFAULT 0,
|
||||
location VARCHAR(255) NULL,
|
||||
postcode VARCHAR(32) NULL,
|
||||
street_line VARCHAR(255) NULL,
|
||||
weight_kg DECIMAL(8,2) NULL,
|
||||
photo_file_id VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
updated_by BINARY(16) NULL,
|
||||
PRIMARY KEY (user_id),
|
||||
KEY idx_pilot_profiles_category (pilot_category),
|
||||
KEY idx_pilot_profiles_license (license_no),
|
||||
CONSTRAINT fk_pilot_profiles_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS doctor_profiles (
|
||||
user_id BINARY(16) NOT NULL,
|
||||
short_name VARCHAR(120) NULL,
|
||||
medical_license_no VARCHAR(120) NULL,
|
||||
license_issued_at DATETIME NULL,
|
||||
license_expired_at DATETIME NULL,
|
||||
specialization VARCHAR(120) NULL,
|
||||
sub_specialization VARCHAR(120) NULL,
|
||||
is_chief_physician TINYINT(1) NOT NULL DEFAULT 0,
|
||||
location VARCHAR(255) NULL,
|
||||
postcode VARCHAR(32) NULL,
|
||||
street_line VARCHAR(255) NULL,
|
||||
photo_file_id VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
updated_by BINARY(16) NULL,
|
||||
PRIMARY KEY (user_id),
|
||||
KEY idx_doctor_profiles_medical_license (medical_license_no),
|
||||
CONSTRAINT fk_doctor_profiles_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS air_rescuer_profiles (
|
||||
user_id BINARY(16) NOT NULL,
|
||||
short_name VARCHAR(120) NULL,
|
||||
is_chief_physician_in_charge TINYINT(1) NOT NULL DEFAULT 0,
|
||||
responsible_flight_rescuer TINYINT(1) NOT NULL DEFAULT 0,
|
||||
location VARCHAR(255) NULL,
|
||||
postcode VARCHAR(32) NULL,
|
||||
street_line VARCHAR(255) NULL,
|
||||
photo_file_id VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
updated_by BINARY(16) NULL,
|
||||
PRIMARY KEY (user_id),
|
||||
CONSTRAINT fk_air_rescuer_profiles_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS technician_profiles (
|
||||
user_id BINARY(16) NOT NULL,
|
||||
short_name VARCHAR(120) NULL,
|
||||
license_no VARCHAR(120) NULL,
|
||||
is_chief_technician TINYINT(1) NOT NULL DEFAULT 0,
|
||||
is_responsible_complaints TINYINT(1) NOT NULL DEFAULT 0,
|
||||
location VARCHAR(255) NULL,
|
||||
postcode VARCHAR(32) NULL,
|
||||
street_line VARCHAR(255) NULL,
|
||||
photo_file_id VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
updated_by BINARY(16) NULL,
|
||||
PRIMARY KEY (user_id),
|
||||
KEY idx_technician_profiles_license (license_no),
|
||||
CONSTRAINT fk_technician_profiles_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS flight_assistant_profiles (
|
||||
user_id BINARY(16) NOT NULL,
|
||||
short_name VARCHAR(120) NULL,
|
||||
location VARCHAR(255) NULL,
|
||||
postcode VARCHAR(32) NULL,
|
||||
street_line VARCHAR(255) NULL,
|
||||
photo_file_id VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
updated_by BINARY(16) NULL,
|
||||
PRIMARY KEY (user_id),
|
||||
CONSTRAINT fk_flight_assistant_profiles_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS staff_profiles (
|
||||
user_id BINARY(16) NOT NULL,
|
||||
short_name VARCHAR(120) NULL,
|
||||
role_label VARCHAR(120) NULL,
|
||||
location VARCHAR(255) NULL,
|
||||
postcode VARCHAR(32) NULL,
|
||||
street_line VARCHAR(255) NULL,
|
||||
photo_file_id VARCHAR(255) NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
created_by BINARY(16) NULL,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
updated_by BINARY(16) NULL,
|
||||
PRIMARY KEY (user_id),
|
||||
CONSTRAINT fk_staff_profiles_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE IF EXISTS staff_profiles;
|
||||
DROP TABLE IF EXISTS flight_assistant_profiles;
|
||||
DROP TABLE IF EXISTS technician_profiles;
|
||||
DROP TABLE IF EXISTS air_rescuer_profiles;
|
||||
DROP TABLE IF EXISTS doctor_profiles;
|
||||
DROP TABLE IF EXISTS pilot_profiles;
|
||||
|
||||
ALTER TABLE users
|
||||
DROP COLUMN IF EXISTS is_active,
|
||||
DROP INDEX IF EXISTS uq_users_username,
|
||||
DROP COLUMN IF EXISTS username;
|
||||
|
||||
ALTER TABLE roles
|
||||
DROP INDEX IF EXISTS uq_roles_code,
|
||||
DROP COLUMN IF EXISTS code;
|
||||
Reference in New Issue
Block a user