--
-- PostgreSQL database dump
--

\restrict eyisBUJGZpxqwUy3cADDz6PSlf2SjvYWDM3PJH885ta9lWx9pkI2q38QNzdHOVh

-- Dumped from database version 16.11 (df20cf9)
-- Dumped by pg_dump version 16.10

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: detections; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.detections (
    id character varying DEFAULT gen_random_uuid() NOT NULL,
    source_ip text NOT NULL,
    risk_score numeric(5,2) NOT NULL,
    confidence numeric(5,2) NOT NULL,
    anomaly_type text NOT NULL,
    reason text,
    log_count integer NOT NULL,
    first_seen timestamp without time zone NOT NULL,
    last_seen timestamp without time zone NOT NULL,
    blocked boolean DEFAULT false NOT NULL,
    blocked_at timestamp without time zone,
    detected_at timestamp without time zone DEFAULT now() NOT NULL,
    country text,
    country_code text,
    city text,
    organization text,
    as_number text,
    as_name text,
    isp text,
    detection_source text DEFAULT 'ml_model'::text,
    blacklist_id character varying
);


--
-- Name: network_analytics; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.network_analytics (
    id character varying DEFAULT gen_random_uuid() NOT NULL,
    date timestamp without time zone NOT NULL,
    hour integer,
    total_packets integer DEFAULT 0 NOT NULL,
    total_bytes bigint DEFAULT 0 NOT NULL,
    unique_ips integer DEFAULT 0 NOT NULL,
    normal_packets integer DEFAULT 0 NOT NULL,
    normal_bytes bigint DEFAULT 0 NOT NULL,
    normal_unique_ips integer DEFAULT 0 NOT NULL,
    top_normal_ips text,
    attack_packets integer DEFAULT 0 NOT NULL,
    attack_bytes bigint DEFAULT 0 NOT NULL,
    attack_unique_ips integer DEFAULT 0 NOT NULL,
    attacks_by_country text,
    attacks_by_type text,
    top_attackers text,
    traffic_by_country text,
    created_at timestamp without time zone DEFAULT now() NOT NULL
);


--
-- Name: network_logs; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.network_logs (
    id character varying DEFAULT gen_random_uuid() NOT NULL,
    router_id character varying NOT NULL,
    "timestamp" timestamp without time zone NOT NULL,
    source_ip text NOT NULL,
    destination_ip text,
    source_port integer,
    destination_port integer,
    protocol text,
    action text,
    bytes integer,
    packets integer,
    logged_at timestamp without time zone DEFAULT now() NOT NULL,
    router_name text DEFAULT 'unknown'::text NOT NULL
);


--
-- Name: public_blacklist_ips; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.public_blacklist_ips (
    id character varying DEFAULT (gen_random_uuid())::text NOT NULL,
    ip_address text NOT NULL,
    cidr_range text,
    ip_inet text,
    cidr_inet text,
    list_id character varying NOT NULL,
    first_seen timestamp without time zone DEFAULT now() NOT NULL,
    last_seen timestamp without time zone DEFAULT now() NOT NULL,
    is_active boolean DEFAULT true NOT NULL
);


--
-- Name: public_lists; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.public_lists (
    id character varying DEFAULT (gen_random_uuid())::text NOT NULL,
    name text NOT NULL,
    type text NOT NULL,
    url text NOT NULL,
    enabled boolean DEFAULT true NOT NULL,
    fetch_interval_minutes integer DEFAULT 10 NOT NULL,
    last_fetch timestamp without time zone,
    last_success timestamp without time zone,
    total_ips integer DEFAULT 0 NOT NULL,
    active_ips integer DEFAULT 0 NOT NULL,
    error_count integer DEFAULT 0 NOT NULL,
    last_error text,
    created_at timestamp without time zone DEFAULT now() NOT NULL
);


--
-- Name: routers; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.routers (
    id character varying DEFAULT gen_random_uuid() NOT NULL,
    name text NOT NULL,
    ip_address text NOT NULL,
    api_port integer DEFAULT 8728 NOT NULL,
    username text NOT NULL,
    password text NOT NULL,
    enabled boolean DEFAULT true NOT NULL,
    last_sync timestamp without time zone,
    created_at timestamp without time zone DEFAULT now() NOT NULL
);


--
-- Name: schema_version; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.schema_version (
    id integer DEFAULT 1 NOT NULL,
    version integer DEFAULT 0 NOT NULL,
    applied_at timestamp without time zone DEFAULT now() NOT NULL,
    description text
);


