Skip to content

Commit 1397127

Browse files
committed
Update schema files for publication
1 parent 3ca2ac1 commit 1397127

18 files changed

+178
-181
lines changed

api/src/main/resources/db/migration/V10__create_types.sql

Lines changed: 0 additions & 10 deletions
This file was deleted.

api/src/main/resources/db/migration/V11__metrics.sql

Lines changed: 0 additions & 62 deletions
This file was deleted.

api/src/main/resources/db/migration/V12__update_metrics.sql

Lines changed: 0 additions & 4 deletions
This file was deleted.

api/src/main/resources/db/migration/V13__command_categorizer.sql

Lines changed: 0 additions & 9 deletions
This file was deleted.

api/src/main/resources/db/migration/V14__command_categorizer_gin.sql

Lines changed: 0 additions & 3 deletions
This file was deleted.

api/src/main/resources/db/migration/V15__work_hours.sql

Lines changed: 0 additions & 10 deletions
This file was deleted.

api/src/main/resources/db/migration/V16__add_ops_summary.sql

Lines changed: 0 additions & 3 deletions
This file was deleted.

api/src/main/resources/db/migration/V17__chat_logs.sql

Lines changed: 0 additions & 10 deletions
This file was deleted.

api/src/main/resources/db/migration/V18_approval_history.sql

Lines changed: 0 additions & 21 deletions
This file was deleted.

