Updated db scripts

This commit is contained in:
2026-01-25 10:49:29 -05:00
parent f9f1593b46
commit 7017c2427c
5 changed files with 102911 additions and 100626 deletions

View File

@@ -14,11 +14,6 @@
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- Dumping database structure for milsim_website_development
CREATE DATABASE IF NOT EXISTS `milsim_website_development` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
USE `milsim_website_development`;
-- Dumping structure for table milsim_website_development.application_comments -- Dumping structure for table milsim_website_development.application_comments
CREATE TABLE IF NOT EXISTS `application_comments` ( CREATE TABLE IF NOT EXISTS `application_comments` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -68,7 +63,7 @@ CREATE TABLE IF NOT EXISTS `arma_maps` (
`map` varchar(50) DEFAULT NULL, `map` varchar(50) DEFAULT NULL,
`name` text DEFAULT NULL, `name` text DEFAULT NULL,
`last_used` datetime DEFAULT NULL, `last_used` datetime DEFAULT NULL,
`deleted` tinyint(4) DEFAULT 0, `deleted` tinyint(1) DEFAULT 0,
`workshop_id` varchar(100) DEFAULT NULL, `workshop_id` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `map` (`map`) USING BTREE UNIQUE KEY `map` (`map`) USING BTREE
@@ -108,18 +103,19 @@ CREATE TABLE IF NOT EXISTS `calendar_events` (
`cancelled` tinyint(1) DEFAULT 0, `cancelled` tinyint(1) DEFAULT 0,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(), `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`full_day` tinyint(4) DEFAULT NULL, `full_day` tinyint(1) DEFAULT NULL,
`guilded_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `guilded_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`guilded_channel_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `guilded_channel_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `fk_creator` (`creator`), KEY `fk_creator` (`creator`),
CONSTRAINT `FK_calendar_events_members` FOREIGN KEY (`creator`) REFERENCES `members` (`id`) ON UPDATE CASCADE CONSTRAINT `FK_calendar_events_members` FOREIGN KEY (`creator`) REFERENCES `members` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3346 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB AUTO_INCREMENT=3361 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Data exporting was unselected. -- Data exporting was unselected.
-- Dumping structure for table milsim_website_development.calendar_events_signups -- Dumping structure for table milsim_website_development.calendar_events_signups
CREATE TABLE IF NOT EXISTS `calendar_events_signups` ( CREATE TABLE IF NOT EXISTS `calendar_events_signups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL, `member_id` int(11) NOT NULL,
`event_id` int(11) NOT NULL, `event_id` int(11) NOT NULL,
`status` enum('not_attending','attending','maybe') COLLATE utf8mb4_unicode_ci NOT NULL, `status` enum('not_attending','attending','maybe') COLLATE utf8mb4_unicode_ci NOT NULL,
@@ -127,12 +123,13 @@ CREATE TABLE IF NOT EXISTS `calendar_events_signups` (
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`guilded_member_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `guilded_member_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`guilded_event_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `guilded_event_id` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`member_id`,`event_id`), PRIMARY KEY (`id`),
UNIQUE KEY `member_id_event_id` (`member_id`,`event_id`),
UNIQUE KEY `guilded_member_id_guilded_event_id` (`guilded_member_id`,`guilded_event_id`), UNIQUE KEY `guilded_member_id_guilded_event_id` (`guilded_member_id`,`guilded_event_id`),
KEY `fk_signup_event` (`event_id`), KEY `fk_signup_event` (`event_id`),
CONSTRAINT `fk_signup_event` FOREIGN KEY (`event_id`) REFERENCES `calendar_events` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_signup_event` FOREIGN KEY (`event_id`) REFERENCES `calendar_events` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_signup_member` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON DELETE CASCADE CONSTRAINT `fk_signup_member` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB AUTO_INCREMENT=99088 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -143,7 +140,7 @@ CREATE TABLE IF NOT EXISTS `course_attendee_roles` (
`description` text DEFAULT NULL, `description` text DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(), `created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) NOT NULL DEFAULT 0, `deleted` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `type` (`name`) USING BTREE UNIQUE KEY `type` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='Changed from course_attendee_type to event_attendee_type'; ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='Changed from course_attendee_type to event_attendee_type';
@@ -152,6 +149,7 @@ CREATE TABLE IF NOT EXISTS `course_attendee_roles` (
-- Dumping structure for table milsim_website_development.course_attendees -- Dumping structure for table milsim_website_development.course_attendees
CREATE TABLE IF NOT EXISTS `course_attendees` ( CREATE TABLE IF NOT EXISTS `course_attendees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`passed_bookwork` tinyint(1) NOT NULL DEFAULT 0, `passed_bookwork` tinyint(1) NOT NULL DEFAULT 0,
`passed_qual` tinyint(1) NOT NULL DEFAULT 0, `passed_qual` tinyint(1) NOT NULL DEFAULT 0,
`attendee_id` int(11) NOT NULL, `attendee_id` int(11) NOT NULL,
@@ -160,15 +158,17 @@ CREATE TABLE IF NOT EXISTS `course_attendees` (
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`remarks` text DEFAULT NULL, `remarks` text DEFAULT NULL,
`expired` tinyint(4) NOT NULL DEFAULT 0, `expired` tinyint(1) NOT NULL DEFAULT 0,
`expired_reason` varchar(50) NOT NULL DEFAULT '0', `expired_reason` tinytext DEFAULT NULL,
PRIMARY KEY (`attendee_id`,`course_event_id`) USING BTREE, `expired_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `attendee_id_course_event_id` (`attendee_id`,`course_event_id`),
KEY `courseInstanceId` (`course_event_id`) USING BTREE, KEY `courseInstanceId` (`course_event_id`) USING BTREE,
KEY `fk_CourseInstancesMembers_CoureseAttendeeType_id` (`attendee_role_id`) USING BTREE, KEY `fk_CourseInstancesMembers_CoureseAttendeeType_id` (`attendee_role_id`) USING BTREE,
CONSTRAINT `fk_course_event_member_coures_attendee_type_id` FOREIGN KEY (`attendee_role_id`) REFERENCES `course_attendee_roles` (`id`) ON UPDATE CASCADE, CONSTRAINT `fk_course_event_member_coures_attendee_type_id` FOREIGN KEY (`attendee_role_id`) REFERENCES `course_attendee_roles` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_course_event_members_coures_event_id` FOREIGN KEY (`course_event_id`) REFERENCES `course_events` (`id`) ON UPDATE CASCADE, CONSTRAINT `fk_course_event_members_coures_event_id` FOREIGN KEY (`course_event_id`) REFERENCES `course_events` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_course_event_members_members_id` FOREIGN KEY (`attendee_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE CONSTRAINT `fk_course_event_members_members_id` FOREIGN KEY (`attendee_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=1736 DEFAULT CHARSET=utf8mb4;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -194,8 +194,8 @@ CREATE TABLE IF NOT EXISTS `course_events` (
`report_url` varchar(2048) DEFAULT NULL, `report_url` varchar(2048) DEFAULT NULL,
`remarks` text DEFAULT NULL, `remarks` text DEFAULT NULL,
`created_by` int(11) DEFAULT NULL, `created_by` int(11) DEFAULT NULL,
`hasBookwork` tinyint(4) DEFAULT NULL, `hasBookwork` tinyint(1) DEFAULT NULL,
`hasQual` tinyint(4) DEFAULT NULL, `hasQual` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `fk_course_events_event_type_id` (`event_type`) USING BTREE, KEY `fk_course_events_event_type_id` (`event_type`) USING BTREE,
KEY `courseId` (`course_id`) USING BTREE, KEY `courseId` (`course_id`) USING BTREE,
@@ -203,7 +203,7 @@ CREATE TABLE IF NOT EXISTS `course_events` (
CONSTRAINT `fk_coures_events_course_id` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON UPDATE CASCADE, CONSTRAINT `fk_coures_events_course_id` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_course_events_created_by` FOREIGN KEY (`created_by`) REFERENCES `members` (`id`), CONSTRAINT `fk_course_events_created_by` FOREIGN KEY (`created_by`) REFERENCES `members` (`id`),
CONSTRAINT `fk_course_events_event_type_id` FOREIGN KEY (`event_type`) REFERENCES `event_types` (`id`) ON UPDATE CASCADE CONSTRAINT `fk_course_events_event_type_id` FOREIGN KEY (`event_type`) REFERENCES `event_types` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=430 DEFAULT CHARSET=utf8mb4;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -214,9 +214,9 @@ CREATE TABLE IF NOT EXISTS `course_qualified_trainers` (
`course_id` int(11) DEFAULT NULL, `course_id` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(), `created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`qualified` tinyint(4) DEFAULT NULL, `qualified` tinyint(1) DEFAULT NULL,
`instance_qualified_id` int(11) DEFAULT NULL, `instance_qualified_id` int(11) DEFAULT NULL,
`deleted` tinyint(4) DEFAULT 0, `deleted` tinyint(1) DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `memberId_courseId` (`member_id`,`course_id`) USING BTREE, UNIQUE KEY `memberId_courseId` (`member_id`,`course_id`) USING BTREE,
KEY `fk_coures_qualified_trainers_coures_id` (`course_id`) USING BTREE, KEY `fk_coures_qualified_trainers_coures_id` (`course_id`) USING BTREE,
@@ -228,6 +228,31 @@ CREATE TABLE IF NOT EXISTS `course_qualified_trainers` (
-- Data exporting was unselected. -- Data exporting was unselected.
-- Dumping structure for table milsim_website_development.course_requests
CREATE TABLE IF NOT EXISTS `course_requests` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`course_id` int(11) DEFAULT NULL COMMENT 'What training is requested',
`requester_id` int(11) DEFAULT NULL COMMENT 'Who Requetsed the training',
`requested_availablity` tinytext DEFAULT NULL COMMENT 'Freeform Request Time Frame',
`aditional_info` tinytext DEFAULT NULL COMMENT 'Aditional info provided by requester',
`request_status` enum('New Request','Awaiting Scheduling','Scheduled','Fulfilled','Did Not Attend','Ignore') DEFAULT NULL COMMENT 'Allow Training Staff to keep track of state of request',
`requested_date` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Date the Request was put in',
`fufilled_by_id` int(11) DEFAULT NULL COMMENT 'Who Fufilled the Request',
`fufilled_date` datetime DEFAULT NULL COMMENT 'What date the request was fufilled',
`request_notes` tinytext DEFAULT NULL COMMENT 'Notes for the Training Staff to put on the request (Internal)',
`created_at` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Database Value',
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Database Value',
PRIMARY KEY (`id`) USING BTREE,
KEY `FK__members` (`requester_id`) USING BTREE,
KEY `FK__courses` (`course_id`) USING BTREE,
KEY `FK__members_2` (`fufilled_by_id`) USING BTREE,
CONSTRAINT `FK__courses` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON UPDATE CASCADE,
CONSTRAINT `FK__members` FOREIGN KEY (`requester_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE,
CONSTRAINT `FK__members_2` FOREIGN KEY (`fufilled_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Contains a list of Course requests that members wish to make.';
-- Data exporting was unselected.
-- Dumping structure for table milsim_website_development.courses -- Dumping structure for table milsim_website_development.courses
CREATE TABLE IF NOT EXISTS `courses` ( CREATE TABLE IF NOT EXISTS `courses` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -238,14 +263,14 @@ CREATE TABLE IF NOT EXISTS `courses` (
`image_url` varchar(255) DEFAULT NULL, `image_url` varchar(255) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) DEFAULT 0, `deleted` tinyint(1) DEFAULT 0,
`prereq_id` int(11) DEFAULT NULL, `prereq_id` int(11) DEFAULT NULL,
`hasBookwork` tinyint(1) NOT NULL DEFAULT 0, `hasBookwork` tinyint(1) NOT NULL DEFAULT 0,
`hasQual` tinyint(1) NOT NULL DEFAULT 0, `hasQual` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`), UNIQUE KEY `name` (`name`),
UNIQUE KEY `shortName` (`short_name`) USING BTREE UNIQUE KEY `shortName` (`short_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8mb4;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -270,7 +295,7 @@ CREATE TABLE IF NOT EXISTS `event_types` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`event_type` varchar(100) DEFAULT NULL, `event_type` varchar(100) DEFAULT NULL,
`event_category` varchar(100) DEFAULT NULL, `event_category` varchar(100) DEFAULT NULL,
`deleted` tinyint(4) NOT NULL DEFAULT 0, `deleted` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
@@ -286,7 +311,7 @@ CREATE TABLE IF NOT EXISTS `guilded_events` (
`event_date` datetime DEFAULT NULL, `event_date` datetime DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(), `created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` int(11) DEFAULT NULL, `deleted` tinyint(1) DEFAULT NULL,
`url` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `url` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `calendar_id_event_id` (`channel_id`,`event_id`) USING BTREE UNIQUE KEY `calendar_id_event_id` (`channel_id`,`event_id`) USING BTREE
@@ -305,11 +330,11 @@ CREATE TABLE IF NOT EXISTS `leave_of_absences` (
`type_id` int(11) DEFAULT NULL, `type_id` int(11) DEFAULT NULL,
`reason` text DEFAULT NULL COMMENT 'Reason a person has put in the LOA', `reason` text DEFAULT NULL COMMENT 'Reason a person has put in the LOA',
`created_by_id` int(11) DEFAULT NULL, `created_by_id` int(11) DEFAULT NULL,
`deleted` tinyint(4) NOT NULL DEFAULT 0, `deleted` tinyint(1) NOT NULL DEFAULT 0,
`expired` tinyint(4) DEFAULT NULL COMMENT 'If a LOA is Expired or not', `expired` tinyint(1) DEFAULT NULL COMMENT 'If a LOA is Expired or not',
`closed_by` int(11) DEFAULT NULL COMMENT 'Who Closed the LOA if it was manually Closed', `closed_by` int(11) DEFAULT NULL COMMENT 'Who Closed the LOA if it was manually Closed',
`ended_at` date DEFAULT NULL, `ended_at` date DEFAULT NULL,
`closed` tinyint(4) DEFAULT NULL COMMENT 'If a LOA was closed early or ', `closed` tinyint(1) DEFAULT NULL COMMENT 'If a LOA was closed early or ',
`created_at` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Database Record Creation Date', `created_at` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Database Record Creation Date',
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Database Record Modified Date', `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Database Record Modified Date',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
@@ -319,7 +344,7 @@ CREATE TABLE IF NOT EXISTS `leave_of_absences` (
CONSTRAINT `FK_leave_of_absences_leave_of_absences_types` FOREIGN KEY (`type_id`) REFERENCES `leave_of_absences_types` (`id`) ON UPDATE CASCADE, CONSTRAINT `FK_leave_of_absences_leave_of_absences_types` FOREIGN KEY (`type_id`) REFERENCES `leave_of_absences_types` (`id`) ON UPDATE CASCADE,
CONSTRAINT `c` FOREIGN KEY (`created_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE, CONSTRAINT `c` FOREIGN KEY (`created_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_leave_of_absesnse_members_id` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE CONSTRAINT `fk_leave_of_absesnse_members_id` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -328,7 +353,7 @@ CREATE TABLE IF NOT EXISTS `leave_of_absences_types` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`max_length_days` int(11) NOT NULL DEFAULT 0, `max_length_days` int(11) NOT NULL DEFAULT 0,
`extendable` tinyint(4) NOT NULL DEFAULT 0, `extendable` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`) UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -351,11 +376,11 @@ CREATE TABLE IF NOT EXISTS `members` (
`aliases` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`aliases`)), `aliases` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`aliases`)),
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) DEFAULT NULL, `deleted` tinyint(1) DEFAULT NULL,
`remarks` text DEFAULT NULL, `remarks` text DEFAULT NULL,
`authentik_sub` varchar(255) DEFAULT NULL, `authentik_sub` varchar(255) DEFAULT NULL,
`authentik_issuer` varchar(255) DEFAULT NULL, `authentik_issuer` varchar(255) DEFAULT NULL,
`state` enum('guest','applicant','member','retired','banned','denied') NOT NULL DEFAULT 'member', `state` enum('guest','applicant','member','retired','banned','denied') NOT NULL DEFAULT 'guest',
`displayName` varchar(50) DEFAULT NULL, `displayName` varchar(50) DEFAULT NULL,
`last_activity` datetime DEFAULT NULL, `last_activity` datetime DEFAULT NULL,
`last_login` datetime DEFAULT NULL, `last_login` datetime DEFAULT NULL,
@@ -365,7 +390,7 @@ CREATE TABLE IF NOT EXISTS `members` (
UNIQUE KEY `discordId` (`discord_id`) USING BTREE, UNIQUE KEY `discordId` (`discord_id`) USING BTREE,
UNIQUE KEY `guilded_id` (`guilded_id`), UNIQUE KEY `guilded_id` (`guilded_id`),
UNIQUE KEY `uk_authentik_identity` (`authentik_issuer`,`authentik_sub`) UNIQUE KEY `uk_authentik_identity` (`authentik_issuer`,`authentik_sub`)
) ENGINE=InnoDB AUTO_INCREMENT=3349 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=3362 DEFAULT CHARSET=utf8mb4;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -394,7 +419,7 @@ CREATE TABLE IF NOT EXISTS `members_qualifications` (
`event_date` datetime DEFAULT NULL, `event_date` datetime DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(), `created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) DEFAULT NULL, `deleted` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `fk_members_qualifications_member_id` (`member_id`), KEY `fk_members_qualifications_member_id` (`member_id`),
KEY `fk_members_qualifications_qualifications_id` (`qualification_id`), KEY `fk_members_qualifications_qualifications_id` (`qualification_id`),
@@ -412,10 +437,14 @@ CREATE TABLE IF NOT EXISTS `members_ranks` (
`authorized_by_id` int(11) DEFAULT NULL, `authorized_by_id` int(11) DEFAULT NULL,
`created_by_id` int(11) DEFAULT NULL, `created_by_id` int(11) DEFAULT NULL,
`reason` varchar(50) DEFAULT NULL, `reason` varchar(50) DEFAULT NULL,
`start_date` datetime NOT NULL DEFAULT current_timestamp(), `start_date_og` datetime DEFAULT NULL,
`end_date` datetime DEFAULT NULL, `start_date` date DEFAULT NULL,
`end_date_og` datetime DEFAULT NULL,
`end_date` date DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`created_at_ts` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`batch` varchar(36) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `fk_members_ranks_members_id` (`member_id`), KEY `fk_members_ranks_members_id` (`member_id`),
KEY `fk_members_ranks_rank_id` (`rank_id`), KEY `fk_members_ranks_rank_id` (`rank_id`),
@@ -425,19 +454,21 @@ CREATE TABLE IF NOT EXISTS `members_ranks` (
CONSTRAINT `FK_members_ranks_members_2` FOREIGN KEY (`authorized_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE, CONSTRAINT `FK_members_ranks_members_2` FOREIGN KEY (`authorized_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE,
CONSTRAINT `FK_members_ranks_members_3` FOREIGN KEY (`created_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE, CONSTRAINT `FK_members_ranks_members_3` FOREIGN KEY (`created_by_id`) REFERENCES `members` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_members_ranks_rank_id` FOREIGN KEY (`rank_id`) REFERENCES `ranks` (`id`) ON UPDATE CASCADE CONSTRAINT `fk_members_ranks_rank_id` FOREIGN KEY (`rank_id`) REFERENCES `ranks` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8mb4;
-- Data exporting was unselected. -- Data exporting was unselected.
-- Dumping structure for table milsim_website_development.members_roles -- Dumping structure for table milsim_website_development.members_roles
CREATE TABLE IF NOT EXISTS `members_roles` ( CREATE TABLE IF NOT EXISTS `members_roles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL, `member_id` int(11) NOT NULL,
`role_id` int(11) NOT NULL, `role_id` int(11) NOT NULL,
PRIMARY KEY (`member_id`,`role_id`), PRIMARY KEY (`id`),
UNIQUE KEY `member_id_role_id` (`member_id`,`role_id`),
KEY `role_id` (`role_id`), KEY `role_id` (`role_id`),
CONSTRAINT `members_roles_ibfk_1` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON DELETE CASCADE, CONSTRAINT `members_roles_ibfk_1` FOREIGN KEY (`member_id`) REFERENCES `members` (`id`) ON DELETE CASCADE,
CONSTRAINT `members_roles_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE CONSTRAINT `members_roles_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Data exporting was unselected. -- Data exporting was unselected.
@@ -449,8 +480,10 @@ CREATE TABLE IF NOT EXISTS `members_statuses` (
`authorized_by_id` int(11) DEFAULT NULL, `authorized_by_id` int(11) DEFAULT NULL,
`created_by_id` int(11) DEFAULT NULL, `created_by_id` int(11) DEFAULT NULL,
`reason` varchar(50) DEFAULT NULL, `reason` varchar(50) DEFAULT NULL,
`start_date` datetime NOT NULL DEFAULT current_timestamp(), `start_date_og` datetime DEFAULT NULL,
`end_date` datetime DEFAULT NULL, `start_date` date DEFAULT NULL,
`end_date_og` datetime DEFAULT NULL,
`end_date` date DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
@@ -474,10 +507,12 @@ CREATE TABLE IF NOT EXISTS `members_unit` (
`authorized_by_id` int(11) NOT NULL, `authorized_by_id` int(11) NOT NULL,
`created_by_id` int(11) NOT NULL, `created_by_id` int(11) NOT NULL,
`reason` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `reason` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`start_date` datetime NOT NULL DEFAULT current_timestamp(), `start_date_og` datetime DEFAULT NULL,
`end_date` datetime DEFAULT NULL, `start_date` date DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(), `end_date_og` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `end_date` date DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `FK_members_unit_units` (`unit_id`), KEY `FK_members_unit_units` (`unit_id`),
KEY `FK_members_unit_members` (`member_id`), KEY `FK_members_unit_members` (`member_id`),
@@ -497,7 +532,7 @@ CREATE TABLE IF NOT EXISTS `mission_attendee_roles` (
`name` varchar(50) DEFAULT NULL, `name` varchar(50) DEFAULT NULL,
`short_name` varchar(50) DEFAULT NULL, `short_name` varchar(50) DEFAULT NULL,
`description` text DEFAULT NULL, `description` text DEFAULT NULL,
`deleted` tinyint(4) NOT NULL DEFAULT 0, `deleted` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `role_name` (`name`) USING BTREE UNIQUE KEY `role_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -536,7 +571,7 @@ CREATE TABLE IF NOT EXISTS `mission_events` (
`guilded_event_id` int(11) DEFAULT NULL, `guilded_event_id` int(11) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) DEFAULT 0, `deleted` tinyint(1) DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `event_name` (`event_name`), UNIQUE KEY `event_name` (`event_name`),
KEY `fk_events_author_member_id` (`author_id`) USING BTREE, KEY `fk_events_author_member_id` (`author_id`) USING BTREE,
@@ -561,7 +596,7 @@ CREATE TABLE IF NOT EXISTS `qualifications` (
`created_at` datetime DEFAULT current_timestamp(), `created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`image_url` varchar(250) DEFAULT NULL, `image_url` varchar(250) DEFAULT NULL,
`deleted` tinytext DEFAULT '0', `deleted` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `name` (`name`) USING BTREE UNIQUE KEY `name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Contains a list of Member Qualifications for the unit.'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Contains a list of Member Qualifications for the unit.';
@@ -618,38 +653,6 @@ CREATE TABLE IF NOT EXISTS `site_config` (
CONSTRAINT `FK_site_config_units` FOREIGN KEY (`application_unit_on_accept`) REFERENCES `units` (`id`) ON UPDATE CASCADE CONSTRAINT `FK_site_config_units` FOREIGN KEY (`application_unit_on_accept`) REFERENCES `units` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Data exporting was unselected.
-- Dumping structure for procedure milsim_website_development.sp_accept_new_recruit_validation
DELIMITER //
//
DELIMITER ;
-- Dumping structure for procedure milsim_website_development.sp_GetCalendarEventSignups
DELIMITER //
//
DELIMITER ;
-- Dumping structure for procedure milsim_website_development.sp_manual_update_report
DELIMITER //
//
DELIMITER ;
-- Dumping structure for procedure milsim_website_development.sp_update_member_rank
DELIMITER //
//
DELIMITER ;
-- Dumping structure for procedure milsim_website_development.sp_update_member_status
DELIMITER //
//
DELIMITER ;
-- Dumping structure for procedure milsim_website_development.sp_update_member_unit
DELIMITER //
//
DELIMITER ;
-- Dumping structure for table milsim_website_development.status_change_requests -- Dumping structure for table milsim_website_development.status_change_requests
CREATE TABLE IF NOT EXISTS `status_change_requests` ( CREATE TABLE IF NOT EXISTS `status_change_requests` (
`id` int(11) NOT NULL, `id` int(11) NOT NULL,
@@ -685,7 +688,7 @@ CREATE TABLE IF NOT EXISTS `statuses` (
`name` varchar(100) NOT NULL, `name` varchar(100) NOT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(), `created_at` datetime NOT NULL DEFAULT current_timestamp(),
`updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) DEFAULT 0, `deleted` tinyint(1) DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`) UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;
@@ -698,7 +701,7 @@ CREATE TABLE IF NOT EXISTS `statuses_reasons` (
`name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(), `created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`deleted` tinyint(4) DEFAULT 0, `deleted` tinyint(1) DEFAULT 0,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`) UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Contains a list of Reasons that a Status Change occured. This helps determine Promotions, Demotions, Transfers, Joins, Leaves.'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Contains a list of Reasons that a Status Change occured. This helps determine Promotions, Demotions, Transfers, Joins, Leaves.';
@@ -712,7 +715,7 @@ CREATE TABLE IF NOT EXISTS `units` (
`type` enum('Company','Status','External') DEFAULT NULL, `type` enum('Company','Status','External') DEFAULT NULL,
`is_internal` tinyint(4) NOT NULL, `is_internal` tinyint(4) NOT NULL,
`description` text DEFAULT NULL, `description` text DEFAULT NULL,
`active` tinyint(4) NOT NULL DEFAULT 1, `active` tinyint(1) NOT NULL DEFAULT 1,
`color` varchar(10) DEFAULT NULL, `color` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
@@ -725,9 +728,9 @@ CREATE TABLE `view_member_latest_info` (
`member_id` INT(11) NOT NULL, `member_id` INT(11) NOT NULL,
`member_name` VARCHAR(1) NOT NULL COLLATE 'utf8mb4_general_ci', `member_name` VARCHAR(1) NOT NULL COLLATE 'utf8mb4_general_ci',
`rank` LONGTEXT NULL COLLATE 'utf8mb4_general_ci', `rank` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
`rank_date` DATETIME NULL, `rank_date` DATE NULL,
`status` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci', `status` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci',
`status_date` DATETIME NULL `status_date` DATE NULL
); );
-- Dumping structure for view milsim_website_development.view_member_rank_status_all -- Dumping structure for view milsim_website_development.view_member_rank_status_all
@@ -736,9 +739,9 @@ CREATE TABLE `view_member_rank_status_all` (
`member_id` INT(11) NOT NULL, `member_id` INT(11) NOT NULL,
`member_name` VARCHAR(1) NOT NULL COLLATE 'utf8mb4_general_ci', `member_name` VARCHAR(1) NOT NULL COLLATE 'utf8mb4_general_ci',
`rank` LONGTEXT NULL COLLATE 'utf8mb4_general_ci', `rank` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
`rank_date` DATETIME NULL, `rank_date` DATE NULL,
`status` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci', `status` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci',
`status_date` DATETIME NULL `status_date` DATE NULL
); );
-- Dumping structure for view milsim_website_development.view_member_rank_unit_status_latest -- Dumping structure for view milsim_website_development.view_member_rank_unit_status_latest
@@ -748,11 +751,12 @@ CREATE TABLE `view_member_rank_unit_status_latest` (
`member_name` VARCHAR(1) NOT NULL COLLATE 'utf8mb4_general_ci', `member_name` VARCHAR(1) NOT NULL COLLATE 'utf8mb4_general_ci',
`displayName` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci', `displayName` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci',
`rank` LONGTEXT NULL COLLATE 'utf8mb4_general_ci', `rank` LONGTEXT NULL COLLATE 'utf8mb4_general_ci',
`rank_date` DATETIME NULL, `rank_abv` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci',
`status` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci', `rank_date` DATE NULL,
`status_date` DATETIME NULL,
`unit` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci', `unit` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci',
`unit_date` DATETIME NULL, `unit_date` DATE NULL,
`status` VARCHAR(1) NULL COLLATE 'utf8mb4_general_ci',
`status_date` DATE NULL,
`loa_until` DATE NULL `loa_until` DATE NULL
); );
@@ -765,22 +769,22 @@ CREATE TABLE `view_member_settings` (
-- Removing temporary table and create final VIEW structure -- Removing temporary table and create final VIEW structure
DROP TABLE IF EXISTS `view_member_latest_info`; DROP TABLE IF EXISTS `view_member_latest_info`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `view_member_latest_info` AS select `m`.`id` AS `member_id`,`m`.`name` AS `member_name`,`r`.`name` AS `rank`,`mr`.`start_date` AS `rank_date`,`s`.`name` AS `status`,`ms`.`start_date` AS `status_date` from ((((`milsim_website_development`.`members` `m` left join (select `mr`.`id` AS `id`,`mr`.`member_id` AS `member_id`,`mr`.`rank_id` AS `rank_id`,`mr`.`start_date` AS `start_date`,`mr`.`created_at` AS `created_at`,`mr`.`updated_at` AS `updated_at` from ((`milsim_website_development`.`members_ranks` `mr` join (select `milsim_website_development`.`members_ranks`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_ranks`.`start_date`) AS `max_date` from `milsim_website_development`.`members_ranks` group by `milsim_website_development`.`members_ranks`.`member_id`) `lr` on(`lr`.`member_id` = `mr`.`member_id` and `lr`.`max_date` = `mr`.`start_date`)) join (select `milsim_website_development`.`members_ranks`.`member_id` AS `member_id`,`milsim_website_development`.`members_ranks`.`start_date` AS `start_date`,max(`milsim_website_development`.`members_ranks`.`id`) AS `max_id` from `milsim_website_development`.`members_ranks` group by `milsim_website_development`.`members_ranks`.`member_id`,`milsim_website_development`.`members_ranks`.`start_date`) `lr2` on(`lr2`.`member_id` = `mr`.`member_id` and `lr2`.`start_date` = `mr`.`start_date` and `lr2`.`max_id` = `mr`.`id`))) `mr` on(`mr`.`member_id` = `m`.`id`)) left join `milsim_website_development`.`ranks` `r` on(`r`.`id` = `mr`.`rank_id`)) left join (select `ms`.`id` AS `id`,`ms`.`member_id` AS `member_id`,`ms`.`status_id` AS `status_id`,`ms`.`start_date` AS `start_date`,`ms`.`created_at` AS `created_at`,`ms`.`updated_at` AS `updated_at` from ((`milsim_website_development`.`members_statuses` `ms` join (select `milsim_website_development`.`members_statuses`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_statuses`.`start_date`) AS `max_date` from `milsim_website_development`.`members_statuses` group by `milsim_website_development`.`members_statuses`.`member_id`) `ls` on(`ls`.`member_id` = `ms`.`member_id` and `ls`.`max_date` = `ms`.`start_date`)) join (select `milsim_website_development`.`members_statuses`.`member_id` AS `member_id`,`milsim_website_development`.`members_statuses`.`start_date` AS `start_date`,max(`milsim_website_development`.`members_statuses`.`id`) AS `max_id` from `milsim_website_development`.`members_statuses` group by `milsim_website_development`.`members_statuses`.`member_id`,`milsim_website_development`.`members_statuses`.`start_date`) `ls2` on(`ls2`.`member_id` = `ms`.`member_id` and `ls2`.`start_date` = `ms`.`start_date` and `ls2`.`max_id` = `ms`.`id`))) `ms` on(`ms`.`member_id` = `m`.`id`)) left join `milsim_website_development`.`statuses` `s` on(`s`.`id` = `ms`.`status_id`)) CREATE VIEW `view_member_latest_info` AS select `m`.`id` AS `member_id`,`m`.`name` AS `member_name`,`r`.`name` AS `rank`,`mr`.`start_date` AS `rank_date`,`s`.`name` AS `status`,`ms`.`start_date` AS `status_date` from ((((`members` `m` left join (select `mr`.`id` AS `id`,`mr`.`member_id` AS `member_id`,`mr`.`rank_id` AS `rank_id`,`mr`.`start_date` AS `start_date`,`mr`.`created_at` AS `created_at`,`mr`.`updated_at` AS `updated_at` from ((`members_ranks` `mr` join (select `members_ranks`.`member_id` AS `member_id`,max(`members_ranks`.`start_date`) AS `max_date` from `members_ranks` group by `members_ranks`.`member_id`) `lr` on(`lr`.`member_id` = `mr`.`member_id` and `lr`.`max_date` = `mr`.`start_date`)) join (select `members_ranks`.`member_id` AS `member_id`,`members_ranks`.`start_date` AS `start_date`,max(`members_ranks`.`id`) AS `max_id` from `members_ranks` group by `members_ranks`.`member_id`,`members_ranks`.`start_date`) `lr2` on(`lr2`.`member_id` = `mr`.`member_id` and `lr2`.`start_date` = `mr`.`start_date` and `lr2`.`max_id` = `mr`.`id`))) `mr` on(`mr`.`member_id` = `m`.`id`)) left join `ranks` `r` on(`r`.`id` = `mr`.`rank_id`)) left join (select `ms`.`id` AS `id`,`ms`.`member_id` AS `member_id`,`ms`.`status_id` AS `status_id`,`ms`.`start_date` AS `start_date`,`ms`.`created_at` AS `created_at`,`ms`.`updated_at` AS `updated_at` from ((`members_statuses` `ms` join (select `members_statuses`.`member_id` AS `member_id`,max(`members_statuses`.`start_date`) AS `max_date` from `members_statuses` group by `members_statuses`.`member_id`) `ls` on(`ls`.`member_id` = `ms`.`member_id` and `ls`.`max_date` = `ms`.`start_date`)) join (select `members_statuses`.`member_id` AS `member_id`,`members_statuses`.`start_date` AS `start_date`,max(`members_statuses`.`id`) AS `max_id` from `members_statuses` group by `members_statuses`.`member_id`,`members_statuses`.`start_date`) `ls2` on(`ls2`.`member_id` = `ms`.`member_id` and `ls2`.`start_date` = `ms`.`start_date` and `ls2`.`max_id` = `ms`.`id`))) `ms` on(`ms`.`member_id` = `m`.`id`)) left join `statuses` `s` on(`s`.`id` = `ms`.`status_id`))
; ;
-- Removing temporary table and create final VIEW structure -- Removing temporary table and create final VIEW structure
DROP TABLE IF EXISTS `view_member_rank_status_all`; DROP TABLE IF EXISTS `view_member_rank_status_all`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `view_member_rank_status_all` AS select `milsim_website_development`.`members`.`id` AS `member_id`,`milsim_website_development`.`members`.`name` AS `member_name`,`milsim_website_development`.`ranks`.`name` AS `rank`,`members_ranks`.`start_date` AS `rank_date`,`milsim_website_development`.`statuses`.`name` AS `status`,`members_statuses`.`start_date` AS `status_date` from ((((`milsim_website_development`.`members` left join (select `mr`.`id` AS `id`,`mr`.`member_id` AS `member_id`,`mr`.`rank_id` AS `rank_id`,`mr`.`start_date` AS `start_date`,`mr`.`created_at` AS `created_at`,`mr`.`updated_at` AS `updated_at` from (`milsim_website_development`.`members_ranks` `mr` join (select `milsim_website_development`.`members_ranks`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_ranks`.`start_date`) AS `max_rank_date` from `milsim_website_development`.`members_ranks` group by `milsim_website_development`.`members_ranks`.`member_id`) `latest_ranks` on(`mr`.`member_id` = `latest_ranks`.`member_id` and `mr`.`start_date` = `latest_ranks`.`max_rank_date`))) `members_ranks` on(`milsim_website_development`.`members`.`id` = `members_ranks`.`member_id`)) left join (select `ms`.`id` AS `id`,`ms`.`member_id` AS `member_id`,`ms`.`status_id` AS `status_id`,`ms`.`start_date` AS `start_date`,`ms`.`created_at` AS `created_at`,`ms`.`updated_at` AS `updated_at` from (`milsim_website_development`.`members_statuses` `ms` join (select `milsim_website_development`.`members_statuses`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_statuses`.`start_date`) AS `max_status_date` from `milsim_website_development`.`members_statuses` group by `milsim_website_development`.`members_statuses`.`member_id`) `latest_statuses` on(`ms`.`member_id` = `latest_statuses`.`member_id` and `ms`.`start_date` = `latest_statuses`.`max_status_date`))) `members_statuses` on(`milsim_website_development`.`members`.`id` = `members_statuses`.`member_id`)) left join `milsim_website_development`.`ranks` on(`members_ranks`.`rank_id` = `milsim_website_development`.`ranks`.`id`)) left join `milsim_website_development`.`statuses` on(`members_statuses`.`status_id` = `milsim_website_development`.`statuses`.`id`)) CREATE VIEW `view_member_rank_status_all` AS select `members`.`id` AS `member_id`,`members`.`name` AS `member_name`,`ranks`.`name` AS `rank`,`members_ranks`.`start_date` AS `rank_date`,`statuses`.`name` AS `status`,`members_statuses`.`start_date` AS `status_date` from ((((`members` left join (select `mr`.`id` AS `id`,`mr`.`member_id` AS `member_id`,`mr`.`rank_id` AS `rank_id`,`mr`.`start_date` AS `start_date`,`mr`.`created_at` AS `created_at`,`mr`.`updated_at` AS `updated_at` from (`members_ranks` `mr` join (select `members_ranks`.`member_id` AS `member_id`,max(`members_ranks`.`start_date`) AS `max_rank_date` from `members_ranks` group by `members_ranks`.`member_id`) `latest_ranks` on(`mr`.`member_id` = `latest_ranks`.`member_id` and `mr`.`start_date` = `latest_ranks`.`max_rank_date`))) `members_ranks` on(`members`.`id` = `members_ranks`.`member_id`)) left join (select `ms`.`id` AS `id`,`ms`.`member_id` AS `member_id`,`ms`.`status_id` AS `status_id`,`ms`.`start_date` AS `start_date`,`ms`.`created_at` AS `created_at`,`ms`.`updated_at` AS `updated_at` from (`members_statuses` `ms` join (select `members_statuses`.`member_id` AS `member_id`,max(`members_statuses`.`start_date`) AS `max_status_date` from `members_statuses` group by `members_statuses`.`member_id`) `latest_statuses` on(`ms`.`member_id` = `latest_statuses`.`member_id` and `ms`.`start_date` = `latest_statuses`.`max_status_date`))) `members_statuses` on(`members`.`id` = `members_statuses`.`member_id`)) left join `ranks` on(`members_ranks`.`rank_id` = `ranks`.`id`)) left join `statuses` on(`members_statuses`.`status_id` = `statuses`.`id`))
; ;
-- Removing temporary table and create final VIEW structure -- Removing temporary table and create final VIEW structure
DROP TABLE IF EXISTS `view_member_rank_unit_status_latest`; DROP TABLE IF EXISTS `view_member_rank_unit_status_latest`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `view_member_rank_unit_status_latest` AS select `m`.`id` AS `member_id`,`m`.`name` AS `member_name`,`m`.`displayName` AS `displayName`,`r`.`name` AS `rank`,`mr`.`start_date` AS `rank_date`,`s`.`name` AS `status`,`ms`.`start_date` AS `status_date`,`u`.`name` AS `unit`,`mu`.`start_date` AS `unit_date`,`loa`.`loa_until` AS `loa_until` from (((((((`milsim_website_development`.`members` `m` left join (select `mr`.`member_id` AS `member_id`,`mr`.`rank_id` AS `rank_id`,`mr`.`start_date` AS `start_date` from (`milsim_website_development`.`members_ranks` `mr` join (select `milsim_website_development`.`members_ranks`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_ranks`.`start_date`) AS `max_start_date` from `milsim_website_development`.`members_ranks` group by `milsim_website_development`.`members_ranks`.`member_id`) `latest` on(`mr`.`member_id` = `latest`.`member_id` and `mr`.`start_date` = `latest`.`max_start_date`))) `mr` on(`m`.`id` = `mr`.`member_id`)) left join `milsim_website_development`.`ranks` `r` on(`mr`.`rank_id` = `r`.`id`)) left join (select `ms`.`member_id` AS `member_id`,`ms`.`status_id` AS `status_id`,`ms`.`start_date` AS `start_date` from (`milsim_website_development`.`members_statuses` `ms` join (select `milsim_website_development`.`members_statuses`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_statuses`.`start_date`) AS `max_start_date` from `milsim_website_development`.`members_statuses` group by `milsim_website_development`.`members_statuses`.`member_id`) `latest` on(`ms`.`member_id` = `latest`.`member_id` and `ms`.`start_date` = `latest`.`max_start_date`))) `ms` on(`m`.`id` = `ms`.`member_id`)) left join `milsim_website_development`.`statuses` `s` on(`ms`.`status_id` = `s`.`id`)) left join (select `mu`.`member_id` AS `member_id`,`mu`.`unit_id` AS `unit_id`,`mu`.`start_date` AS `start_date` from (`milsim_website_development`.`members_unit` `mu` join (select `milsim_website_development`.`members_unit`.`member_id` AS `member_id`,max(`milsim_website_development`.`members_unit`.`start_date`) AS `max_start_date` from `milsim_website_development`.`members_unit` group by `milsim_website_development`.`members_unit`.`member_id`) `latest` on(`mu`.`member_id` = `latest`.`member_id` and `mu`.`start_date` = `latest`.`max_start_date`))) `mu` on(`m`.`id` = `mu`.`member_id`)) left join `milsim_website_development`.`units` `u` on(`mu`.`unit_id` = `u`.`id`)) left join (select `l`.`member_id` AS `member_id`,max(greatest(cast(`l`.`end_date` as date),cast(coalesce(`l`.`extended_till`,`l`.`end_date`) as date))) AS `loa_until` from `milsim_website_development`.`leave_of_absences` `l` where `l`.`deleted` = 0 and (`l`.`closed` is null or `l`.`closed` = 0) and (`l`.`expired` is null or `l`.`expired` = 0) and cast(`l`.`start_date` as date) <= curdate() and (cast(`l`.`end_date` as date) >= curdate() or cast(`l`.`extended_till` as date) >= curdate()) group by `l`.`member_id`) `loa` on(`loa`.`member_id` = `m`.`id`)) CREATE VIEW `view_member_rank_unit_status_latest` AS select `m`.`id` AS `member_id`,`m`.`name` AS `member_name`,`m`.`displayName` AS `displayName`,`r`.`name` AS `rank`,`r`.`short_name` AS `rank_abv`,`mr`.`start_date` AS `rank_date`,`u`.`name` AS `unit`,`mu`.`start_date` AS `unit_date`,`s`.`name` AS `status`,`ms`.`start_date` AS `status_date`,`loa`.`loa_until` AS `loa_until` from (((((((`members` `m` left join (select `x`.`id` AS `id`,`x`.`member_id` AS `member_id`,`x`.`rank_id` AS `rank_id`,`x`.`authorized_by_id` AS `authorized_by_id`,`x`.`created_by_id` AS `created_by_id`,`x`.`reason` AS `reason`,`x`.`start_date_og` AS `start_date_og`,`x`.`start_date` AS `start_date`,`x`.`end_date_og` AS `end_date_og`,`x`.`end_date` AS `end_date`,`x`.`created_at` AS `created_at`,`x`.`created_at_ts` AS `created_at_ts`,`x`.`updated_at` AS `updated_at`,`x`.`batch` AS `batch` from (`members_ranks` `x` join (select `members_ranks`.`member_id` AS `member_id`,max(`members_ranks`.`created_at`) AS `max_created` from `members_ranks` where `members_ranks`.`end_date` is null group by `members_ranks`.`member_id`) `y` on(`x`.`member_id` = `y`.`member_id` and `x`.`created_at` = `y`.`max_created`))) `mr` on(`mr`.`member_id` = `m`.`id`)) left join `ranks` `r` on(`r`.`id` = `mr`.`rank_id`)) left join (select `x`.`id` AS `id`,`x`.`member_id` AS `member_id`,`x`.`unit_id` AS `unit_id`,`x`.`authorized_by_id` AS `authorized_by_id`,`x`.`created_by_id` AS `created_by_id`,`x`.`reason` AS `reason`,`x`.`start_date_og` AS `start_date_og`,`x`.`start_date` AS `start_date`,`x`.`end_date_og` AS `end_date_og`,`x`.`end_date` AS `end_date`,`x`.`created_at` AS `created_at`,`x`.`updated_at` AS `updated_at` from (`members_unit` `x` join (select `members_unit`.`member_id` AS `member_id`,max(`members_unit`.`created_at`) AS `max_created` from `members_unit` where `members_unit`.`end_date` is null group by `members_unit`.`member_id`) `y` on(`x`.`member_id` = `y`.`member_id` and `x`.`created_at` = `y`.`max_created`))) `mu` on(`mu`.`member_id` = `m`.`id`)) left join `units` `u` on(`u`.`id` = `mu`.`unit_id`)) left join (select `x`.`id` AS `id`,`x`.`member_id` AS `member_id`,`x`.`status_id` AS `status_id`,`x`.`authorized_by_id` AS `authorized_by_id`,`x`.`created_by_id` AS `created_by_id`,`x`.`reason` AS `reason`,`x`.`start_date_og` AS `start_date_og`,`x`.`start_date` AS `start_date`,`x`.`end_date_og` AS `end_date_og`,`x`.`end_date` AS `end_date`,`x`.`created_at` AS `created_at`,`x`.`updated_at` AS `updated_at` from (`members_statuses` `x` join (select `members_statuses`.`member_id` AS `member_id`,max(`members_statuses`.`created_at`) AS `max_created` from `members_statuses` where `members_statuses`.`end_date` is null group by `members_statuses`.`member_id`) `y` on(`x`.`member_id` = `y`.`member_id` and `x`.`created_at` = `y`.`max_created`))) `ms` on(`ms`.`member_id` = `m`.`id`)) left join `statuses` `s` on(`s`.`id` = `ms`.`status_id`)) left join (select `x`.`id` AS `id`,`x`.`member_id` AS `member_id`,`x`.`filed_date` AS `filed_date`,`x`.`start_date` AS `start_date`,`x`.`end_date` AS `end_date`,`x`.`extended_till` AS `extended_till`,`x`.`type_id` AS `type_id`,`x`.`reason` AS `reason`,`x`.`created_by_id` AS `created_by_id`,`x`.`deleted` AS `deleted`,`x`.`expired` AS `expired`,`x`.`closed_by` AS `closed_by`,`x`.`ended_at` AS `ended_at`,`x`.`closed` AS `closed`,`x`.`created_at` AS `created_at`,`x`.`updated_at` AS `updated_at`,greatest(cast(`x`.`end_date` as date),cast(coalesce(`x`.`extended_till`,`x`.`end_date`) as date)) AS `loa_until` from (`leave_of_absences` `x` join (select `leave_of_absences`.`member_id` AS `member_id`,max(`leave_of_absences`.`created_at`) AS `max_created` from `leave_of_absences` where (`leave_of_absences`.`deleted` = 0 or `leave_of_absences`.`deleted` is null) and (`leave_of_absences`.`closed` = 0 or `leave_of_absences`.`closed` is null) group by `leave_of_absences`.`member_id`) `y` on(`x`.`member_id` = `y`.`member_id` and `x`.`created_at` = `y`.`max_created`))) `loa` on(`loa`.`member_id` = `m`.`id`)) order by `m`.`displayName`
; ;
-- Removing temporary table and create final VIEW structure -- Removing temporary table and create final VIEW structure
DROP TABLE IF EXISTS `view_member_settings`; DROP TABLE IF EXISTS `view_member_settings`;
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `view_member_settings` AS select `m`.`id` AS `id`,`m`.`displayName` AS `displayName` from `members` `m` CREATE VIEW `view_member_settings` AS select `m`.`id` AS `id`,`m`.`displayName` AS `displayName` from `members` `m`
; ;
/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; /*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */;

File diff suppressed because it is too large Load Diff

View File

@@ -2,8 +2,7 @@ const dotenv = require('dotenv');
const path = require('path'); const path = require('path');
const { execSync } = require('child_process'); const { execSync } = require('child_process');
const mode = process.env.NODE_ENV || "development"; dotenv.config({ path: path.resolve(process.cwd(), `.env`) });
dotenv.config({ path: path.resolve(process.cwd(), `.env.${mode}`) });
const db = { const db = {
user: process.env.DB_USERNAME, user: process.env.DB_USERNAME,
@@ -12,17 +11,17 @@ const db = {
port: process.env.DB_PORT, port: process.env.DB_PORT,
name: process.env.DB_DATABASE, name: process.env.DB_DATABASE,
}; };
const dbUrl = `mysql://${db.user}:${db.pass}@tcp(host.docker.internal:${db.port})/${db.name}`; const dbUrl = `mysql://${db.user}:${db.pass}@tcp(${db.host}:${db.port})/${db.name}`;
const args = process.argv.slice(2).join(" "); const args = process.argv.slice(2).join(" ");
const migrations = path.join(process.cwd(), "migrations"); const migrations = path.join(process.cwd(), "migrations");
const cmd = [ const cmd = [
"docker run --rm", "docker run --rm",
`-v ${migrations}:/migrations`, `-v "${migrations}:/migrations"`,
"migrate/migrate", "migrate/migrate",
`-path=/migrations`, "-path=/migrations",
`-database \"${dbUrl}\"`, `-database "mysql://${db.user}:${db.pass}@tcp(${db.host}:${db.port})/${db.name}"`, // Use double quotes
args, args,
].join(" "); ].join(" ");

View File

@@ -3,13 +3,13 @@ const path = require("path");
const mariadb = require("mariadb"); const mariadb = require("mariadb");
const fs = require("fs"); const fs = require("fs");
const mode = process.env.NODE_ENV || "development"; dotenv.config({ path: path.resolve(process.cwd(), `.env`) });
dotenv.config({ path: path.resolve(process.cwd(), `.env.${mode}`) });
const { DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_NAME } = process.env; const { DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_DATABASE, APPLICATION_ENVIRONMENT } = process.env;
//do not accidentally seed prod pls //do not accidentally seed prod pls
if (mode !== "development") { if (APPLICATION_ENVIRONMENT !== "dev") {
console.log("PLEASE DO NOT SEED PROD!!!!");
process.exit(0); process.exit(0);
} }
@@ -19,7 +19,7 @@ if (mode !== "development") {
port: DB_PORT, port: DB_PORT,
user: DB_USERNAME, user: DB_USERNAME,
password: DB_PASSWORD, password: DB_PASSWORD,
database: DB_NAME, database: DB_DATABASE,
multipleStatements: true, multipleStatements: true,
}); });