--
-- Name: training_history; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.training_history (
    id character varying DEFAULT gen_random_uuid() NOT NULL,
    model_version text NOT NULL,
    records_processed integer NOT NULL,
    features_count integer NOT NULL,
    accuracy numeric(5,2),
    training_duration integer,
    status text NOT NULL,
    notes text,
    trained_at timestamp without time zone DEFAULT now() NOT NULL
);


--
-- Name: whitelist; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.whitelist (
    id character varying DEFAULT gen_random_uuid() NOT NULL,
    ip_address text NOT NULL,
    comment text,
    reason text,
    created_by text,
    active boolean DEFAULT true NOT NULL,
    created_at timestamp without time zone DEFAULT now() NOT NULL,
    source text DEFAULT 'manual'::text,
    list_id character varying,
    ip_inet text
);


--
-- Name: detections detections_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.detections
    ADD CONSTRAINT detections_pkey PRIMARY KEY (id);


--
-- Name: network_analytics network_analytics_date_hour_key; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.network_analytics
    ADD CONSTRAINT network_analytics_date_hour_key UNIQUE (date, hour);


--
-- Name: network_analytics network_analytics_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.network_analytics
    ADD CONSTRAINT network_analytics_pkey PRIMARY KEY (id);


--
-- Name: network_logs network_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.network_logs
    ADD CONSTRAINT network_logs_pkey PRIMARY KEY (id);


--
-- Name: public_blacklist_ips public_blacklist_ips_ip_address_list_id_key; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.public_blacklist_ips
    ADD CONSTRAINT public_blacklist_ips_ip_address_list_id_key UNIQUE (ip_address, list_id);


--
-- Name: public_blacklist_ips public_blacklist_ips_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.public_blacklist_ips
    ADD CONSTRAINT public_blacklist_ips_pkey PRIMARY KEY (id);


--
-- Name: public_lists public_lists_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.public_lists
    ADD CONSTRAINT public_lists_pkey PRIMARY KEY (id);


--
-- Name: routers routers_ip_address_unique; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.routers
    ADD CONSTRAINT routers_ip_address_unique UNIQUE (ip_address);


--
-- Name: routers routers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.routers
    ADD CONSTRAINT routers_pkey PRIMARY KEY (id);


--
-- Name: schema_version schema_version_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.schema_version
    ADD CONSTRAINT schema_version_pkey PRIMARY KEY (id);


--
-- Name: training_history training_history_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.training_history
    ADD CONSTRAINT training_history_pkey PRIMARY KEY (id);


--
-- Name: whitelist whitelist_ip_address_unique; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.whitelist
    ADD CONSTRAINT whitelist_ip_address_unique UNIQUE (ip_address);


--
-- Name: whitelist whitelist_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.whitelist
    ADD CONSTRAINT whitelist_pkey PRIMARY KEY (id);


--
-- Name: country_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX country_idx ON public.detections USING btree (country);


--
-- Name: detected_at_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX detected_at_idx ON public.detections USING btree (detected_at);


--
-- Name: detection_source_ip_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX detection_source_ip_idx ON public.detections USING btree (source_ip);


--
-- Name: network_analytics_date_hour_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX network_analytics_date_hour_idx ON public.network_analytics USING btree (date, hour);


--
-- Name: network_analytics_date_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX network_analytics_date_idx ON public.network_analytics USING btree (date);


--
-- Name: risk_score_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX risk_score_idx ON public.detections USING btree (risk_score);


--
-- Name: router_id_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX router_id_idx ON public.network_logs USING btree (router_id);


--
-- Name: source_ip_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX source_ip_idx ON public.network_logs USING btree (source_ip);


--
-- Name: timestamp_idx; Type: INDEX; Schema: public; Owner: -
--

CREATE INDEX timestamp_idx ON public.network_logs USING btree ("timestamp");


--
-- Name: network_logs network_logs_router_id_routers_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.network_logs
    ADD CONSTRAINT network_logs_router_id_routers_id_fk FOREIGN KEY (router_id) REFERENCES public.routers(id);


--
-- Name: public_blacklist_ips public_blacklist_ips_list_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.public_blacklist_ips
    ADD CONSTRAINT public_blacklist_ips_list_id_fkey FOREIGN KEY (list_id) REFERENCES public.public_lists(id) ON DELETE CASCADE;


--
-- PostgreSQL database dump complete
--

\unrestrict eyisBUJGZpxqwUy3cADDz6PSlf2SjvYWDM3PJH885ta9lWx9pkI2q38QNzdHOVh

