mirror of
https://github.com/khoaliber/dockhand.git
synced 2026-03-02 13:17:57 +00:00
401 lines
17 KiB
SQL
401 lines
17 KiB
SQL
CREATE TABLE "audit_logs" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"user_id" integer,
|
|
"username" text NOT NULL,
|
|
"action" text NOT NULL,
|
|
"entity_type" text NOT NULL,
|
|
"entity_id" text,
|
|
"entity_name" text,
|
|
"environment_id" integer,
|
|
"description" text,
|
|
"details" text,
|
|
"ip_address" text,
|
|
"user_agent" text,
|
|
"created_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "auth_settings" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"auth_enabled" boolean DEFAULT false,
|
|
"default_provider" text DEFAULT 'local',
|
|
"session_timeout" integer DEFAULT 86400,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "auto_update_settings" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"environment_id" integer,
|
|
"container_name" text NOT NULL,
|
|
"enabled" boolean DEFAULT false,
|
|
"schedule_type" text DEFAULT 'daily',
|
|
"cron_expression" text,
|
|
"vulnerability_criteria" text DEFAULT 'never',
|
|
"last_checked" timestamp,
|
|
"last_updated" timestamp,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "auto_update_settings_environment_id_container_name_unique" UNIQUE("environment_id","container_name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "config_sets" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"description" text,
|
|
"env_vars" text,
|
|
"labels" text,
|
|
"ports" text,
|
|
"volumes" text,
|
|
"network_mode" text DEFAULT 'bridge',
|
|
"restart_policy" text DEFAULT 'no',
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "config_sets_name_unique" UNIQUE("name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "container_events" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"environment_id" integer,
|
|
"container_id" text NOT NULL,
|
|
"container_name" text,
|
|
"image" text,
|
|
"action" text NOT NULL,
|
|
"actor_attributes" text,
|
|
"timestamp" timestamp NOT NULL,
|
|
"created_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "environment_notifications" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"environment_id" integer NOT NULL,
|
|
"notification_id" integer NOT NULL,
|
|
"enabled" boolean DEFAULT true,
|
|
"event_types" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "environment_notifications_environment_id_notification_id_unique" UNIQUE("environment_id","notification_id")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "environments" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"host" text,
|
|
"port" integer DEFAULT 2375,
|
|
"protocol" text DEFAULT 'http',
|
|
"tls_ca" text,
|
|
"tls_cert" text,
|
|
"tls_key" text,
|
|
"tls_skip_verify" boolean DEFAULT false,
|
|
"icon" text DEFAULT 'globe',
|
|
"collect_activity" boolean DEFAULT true,
|
|
"collect_metrics" boolean DEFAULT true,
|
|
"highlight_changes" boolean DEFAULT true,
|
|
"labels" text,
|
|
"connection_type" text DEFAULT 'socket',
|
|
"socket_path" text DEFAULT '/var/run/docker.sock',
|
|
"hawser_token" text,
|
|
"hawser_last_seen" timestamp,
|
|
"hawser_agent_id" text,
|
|
"hawser_agent_name" text,
|
|
"hawser_version" text,
|
|
"hawser_capabilities" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "environments_name_unique" UNIQUE("name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "git_credentials" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"auth_type" text DEFAULT 'none' NOT NULL,
|
|
"username" text,
|
|
"password" text,
|
|
"ssh_private_key" text,
|
|
"ssh_passphrase" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "git_credentials_name_unique" UNIQUE("name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "git_repositories" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"url" text NOT NULL,
|
|
"branch" text DEFAULT 'main',
|
|
"credential_id" integer,
|
|
"compose_path" text DEFAULT 'docker-compose.yml',
|
|
"environment_id" integer,
|
|
"auto_update" boolean DEFAULT false,
|
|
"auto_update_schedule" text DEFAULT 'daily',
|
|
"auto_update_cron" text DEFAULT '0 3 * * *',
|
|
"webhook_enabled" boolean DEFAULT false,
|
|
"webhook_secret" text,
|
|
"last_sync" timestamp,
|
|
"last_commit" text,
|
|
"sync_status" text DEFAULT 'pending',
|
|
"sync_error" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "git_repositories_name_unique" UNIQUE("name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "git_stacks" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"stack_name" text NOT NULL,
|
|
"environment_id" integer,
|
|
"repository_id" integer NOT NULL,
|
|
"compose_path" text DEFAULT 'docker-compose.yml',
|
|
"auto_update" boolean DEFAULT false,
|
|
"auto_update_schedule" text DEFAULT 'daily',
|
|
"auto_update_cron" text DEFAULT '0 3 * * *',
|
|
"webhook_enabled" boolean DEFAULT false,
|
|
"webhook_secret" text,
|
|
"last_sync" timestamp,
|
|
"last_commit" text,
|
|
"sync_status" text DEFAULT 'pending',
|
|
"sync_error" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "git_stacks_stack_name_environment_id_unique" UNIQUE("stack_name","environment_id")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "hawser_tokens" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"token" text NOT NULL,
|
|
"token_prefix" text NOT NULL,
|
|
"name" text NOT NULL,
|
|
"environment_id" integer,
|
|
"is_active" boolean DEFAULT true,
|
|
"last_used" timestamp,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"expires_at" timestamp,
|
|
CONSTRAINT "hawser_tokens_token_unique" UNIQUE("token")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "host_metrics" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"environment_id" integer,
|
|
"cpu_percent" double precision NOT NULL,
|
|
"memory_percent" double precision NOT NULL,
|
|
"memory_used" bigint,
|
|
"memory_total" bigint,
|
|
"timestamp" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "ldap_config" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"enabled" boolean DEFAULT false,
|
|
"server_url" text NOT NULL,
|
|
"bind_dn" text,
|
|
"bind_password" text,
|
|
"base_dn" text NOT NULL,
|
|
"user_filter" text DEFAULT '(uid={{username}})',
|
|
"username_attribute" text DEFAULT 'uid',
|
|
"email_attribute" text DEFAULT 'mail',
|
|
"display_name_attribute" text DEFAULT 'cn',
|
|
"group_base_dn" text,
|
|
"group_filter" text,
|
|
"admin_group" text,
|
|
"role_mappings" text,
|
|
"tls_enabled" boolean DEFAULT false,
|
|
"tls_ca" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "notification_settings" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"type" text NOT NULL,
|
|
"name" text NOT NULL,
|
|
"enabled" boolean DEFAULT true,
|
|
"config" text NOT NULL,
|
|
"event_types" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "oidc_config" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"enabled" boolean DEFAULT false,
|
|
"issuer_url" text NOT NULL,
|
|
"client_id" text NOT NULL,
|
|
"client_secret" text NOT NULL,
|
|
"redirect_uri" text NOT NULL,
|
|
"scopes" text DEFAULT 'openid profile email',
|
|
"username_claim" text DEFAULT 'preferred_username',
|
|
"email_claim" text DEFAULT 'email',
|
|
"display_name_claim" text DEFAULT 'name',
|
|
"admin_claim" text,
|
|
"admin_value" text,
|
|
"role_mappings_claim" text DEFAULT 'groups',
|
|
"role_mappings" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "registries" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"url" text NOT NULL,
|
|
"username" text,
|
|
"password" text,
|
|
"is_default" boolean DEFAULT false,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "registries_name_unique" UNIQUE("name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "roles" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"name" text NOT NULL,
|
|
"description" text,
|
|
"is_system" boolean DEFAULT false,
|
|
"permissions" text NOT NULL,
|
|
"environment_ids" text,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "roles_name_unique" UNIQUE("name")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "schedule_executions" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"schedule_type" text NOT NULL,
|
|
"schedule_id" integer NOT NULL,
|
|
"environment_id" integer,
|
|
"entity_name" text NOT NULL,
|
|
"triggered_by" text NOT NULL,
|
|
"triggered_at" timestamp NOT NULL,
|
|
"started_at" timestamp,
|
|
"completed_at" timestamp,
|
|
"duration" integer,
|
|
"status" text NOT NULL,
|
|
"error_message" text,
|
|
"details" text,
|
|
"logs" text,
|
|
"created_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "sessions" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"user_id" integer NOT NULL,
|
|
"provider" text NOT NULL,
|
|
"expires_at" timestamp NOT NULL,
|
|
"created_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "settings" (
|
|
"key" text PRIMARY KEY NOT NULL,
|
|
"value" text NOT NULL,
|
|
"updated_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "stack_events" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"environment_id" integer,
|
|
"stack_name" text NOT NULL,
|
|
"event_type" text NOT NULL,
|
|
"timestamp" timestamp DEFAULT now(),
|
|
"metadata" text
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "stack_sources" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"stack_name" text NOT NULL,
|
|
"environment_id" integer,
|
|
"source_type" text DEFAULT 'internal' NOT NULL,
|
|
"git_repository_id" integer,
|
|
"git_stack_id" integer,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "stack_sources_stack_name_environment_id_unique" UNIQUE("stack_name","environment_id")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "user_preferences" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"user_id" integer,
|
|
"environment_id" integer,
|
|
"key" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "user_preferences_user_id_environment_id_key_unique" UNIQUE("user_id","environment_id","key")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "user_roles" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"user_id" integer NOT NULL,
|
|
"role_id" integer NOT NULL,
|
|
"environment_id" integer,
|
|
"created_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "user_roles_user_id_role_id_environment_id_unique" UNIQUE("user_id","role_id","environment_id")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "users" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"username" text NOT NULL,
|
|
"email" text,
|
|
"password_hash" text NOT NULL,
|
|
"display_name" text,
|
|
"avatar" text,
|
|
"auth_provider" text DEFAULT 'local',
|
|
"mfa_enabled" boolean DEFAULT false,
|
|
"mfa_secret" text,
|
|
"is_active" boolean DEFAULT true,
|
|
"last_login" timestamp,
|
|
"created_at" timestamp DEFAULT now(),
|
|
"updated_at" timestamp DEFAULT now(),
|
|
CONSTRAINT "users_username_unique" UNIQUE("username")
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE "vulnerability_scans" (
|
|
"id" serial PRIMARY KEY NOT NULL,
|
|
"environment_id" integer,
|
|
"image_id" text NOT NULL,
|
|
"image_name" text NOT NULL,
|
|
"scanner" text NOT NULL,
|
|
"scanned_at" timestamp NOT NULL,
|
|
"scan_duration" integer,
|
|
"critical_count" integer DEFAULT 0,
|
|
"high_count" integer DEFAULT 0,
|
|
"medium_count" integer DEFAULT 0,
|
|
"low_count" integer DEFAULT 0,
|
|
"negligible_count" integer DEFAULT 0,
|
|
"unknown_count" integer DEFAULT 0,
|
|
"vulnerabilities" text,
|
|
"error" text,
|
|
"created_at" timestamp DEFAULT now()
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "audit_logs" ADD CONSTRAINT "audit_logs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "audit_logs" ADD CONSTRAINT "audit_logs_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "auto_update_settings" ADD CONSTRAINT "auto_update_settings_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "container_events" ADD CONSTRAINT "container_events_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "environment_notifications" ADD CONSTRAINT "environment_notifications_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "environment_notifications" ADD CONSTRAINT "environment_notifications_notification_id_notification_settings_id_fk" FOREIGN KEY ("notification_id") REFERENCES "public"."notification_settings"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "git_repositories" ADD CONSTRAINT "git_repositories_credential_id_git_credentials_id_fk" FOREIGN KEY ("credential_id") REFERENCES "public"."git_credentials"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "git_stacks" ADD CONSTRAINT "git_stacks_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "git_stacks" ADD CONSTRAINT "git_stacks_repository_id_git_repositories_id_fk" FOREIGN KEY ("repository_id") REFERENCES "public"."git_repositories"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "hawser_tokens" ADD CONSTRAINT "hawser_tokens_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "host_metrics" ADD CONSTRAINT "host_metrics_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "schedule_executions" ADD CONSTRAINT "schedule_executions_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "sessions" ADD CONSTRAINT "sessions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "stack_events" ADD CONSTRAINT "stack_events_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "stack_sources" ADD CONSTRAINT "stack_sources_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "stack_sources" ADD CONSTRAINT "stack_sources_git_repository_id_git_repositories_id_fk" FOREIGN KEY ("git_repository_id") REFERENCES "public"."git_repositories"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "stack_sources" ADD CONSTRAINT "stack_sources_git_stack_id_git_stacks_id_fk" FOREIGN KEY ("git_stack_id") REFERENCES "public"."git_stacks"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "user_preferences" ADD CONSTRAINT "user_preferences_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_role_id_roles_id_fk" FOREIGN KEY ("role_id") REFERENCES "public"."roles"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "user_roles" ADD CONSTRAINT "user_roles_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "vulnerability_scans" ADD CONSTRAINT "vulnerability_scans_environment_id_environments_id_fk" FOREIGN KEY ("environment_id") REFERENCES "public"."environments"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
CREATE INDEX "audit_logs_user_id_idx" ON "audit_logs" USING btree ("user_id");--> statement-breakpoint
|
|
CREATE INDEX "audit_logs_created_at_idx" ON "audit_logs" USING btree ("created_at");--> statement-breakpoint
|
|
CREATE INDEX "container_events_env_timestamp_idx" ON "container_events" USING btree ("environment_id","timestamp");--> statement-breakpoint
|
|
CREATE INDEX "host_metrics_env_timestamp_idx" ON "host_metrics" USING btree ("environment_id","timestamp");--> statement-breakpoint
|
|
CREATE INDEX "schedule_executions_type_id_idx" ON "schedule_executions" USING btree ("schedule_type","schedule_id");--> statement-breakpoint
|
|
CREATE INDEX "sessions_user_id_idx" ON "sessions" USING btree ("user_id");--> statement-breakpoint
|
|
CREATE INDEX "sessions_expires_at_idx" ON "sessions" USING btree ("expires_at");--> statement-breakpoint
|
|
CREATE INDEX "vulnerability_scans_env_image_idx" ON "vulnerability_scans" USING btree ("environment_id","image_id"); |