121 lines
4.4 KiB
SQL
121 lines
4.4 KiB
SQL
CREATE TABLE `mdt_audit_log` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`actor_citizenid` varchar(50),
|
|
`actor_name` varchar(255),
|
|
`action` varchar(64) NOT NULL,
|
|
`target_type` varchar(32),
|
|
`target_id` varchar(64),
|
|
`meta` json,
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
CONSTRAINT `mdt_audit_log_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_bolos` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`kind` enum('person','vehicle') NOT NULL,
|
|
`reference` varchar(64) NOT NULL,
|
|
`label` varchar(255) NOT NULL,
|
|
`reason` text,
|
|
`active` boolean NOT NULL DEFAULT true,
|
|
`created_by_citizenid` varchar(50),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
CONSTRAINT `mdt_bolos_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_case_charges` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`case_id` int NOT NULL,
|
|
`catalog_id` int NOT NULL,
|
|
`count` int NOT NULL DEFAULT 1,
|
|
`fine` int NOT NULL DEFAULT 0,
|
|
`jail_time` int NOT NULL DEFAULT 0,
|
|
`points` int NOT NULL DEFAULT 0,
|
|
CONSTRAINT `mdt_case_charges_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_cases` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`suspect_citizenid` varchar(50) NOT NULL,
|
|
`status` enum('open','closed','dismissed') NOT NULL DEFAULT 'open',
|
|
`narrative` text,
|
|
`total_fine` int NOT NULL DEFAULT 0,
|
|
`total_jail_time` int NOT NULL DEFAULT 0,
|
|
`officer_citizenid` varchar(50),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `mdt_cases_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_charges_catalog` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`code` varchar(32) NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`category` varchar(64) NOT NULL DEFAULT 'sonstiges',
|
|
`fine` int NOT NULL DEFAULT 0,
|
|
`jail_time` int NOT NULL DEFAULT 0,
|
|
`points` int NOT NULL DEFAULT 0,
|
|
`active` boolean NOT NULL DEFAULT true,
|
|
CONSTRAINT `mdt_charges_catalog_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_dispatch_calls` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`code` varchar(32) NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`description` text,
|
|
`department` enum('police','ems','fire') NOT NULL DEFAULT 'police',
|
|
`priority` enum('low','medium','high') NOT NULL DEFAULT 'medium',
|
|
`status` enum('pending','assigned','enroute','onscene','closed') NOT NULL DEFAULT 'pending',
|
|
`location` varchar(255),
|
|
`coords_x` varchar(32),
|
|
`coords_y` varchar(32),
|
|
`coords_z` varchar(32),
|
|
`caller_citizenid` varchar(50),
|
|
`assigned_officers` json NOT NULL DEFAULT ('[]'),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `mdt_dispatch_calls_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_person_records` (
|
|
`citizenid` varchar(50) NOT NULL,
|
|
`notes` text,
|
|
`flags` json NOT NULL DEFAULT ('[]'),
|
|
`is_wanted` boolean NOT NULL DEFAULT false,
|
|
`mugshot_url` varchar(512),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
`updated_by` varchar(50),
|
|
CONSTRAINT `mdt_person_records_citizenid` PRIMARY KEY(`citizenid`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_users` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`citizenid` varchar(50),
|
|
`discord_id` varchar(50),
|
|
`name` varchar(255) NOT NULL,
|
|
`callsign` varchar(32),
|
|
`roles` json NOT NULL DEFAULT ('[]'),
|
|
`created_at` timestamp NOT NULL DEFAULT (now()),
|
|
`updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT `mdt_users_id` PRIMARY KEY(`id`),
|
|
CONSTRAINT `mdt_users_citizenid_unique` UNIQUE(`citizenid`),
|
|
CONSTRAINT `mdt_users_discord_id_unique` UNIQUE(`discord_id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `mdt_warrants` (
|
|
`id` int AUTO_INCREMENT NOT NULL,
|
|
`citizenid` varchar(50) NOT NULL,
|
|
`reason` text NOT NULL,
|
|
`status` enum('active','served','revoked','expired') NOT NULL DEFAULT 'active',
|
|
`case_id` int,
|
|
`issued_by_citizenid` varchar(50),
|
|
`issued_at` timestamp NOT NULL DEFAULT (now()),
|
|
`expires_at` timestamp,
|
|
CONSTRAINT `mdt_warrants_id` PRIMARY KEY(`id`)
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE INDEX `audit_actor_idx` ON `mdt_audit_log` (`actor_citizenid`);--> statement-breakpoint
|
|
CREATE INDEX `audit_action_idx` ON `mdt_audit_log` (`action`);--> statement-breakpoint
|
|
CREATE INDEX `suspect_idx` ON `mdt_cases` (`suspect_citizenid`);--> statement-breakpoint
|
|
CREATE INDEX `warrant_citizen_idx` ON `mdt_warrants` (`citizenid`); |