api/src/main/resources/db/migration/V1__Create_tables.sql renamed to api/src/main/resources/db/migration/V1__Initial_schema.sql

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,3 +312,181 @@ CREATE TABLE IF NOT EXISTS user_settings (
312312
json_config TEXT,
313313
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
314314
);
315+
-- Insert a UserType with full access (e.g., a "System Admin")
316+
INSERT INTO usertypes (id, user_type_name, automation_access, system_access, rule_access, user_access, ztat_access, application_access)
317+
VALUES (-1, 'Application Admin', 'CAN_RUN_AUTOMATION', 'CAN_MANAGE_SYSTEMS', 'CAN_VIEW_RULES', 'CAN_MANAGE_USERS',
318+
'CAN_VIEW_ZTATS',
319+
'CAN_MANAGE_APPLICATION');
320+
321+
-- Insert a test user and associate with the UserType created above
322+
INSERT INTO users (id, username, name, password, email_address, image_url, role_id, team)
323+
VALUES (-1, 'admin', 'Test User', '$2a$10$LcIvlLX3vchavg8I.VmDLeWIoVETLJM7yK0y8qwn5e0v9QwfcakK6',
324+
'[email protected]', 'https://example.com/image.jpg', -1, 'Test Team');
325+
326+
327+
-- Insert a host group for the test user
328+
329+
-- Insert default host group "Default Host Group" for "Test User"
330+
INSERT INTO host_groups (id, name, description, configuration)
331+
VALUES (-1, 'Default Host Group', 'Default host group for Test User', 'Default configuration');
332+
333+
-- Assign "Test User" to "Default Host Group"
334+
INSERT INTO user_hostgroups (user_id, hostgroup_id)
335+
VALUES (-1, -1);
336+
create table if not exists "configuration_options" (
337+
id BIGSERIAL PRIMARY KEY,
338+
"configuration_name" character varying(250) NOT NULL,
339+
"configuration_value" text NOT NULL
340+
);-- Add a column for application_key reference to host_groups
341+
ALTER TABLE host_groups
342+
ADD COLUMN application_key_id BIGINT UNIQUE,
343+
ADD CONSTRAINT fk_application_key FOREIGN KEY (application_key_id) REFERENCES application_key(id) ON DELETE CASCADE;
344+
CREATE TABLE configurations (
345+
id BIGSERIAL PRIMARY KEY,
346+
config_name VARCHAR(255) NOT NULL,
347+
user_id BIGINT NOT NULL REFERENCES users(id),
348+
content TEXT NOT NULL,
349+
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
350+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
351+
);
352+
ALTER TABLE application_key ADD COLUMN is_file BOOLEAN DEFAULT false;
353+
CREATE TABLE known_hosts (
354+
id SERIAL PRIMARY KEY,
355+
hostname VARCHAR(255) NOT NULL,
356+
key_type VARCHAR(50) NOT NULL,
357+
key_value TEXT NOT NULL,
358+
UNIQUE (hostname, key_type)
359+
);
360+
ALTER TABLE users RENAME COLUMN image_url TO user_id;
361+
ALTER TABLE users ADD CONSTRAINT unique_user_id UNIQUE (user_id);
362+
ALTER TABLE users ADD COLUMN status VARCHAR(20) DEFAULT 'ACTIVE';
363+
364+
INSERT INTO usertypes (id, user_type_name, automation_access, system_access, rule_access, user_access, ztat_access,
365+
application_access) VALUES (-2, 'System Admin', 'CAN_RUN_AUTOMATION', 'CAN_MANAGE_SYSTEMS', 'CAN_VIEW_RULES', 'CAN_MANAGE_USERS',
366+
'CAN_VIEW_ZTATS',
367+
'CAN_MANAGE_APPLICATION');
368+
369+
INSERT INTO usertypes (id, user_type_name, automation_access, system_access, rule_access, user_access, ztat_access,
370+
application_access) VALUES (-4, 'Base User', 'CAN_RUN_AUTOMATION', 'CAN_MANAGE_SYSTEMS', 'CAN_VIEW_RULES', 'CAN_MANAGE_USERS',
371+
'CAN_VIEW_ZTATS',
372+
'CAN_MANAGE_APPLICATION');CREATE TABLE terminal_session_metadata (
373+
id BIGSERIAL PRIMARY KEY,
374+
session_id BIGINT NOT NULL REFERENCES session_log(id) ON DELETE CASCADE,
375+
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
376+
host_system_id BIGINT NOT NULL REFERENCES host_systems(host_system_id),
377+
start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
378+
end_time TIMESTAMP,
379+
ip_address VARCHAR(45),
380+
session_status VARCHAR(50) DEFAULT 'ACTIVE', -- e.g., ACTIVE, CLOSED, INTERRUPTED
381+
is_suspicious BOOLEAN DEFAULT FALSE
382+
);
383+
384+
385+
CREATE TABLE user_experience_metrics (
386+
id BIGSERIAL PRIMARY KEY,
387+
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
388+
session_id BIGINT NOT NULL REFERENCES terminal_session_metadata(id) ON DELETE CASCADE,
389+
command_diversity INTEGER DEFAULT 0, -- Number of unique command categories used
390+
advanced_tool_usage BOOLEAN DEFAULT FALSE, -- Use of tools like awk, sed, grep
391+
error_resolution_count INTEGER DEFAULT 0, -- Number of successfully resolved errors
392+
manual_pages_usage_count INTEGER DEFAULT 0, -- Number of times man/help was used
393+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
394+
);
395+
396+
CREATE TABLE terminal_risk_indicators (
397+
id BIGSERIAL PRIMARY KEY,
398+
session_id BIGINT NOT NULL REFERENCES terminal_session_metadata(id) ON DELETE CASCADE,
399+
dangerous_commands_count INTEGER DEFAULT 0, -- e.g., "rm -rf"
400+
unauthorized_access_attempts INTEGER DEFAULT 0, -- Access to restricted files/directories
401+
geo_anomaly BOOLEAN DEFAULT FALSE, -- Access from unusual locations
402+
out_of_hours BOOLEAN DEFAULT FALSE -- Sessions outside expected working hours
403+
);
404+
CREATE TABLE terminal_behavior_metrics (
405+
id BIGSERIAL PRIMARY KEY,
406+
session_id BIGINT NOT NULL REFERENCES terminal_session_metadata(id) ON DELETE CASCADE,
407+
total_commands INTEGER DEFAULT 0, -- Total number of commands issued
408+
unique_commands INTEGER DEFAULT 0, -- Number of unique commands
409+
avg_command_length FLOAT, -- Average command length in characters
410+
sudo_usage_count INTEGER DEFAULT 0, -- Number of privileged commands used
411+
max_idle_time INTERVAL, -- Longest idle period between commands
412+
FOREIGN KEY (session_id) REFERENCES terminal_session_metadata(id) ON DELETE CASCADE
413+
);
414+
415+
CREATE TABLE terminal_commands (
416+
id BIGSERIAL PRIMARY KEY,
417+
session_id BIGINT NOT NULL REFERENCES terminal_session_metadata(id) ON DELETE CASCADE,
418+
command TEXT NOT NULL, -- Full command issued
419+
command_category VARCHAR(255), -- e.g., file_management, networking
420+
execution_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- When the command was issued
421+
execution_status VARCHAR(50) DEFAULT 'SUCCESS', -- e.g., SUCCESS, FAILED
422+
output TEXT, -- Optional: store command output
423+
FOREIGN KEY (session_id) REFERENCES terminal_session_metadata(id) ON DELETE CASCADE
424+
);
425+
426+
427+
428+
CREATE TABLE analytics_tracking (
429+
id BIGSERIAL PRIMARY KEY,
430+
session_id BIGINT NOT NULL UNIQUE,
431+
processed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
432+
status VARCHAR(50) DEFAULT 'PROCESSED' -- Options: 'PENDING', 'PROCESSING', 'PROCESSED'
433+
);
434+
ALTER TABLE terminal_behavior_metrics
435+
ALTER COLUMN max_idle_time
436+
TYPE NUMERIC(21,0)
437+
USING EXTRACT(EPOCH FROM max_idle_time)::NUMERIC(21,0);
438+
CREATE TABLE command_categories (
439+
id SERIAL PRIMARY KEY,
440+
category_name VARCHAR(50) NOT NULL,
441+
pattern TEXT NOT NULL, -- Store regex patterns
442+
priority INT NOT NULL DEFAULT 0 -- Optional: for matching precedence
443+
);
444+
445+
446+
CREATE INDEX idx_pattern ON command_categories (pattern);CREATE EXTENSION IF NOT EXISTS pg_trgm;
447+
448+
CREATE INDEX idx_command_pattern_trgm ON command_categories USING gin (pattern gin_trgm_ops);
449+
CREATE TABLE work_hours (
450+
id SERIAL PRIMARY KEY,
451+
user_id INT REFERENCES users(id) ON DELETE CASCADE,
452+
day_of_week SMALLINT CHECK (day_of_week BETWEEN 0 AND 6), -- 0 = Sunday, 6 = Saturday
453+
start_time TIME NOT NULL, -- Example: '09:00:00'
454+
end_time TIME NOT NULL -- Example: '17:00:00'
455+
);
456+
457+
-- Ensure fast lookups for checking dem hours
458+
CREATE INDEX idx_work_hours ON work_hours (user_id, day_of_week);
459+
460+
ALTER TABLE operations_request
461+
ADD COLUMN summary TEXT;
462+
CREATE TABLE IF NOT EXISTS chat_log (
463+
id BIGSERIAL PRIMARY KEY,
464+
session_id BIGINT NOT NULL,
465+
chat_group_id VARCHAR NOT NULL, -- Unique identifier for different chat dialogs within the session
466+
instance_id INTEGER,
467+
sender VARCHAR NOT NULL, -- username or system (e.g., AI agent)
468+
message TEXT NOT NULL,
469+
message_tm TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
470+
FOREIGN KEY (session_id) REFERENCES session_log(id) ON DELETE CASCADE
471+
);
472+
ALTER TABLE ztat_approvals ADD COLUMN rationale TEXT;
473+
ALTER TABLE ops_approvals ADD COLUMN rationale TEXT;
474+
475+
CREATE TABLE IF NOT EXISTS ztat_uses (
476+
id BIGSERIAL PRIMARY KEY,
477+
ztat_approval_id BIGINT NOT NULL,
478+
user_id BIGINT NOT NULL,
479+
used_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
480+
FOREIGN KEY (ztat_approval_id) REFERENCES ztat_approvals(id),
481+
FOREIGN KEY (user_id) REFERENCES users(id)
482+
);
483+
484+
485+
CREATE TABLE IF NOT EXISTS ops_uses (
486+
id BIGSERIAL PRIMARY KEY,
487+
ops_approval_id BIGINT NOT NULL,
488+
user_id BIGINT NOT NULL,
489+
used_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
490+
FOREIGN KEY (ops_approval_id) REFERENCES ops_approvals(id),
491+
FOREIGN KEY (user_id) REFERENCES users(id)
492+
);

0 commit comments

Comments
 (0)