Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions backend/drizzle.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* Denne fila forteller Drizzle:
* *Hvilken DB vi bruker
* *Hvor skjemaet for DB ligger (schema.ts)
* *Hvordan drizzle kobler seg til SQL
*/
import process from "node:process";
import { defineConfig } from "drizzle-kit";

export default defineConfig({
/**
* Databasen vår er MySQL.
*/
dialect: "mysql",

/**
* Her ligger Drizzle-definisjonen av tabellene våre.
*/
schema: "./src/db/schema.ts",

/**
* Her skal Drizzle legge genererte migrations.
*/
out: "./drizzle",

/**
* Samme databaseinformasjon som vi bruker
* i connection.ts.
*/
dbCredentials: {
host: process.env.DB_HOST ?? "localhost",
port: Number(process.env.DB_PORT ?? 3306),
user: process.env.DB_USER ?? "cyberuser",
password: process.env.DB_PASSWORD ?? "cyberpass",
database: process.env.DB_NAME ?? "cyberdb",
},
});
151 changes: 151 additions & 0 deletions backend/drizzle/0000_init.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
CREATE TABLE `SavedItem` (
`user_id` varchar(100) NOT NULL,
`item_id` varchar(100) NOT NULL,
`item_type` enum('THREAT_ACTOR','TECHNIQUE','SOFTWARE') NOT NULL,
`saved_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
CONSTRAINT `SavedItem_user_id_item_id_item_type_pk` PRIMARY KEY(`user_id`,`item_id`,`item_type`)
);
--> statement-breakpoint
CREATE TABLE `Software` (
`software_id` varchar(100) NOT NULL,
`mitre_id` varchar(20) NOT NULL,
`name` varchar(255) NOT NULL,
`description` longtext NOT NULL,
`software_type` enum('MALWARE','TOOL') NOT NULL,
`software_entry_created` datetime(3) NOT NULL,
`x_mitre_deprecated` boolean NOT NULL DEFAULT false,
CONSTRAINT `Software_software_id` PRIMARY KEY(`software_id`),
CONSTRAINT `Software_mitre_id_unique` UNIQUE(`mitre_id`)
);
--> statement-breakpoint
CREATE TABLE `SoftwareAlias` (
`software_id` varchar(100) NOT NULL,
`alias` varchar(255) NOT NULL,
CONSTRAINT `SoftwareAlias_software_id_alias_pk` PRIMARY KEY(`software_id`,`alias`)
);
--> statement-breakpoint
CREATE TABLE `SoftwarePlatform` (
`software_id` varchar(100) NOT NULL,
`platform` varchar(100) NOT NULL,
CONSTRAINT `SoftwarePlatform_software_id_platform_pk` PRIMARY KEY(`software_id`,`platform`)
);
--> statement-breakpoint
CREATE TABLE `Tactic` (
`tactic_id` varchar(100) NOT NULL,
`mitre_id` varchar(20) NOT NULL,
`name` varchar(255) NOT NULL,
`description` longtext NOT NULL,
`tactic_entry_created` datetime(3) NOT NULL,
`x_mitre_deprecated` boolean NOT NULL DEFAULT false,
CONSTRAINT `Tactic_tactic_id` PRIMARY KEY(`tactic_id`),
CONSTRAINT `Tactic_mitre_id_unique` UNIQUE(`mitre_id`)
);
--> statement-breakpoint
CREATE TABLE `TacticTechnique` (
`technique_id` varchar(100) NOT NULL,
`tactic_id` varchar(100) NOT NULL,
CONSTRAINT `TacticTechnique_technique_id_tactic_id_pk` PRIMARY KEY(`technique_id`,`tactic_id`)
);
--> statement-breakpoint
CREATE TABLE `Technique` (
`technique_id` varchar(100) NOT NULL,
`mitre_id` varchar(20) NOT NULL,
`name` varchar(255) NOT NULL,
`description` longtext NOT NULL,
`technique_entry_created` datetime(3) NOT NULL,
`parent_technique_id` varchar(100),
`x_mitre_deprecated` boolean NOT NULL DEFAULT false,
CONSTRAINT `Technique_technique_id` PRIMARY KEY(`technique_id`),
CONSTRAINT `Technique_mitre_id_unique` UNIQUE(`mitre_id`)
);
--> statement-breakpoint
CREATE TABLE `TechniquePlatform` (
`technique_id` varchar(100) NOT NULL,
`platform` varchar(100) NOT NULL,
CONSTRAINT `TechniquePlatform_technique_id_platform_pk` PRIMARY KEY(`technique_id`,`platform`)
);
--> statement-breakpoint
CREATE TABLE `TechniqueSoftware` (
`technique_id` varchar(100) NOT NULL,
`software_id` varchar(100) NOT NULL,
CONSTRAINT `TechniqueSoftware_technique_id_software_id_pk` PRIMARY KEY(`technique_id`,`software_id`)
);
--> statement-breakpoint
CREATE TABLE `ThreatActor` (
`threat_id` varchar(100) NOT NULL,
`mitre_id` varchar(20) NOT NULL,
`name` varchar(255) NOT NULL,
`description` longtext NOT NULL,
`threat_entry_created` datetime(3) NOT NULL,
`country` varchar(255),
`motivation` varchar(255),
`region` varchar(255),
`first_seen` date,
`last_seen` date,
`status` enum('ACTIVE','INACTIVE','UNKNOWN') NOT NULL,
`danger_level` enum('LOW','MODERATE','HIGH','CRITICAL') NOT NULL,
`x_mitre_deprecated` boolean NOT NULL DEFAULT false,
CONSTRAINT `ThreatActor_threat_id` PRIMARY KEY(`threat_id`),
CONSTRAINT `ThreatActor_mitre_id_unique` UNIQUE(`mitre_id`)
);
--> statement-breakpoint
CREATE TABLE `ThreatActorAlias` (
`threat_id` varchar(100) NOT NULL,
`alias` varchar(255) NOT NULL,
CONSTRAINT `ThreatActorAlias_threat_id_alias_pk` PRIMARY KEY(`threat_id`,`alias`)
);
--> statement-breakpoint
CREATE TABLE `ThreatActorSector` (
`threat_id` varchar(100) NOT NULL,
`sector` varchar(255) NOT NULL,
CONSTRAINT `ThreatActorSector_threat_id_sector_pk` PRIMARY KEY(`threat_id`,`sector`)
);
--> statement-breakpoint
CREATE TABLE `ThreatActorSoftware` (
`threat_id` varchar(100) NOT NULL,
`software_id` varchar(100) NOT NULL,
CONSTRAINT `ThreatActorSoftware_threat_id_software_id_pk` PRIMARY KEY(`threat_id`,`software_id`)
);
--> statement-breakpoint
CREATE TABLE `ThreatActorTechnique` (
`threat_id` varchar(100) NOT NULL,
`technique_id` varchar(100) NOT NULL,
CONSTRAINT `ThreatActorTechnique_threat_id_technique_id_pk` PRIMARY KEY(`threat_id`,`technique_id`)
);
--> statement-breakpoint
CREATE TABLE `User` (
`user_id` varchar(100) NOT NULL,
`username` varchar(255) NOT NULL,
CONSTRAINT `User_user_id` PRIMARY KEY(`user_id`),
CONSTRAINT `User_username_unique` UNIQUE(`username`)
);
--> statement-breakpoint
ALTER TABLE `SavedItem` ADD CONSTRAINT `SavedItem_user_id_User_user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `SoftwareAlias` ADD CONSTRAINT `SoftwareAlias_software_id_Software_software_id_fk` FOREIGN KEY (`software_id`) REFERENCES `Software`(`software_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `SoftwarePlatform` ADD CONSTRAINT `SoftwarePlatform_software_id_Software_software_id_fk` FOREIGN KEY (`software_id`) REFERENCES `Software`(`software_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `TacticTechnique` ADD CONSTRAINT `TacticTechnique_technique_id_Technique_technique_id_fk` FOREIGN KEY (`technique_id`) REFERENCES `Technique`(`technique_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `TacticTechnique` ADD CONSTRAINT `TacticTechnique_tactic_id_Tactic_tactic_id_fk` FOREIGN KEY (`tactic_id`) REFERENCES `Tactic`(`tactic_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `Technique` ADD CONSTRAINT `fk_technique_parent` FOREIGN KEY (`parent_technique_id`) REFERENCES `Technique`(`technique_id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `TechniquePlatform` ADD CONSTRAINT `TechniquePlatform_technique_id_Technique_technique_id_fk` FOREIGN KEY (`technique_id`) REFERENCES `Technique`(`technique_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `TechniqueSoftware` ADD CONSTRAINT `TechniqueSoftware_technique_id_Technique_technique_id_fk` FOREIGN KEY (`technique_id`) REFERENCES `Technique`(`technique_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `TechniqueSoftware` ADD CONSTRAINT `TechniqueSoftware_software_id_Software_software_id_fk` FOREIGN KEY (`software_id`) REFERENCES `Software`(`software_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `ThreatActorAlias` ADD CONSTRAINT `ThreatActorAlias_threat_id_ThreatActor_threat_id_fk` FOREIGN KEY (`threat_id`) REFERENCES `ThreatActor`(`threat_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `ThreatActorSector` ADD CONSTRAINT `ThreatActorSector_threat_id_ThreatActor_threat_id_fk` FOREIGN KEY (`threat_id`) REFERENCES `ThreatActor`(`threat_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `ThreatActorSoftware` ADD CONSTRAINT `ThreatActorSoftware_threat_id_ThreatActor_threat_id_fk` FOREIGN KEY (`threat_id`) REFERENCES `ThreatActor`(`threat_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `ThreatActorSoftware` ADD CONSTRAINT `ThreatActorSoftware_software_id_Software_software_id_fk` FOREIGN KEY (`software_id`) REFERENCES `Software`(`software_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `ThreatActorTechnique` ADD CONSTRAINT `ThreatActorTechnique_threat_id_ThreatActor_threat_id_fk` FOREIGN KEY (`threat_id`) REFERENCES `ThreatActor`(`threat_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `ThreatActorTechnique` ADD CONSTRAINT `ThreatActorTechnique_technique_id_Technique_technique_id_fk` FOREIGN KEY (`technique_id`) REFERENCES `Technique`(`technique_id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
CREATE INDEX `idx_saved_item_type` ON `SavedItem` (`item_type`);--> statement-breakpoint
CREATE INDEX `idx_software_name` ON `Software` (`name`);--> statement-breakpoint
CREATE INDEX `idx_software_type` ON `Software` (`software_type`);--> statement-breakpoint
CREATE INDEX `idx_tactic_name` ON `Tactic` (`name`);--> statement-breakpoint
CREATE INDEX `idx_technique_name` ON `Technique` (`name`);--> statement-breakpoint
CREATE INDEX `idx_technique_parent` ON `Technique` (`parent_technique_id`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_name` ON `ThreatActor` (`name`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_country` ON `ThreatActor` (`country`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_motivation` ON `ThreatActor` (`motivation`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_region` ON `ThreatActor` (`region`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_first_seen` ON `ThreatActor` (`first_seen`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_last_seen` ON `ThreatActor` (`last_seen`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_status` ON `ThreatActor` (`status`);--> statement-breakpoint
CREATE INDEX `idx_threat_actor_danger_level` ON `ThreatActor` (`danger_level`);
1 change: 0 additions & 1 deletion backend/drizzle/hvaErDrizzle.md

This file was deleted.

Loading