mirror of
https://github.com/mblanke/ThreatHunt.git
synced 2026-03-01 14:00:20 -05:00
53 lines
1.8 KiB
SQL
53 lines
1.8 KiB
SQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
-- Users table
|
|
CREATE TABLE users (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
email VARCHAR(100) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
last_login TIMESTAMP
|
|
);
|
|
|
|
-- Hunts table
|
|
CREATE TABLE hunts (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
created_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
status VARCHAR(20) DEFAULT 'active' CHECK (status IN ('active', 'completed', 'archived'))
|
|
);
|
|
|
|
-- Files table
|
|
CREATE TABLE files (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
hunt_id UUID REFERENCES hunts(id) ON DELETE CASCADE,
|
|
filename VARCHAR(255) NOT NULL,
|
|
original_filename VARCHAR(255) NOT NULL,
|
|
file_size BIGINT,
|
|
file_type VARCHAR(50),
|
|
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
analysis_status VARCHAR(20) DEFAULT 'pending' CHECK (analysis_status IN ('pending', 'processing', 'completed', 'failed'))
|
|
);
|
|
|
|
-- Analysis results table
|
|
CREATE TABLE analysis_results (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
file_id UUID REFERENCES files(id) ON DELETE CASCADE,
|
|
analysis_type VARCHAR(50) NOT NULL,
|
|
results JSONB,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create indexes
|
|
CREATE INDEX idx_hunts_created_by ON hunts(created_by);
|
|
CREATE INDEX idx_files_hunt_id ON files(hunt_id);
|
|
CREATE INDEX idx_analysis_file_id ON analysis_results(file_id);
|
|
|
|
-- Insert default admin user (password: admin123)
|
|
INSERT INTO users (username, email, password_hash) VALUES
|
|
('admin', 'admin@threathunter.local', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewKyIqhFrMpGLgGi');
|