From b307b825f1976ed7d842292a21e16c71a3631183 Mon Sep 17 00:00:00 2001 From: LmaksL Date: Sun, 13 Apr 2025 12:27:01 +0000 Subject: [PATCH 1/5] Backup: 20250413_122659 --- Database/backup_20250413_121700.sql | 903 +++++++++++++++++++++++++++ Database/backup_20250413_122659.sql | 904 ++++++++++++++++++++++++++++ 2 files changed, 1807 insertions(+) create mode 100644 Database/backup_20250413_121700.sql create mode 100644 Database/backup_20250413_122659.sql diff --git a/Database/backup_20250413_121700.sql b/Database/backup_20250413_121700.sql new file mode 100644 index 0000000..8618685 --- /dev/null +++ b/Database/backup_20250413_121700.sql @@ -0,0 +1,903 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 17.4 - Percona Server for PostgreSQL 17.4.1 +-- Dumped by pg_dump version 17.4 - Percona Server for PostgreSQL 17.4.1 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'SQL_ASCII'; +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; + +-- +-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; + + +-- +-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; + + +-- +-- Name: postgis; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis IS 'PostGIS geometry and geography spatial types and functions'; + + +-- +-- Name: feature_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.feature_type_enum AS ENUM ( + 'ramp', + 'elevator', + 'call_button', + 'tactile_path', + 'accessible_toilet', + 'parking', + 'entrance', + 'interior', + 'signage', + 'other' +); + + +ALTER TYPE public.feature_type_enum OWNER TO postgres; + +-- +-- Name: location_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_status_enum AS ENUM ( + 'draft', + 'pending', + 'published', + 'rejected' +); + + +ALTER TYPE public.location_status_enum OWNER TO postgres; + +-- +-- Name: location_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_type_enum AS ENUM ( + 'government_building', + 'business', + 'healthcare', + 'education', + 'culture', + 'transport', + 'recreation', + 'other' +); + + +ALTER TYPE public.location_type_enum OWNER TO postgres; + +-- +-- Name: moderation_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.moderation_status_enum AS ENUM ( + 'pending', + 'approved', + 'rejected' +); + + +ALTER TYPE public.moderation_status_enum OWNER TO postgres; + +-- +-- Name: organization_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.organization_type_enum AS ENUM ( + 'government', + 'business', + 'ngo' +); + + +ALTER TYPE public.organization_type_enum OWNER TO postgres; + +-- +-- Name: verification_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.verification_status_enum AS ENUM ( + 'unverified', + 'pending', + 'verified' +); + + +ALTER TYPE public.verification_status_enum OWNER TO postgres; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: accessibility_features; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.accessibility_features ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + type character varying(255) NOT NULL, + subtype character varying(100), + description text, + status boolean NOT NULL, + quality_rating integer, + standards_compliance boolean, + created_by uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.accessibility_features OWNER TO postgres; + +-- +-- Name: audit_logs; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.audit_logs ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + action character varying(100) NOT NULL, + entity_type character varying(50) NOT NULL, + entity_id uuid, + details jsonb, + ip_address character varying(45), + user_agent text, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.audit_logs OWNER TO postgres; + +-- +-- Name: location; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.location ( + id uuid NOT NULL, + address character varying(500) NOT NULL, + category character varying(100), + coder smallint, + hash integer, + hash_is_zero boolean, + value bytea, + coordinates public.geometry(Point,4326) NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid NOT NULL, + description text, + last_verified_at timestamp(6) without time zone NOT NULL, + name character varying(255) NOT NULL, + organization_id uuid, + overall_accessibility_score integer, + rejection_reason text, + status character varying(255) NOT NULL, + type character varying(255) NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + working_hours jsonb, + contacts jsonb, + CONSTRAINT location_status_check CHECK (((status)::text = ANY ((ARRAY['draft'::character varying, 'pending'::character varying, 'published'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT location_type_check CHECK (((type)::text = ANY ((ARRAY['government_building'::character varying, 'business'::character varying, 'healthcare'::character varying, 'education'::character varying, 'culture'::character varying, 'transport'::character varying, 'recreation'::character varying, 'other'::character varying])::text[]))) +); + + +ALTER TABLE public.location OWNER TO postgres; + +-- +-- Name: locations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.locations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + address character varying(500) NOT NULL, + coordinates public.geometry(Point,4326) NOT NULL, + type public.location_type_enum NOT NULL, + category character varying(100), + description text, + contacts jsonb, + working_hours jsonb, + created_by uuid, + organization_id uuid, + status public.location_status_enum DEFAULT 'draft'::public.location_status_enum NOT NULL, + overall_accessibility_score integer, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_verified_at timestamp without time zone, + rejection_reason text +); + + +ALTER TABLE public.locations OWNER TO postgres; + +-- +-- Name: notifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.notifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + type character varying(50) NOT NULL, + title character varying(255) NOT NULL, + message text NOT NULL, + link character varying(500), + is_read boolean DEFAULT false NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.notifications OWNER TO postgres; + +-- +-- Name: organizations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.organizations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + type public.organization_type_enum NOT NULL, + edrpou character varying(15), + website character varying(255), + is_verified boolean DEFAULT false NOT NULL, + verification_document_url character varying(255), + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.organizations OWNER TO postgres; + +-- +-- Name: photo; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photo ( + id uuid NOT NULL, + ai_accessibility_detection jsonb, + ai_moderation_score real, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid, + description text, + feature_id uuid, + location_id uuid NOT NULL, + metadata jsonb, + moderation_status smallint NOT NULL, + reject_reason text, + thumbnail_url character varying(500) NOT NULL, + url character varying(500) NOT NULL, + CONSTRAINT photo_ai_moderation_score_check CHECK (((ai_moderation_score <= (1)::double precision) AND (ai_moderation_score >= (0)::double precision))), + CONSTRAINT photo_moderation_status_check CHECK (((moderation_status >= 0) AND (moderation_status <= 2))) +); + + +ALTER TABLE public.photo OWNER TO postgres; + +-- +-- Name: photos; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photos ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + url character varying(500) NOT NULL, + thumbnail_url character varying(500) NOT NULL, + description text, + created_by uuid, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + ai_moderation_score double precision, + ai_accessibility_detection jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + reject_reason text, + metadata jsonb +); + + +ALTER TABLE public.photos OWNER TO postgres; + +-- +-- Name: review; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.review ( + id uuid NOT NULL, + accessibility_experience text NOT NULL, + comment text NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + location_id uuid NOT NULL, + moderation_status character varying(255) NOT NULL, + rating integer NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + user_id uuid NOT NULL, + CONSTRAINT review_moderation_status_check CHECK (((moderation_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT review_rating_check CHECK (((rating <= 5) AND (rating >= 1))) +); + + +ALTER TABLE public.review OWNER TO postgres; + +-- +-- Name: reviews; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.reviews ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + user_id uuid, + rating integer NOT NULL, + comment text, + accessibility_experience text, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + CONSTRAINT reviews_rating_check CHECK (((rating >= 1) AND (rating <= 5))) +); + + +ALTER TABLE public.reviews OWNER TO postgres; + +-- +-- Name: roles; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.roles ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(50) NOT NULL, + description text, + permissions jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.roles OWNER TO postgres; + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.users ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + email character varying(255) NOT NULL, + full_name character varying(255) NOT NULL, + phone character varying(20), + role_id uuid, + gov_id character varying(255), + verification_status public.verification_status_enum DEFAULT 'unverified'::public.verification_status_enum NOT NULL, + avatar_url character varying(255), + organization_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_login_at timestamp without time zone, + is_active boolean DEFAULT true NOT NULL, + password bytea +); + + +ALTER TABLE public.users OWNER TO postgres; + +-- +-- Name: verification; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verification ( + id uuid NOT NULL, + comment text NOT NULL, + create_at timestamp(6) without time zone NOT NULL, + evidence_photo_id uuid, + feature_id uuid, + is_official boolean NOT NULL, + location_id uuid NOT NULL, + organization_id uuid, + status boolean NOT NULL, + verified_id uuid NOT NULL +); + + +ALTER TABLE public.verification OWNER TO postgres; + +-- +-- Name: verifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + verified_by uuid, + organization_id uuid, + status boolean NOT NULL, + comment text, + evidence_photo_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + is_official boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.verifications OWNER TO postgres; + +-- +-- Data for Name: accessibility_features; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.accessibility_features (id, location_id, type, subtype, description, status, quality_rating, standards_compliance, created_by, created_at, updated_at) FROM stdin; +581b16f7-fe04-4b83-be44-a616d9fd835f 479d899f-a9be-4506-a314-f10867e3e8f0 call_button \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 479d899f-a9be-4506-a314-f10867e3e8f0 accessible_toilet \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +a765b190-666e-4dc9-8d64-39db2df8a659 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb call_button \N \N t \N t c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +ba48224a-ad60-477c-a15b-a7e938023ce6 3349f2de-1730-49db-a888-d0560aced177 ramp \N \N f \N f c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +bfac36a3-9638-474c-ba96-845267857630 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb parking \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +3bbeb94e-caf9-4df0-9d09-db1844bbd24e 3349f2de-1730-49db-a888-d0560aced177 elevator \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +\. + + +-- +-- Data for Name: audit_logs; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.audit_logs (id, user_id, action, entity_type, entity_id, details, ip_address, user_agent, created_at) FROM stdin; +38eea15a-4c3c-40fa-8f31-499fdb869190 c74f8b4b-81fd-4904-8a5e-026bb2c6538c delete document \N {"reason": "User request", "doc_name": "contract.pdf"} 172.16.1.23 curl/7.68.0 2025-04-12 11:32:09.562276 +adda61a4-d731-40d1-bfbf-53abbed0fe92 68fa1eb3-9302-4ab3-9037-463737fb45a7 update_profile user \N {"fields_changed": ["email", "name"]} 10.0.0.5 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) 2025-04-12 11:32:09.562276 +1bf4b383-969d-443d-8066-dd0f7d6d248b 00e44ab2-6259-411b-96ca-380de025150a login user \N {"success": true} 192.168.0.101 Mozilla/5.0 (Windows NT 10.0; Win64; x64) 2025-04-12 11:32:09.562276 +\. + + +-- +-- Data for Name: location; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.location (id, address, category, coder, hash, hash_is_zero, value, coordinates, created_at, created_by, description, last_verified_at, name, organization_id, overall_accessibility_score, rejection_reason, status, type, updated_at, working_hours, contacts) FROM stdin; +\. + + +-- +-- Data for Name: locations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.locations (id, name, address, coordinates, type, category, description, contacts, working_hours, created_by, organization_id, status, overall_accessibility_score, created_at, updated_at, last_verified_at, rejection_reason) FROM stdin; +85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb \\u0415\\u043f\\u0456\\u0446\\u0435\\u043d\\u0442\\u0440 \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 57, \\u041d\\u043e\\u0432\\u043e\\u0441\\u0435\\u043b\\u0456\\u0432\\u043a\\u0430 0101000020E6100000DAD7CE1D40C34940BE88C49354543F40 business \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +3349f2de-1730-49db-a888-d0560aced177 \\u041e\\u0431\\u043b\\u0430\\u0441\\u043d\\u0430 \\u0430\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0446\\u0456\\u044f \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 7, \\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E6100000C4530F58C1BE4940B57151CF5B4C3F40 government_building \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +479d899f-a9be-4506-a314-f10867e3e8f0 \\u041b\\u0456\\u043a\\u0430\\u0440\\u043d\\u044f \\u21162 \\u043f\\u0440\\u043e\\u0441\\u043f\\u0435\\u043a\\u0442 \\u041c\\u0438\\u0445\\u0430\\u0439\\u043b\\u0430 \\u0413\\u0440\\u0443\\u0448\\u0435\\u0432\\u0441\\u044c\\u043a\\u043e\\u0433\\u043e, 168,\\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E610000014E42F853AC2494012AAA3AA304F3F40 healthcare \N \N \N \N 00e44ab2-6259-411b-96ca-380de025150a \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +\. + + +-- +-- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.notifications (id, user_id, type, title, message, link, is_read, created_at) FROM stdin; +7d1612da-e4ed-42a0-aa67-7febb1faa7af \N system_error \\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430 \\u0412\\u0438\\u043d\\u0438\\u043a\\u043b\\u0430 \\u043f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u043f\\u0456\\u0434 \\u0447\\u0430\\u0441 \\u043e\\u0431\\u0440\\u043e\\u0431\\u043a\\u0438 \\u0432\\u0430\\u0448\\u043e\\u0433\\u043e \\u0437\\u0430\\u043f\\u0438\\u0442\\u0443. /support t 2025-04-12 11:25:13.505412 +e9792f56-2626-41b7-9892-d91af512cd27 \N warning \\u0417\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043d\\u043d\\u044f \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0422\\u0435\\u0440\\u043c\\u0456\\u043d \\u0432\\u0430\\u0448\\u043e\\u0457 \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0441\\u043f\\u043b\\u0438\\u0432\\u0430\\u0454 \\u0447\\u0435\\u0440\\u0435\\u0437 3 \\u0434\\u043d\\u0456. /subscription/renew f 2025-04-12 11:25:13.505412 +6ea8bdb5-0960-49b6-8256-d0e17a3738a3 \N info \\u041d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0423 \\u0432\\u0430\\u0441 \\u043d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0443 \\u0432\\u0445\\u0456\\u0434\\u043d\\u0438\\u0445. /messages/123 f 2025-04-12 11:25:13.505412 +\. + + +-- +-- Data for Name: organizations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.organizations (id, name, type, edrpou, website, is_verified, verification_document_url, created_at, updated_at) FROM stdin; +03e6527b-10b8-4400-a8d5-425047e6c144 \\u0422\\u041e\\u0412 "\\u0406\\u043d\\u043d\\u043e\\u0432\\u0430\\u0446\\u0456\\u0439\\u043d\\u0456 \\u0440\\u0456\\u0448\\u0435\\u043d\\u043d\\u044f" business 12344568 https://inno-solutions.ua f https://docs.ua/verif/inno123.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +b3900f49-afce-43ce-84c7-13ef2ab12eee \\u0411\\u0424 "\\u0414\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0430 \\u043f\\u043e\\u0440\\u0443\\u0447" ngo 84684522 https://help-now.org.ua f https://docs.ua/verif/help987.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +d28150a5-16a0-47e2-acbf-fe51654d1ec3 \\u041a\\u041f "\\u041c\\u0406\\u0441\\u044c\\u043a\\u0456 \\u0456\\u043d\\u0456\\u0446\\u0456\\u0430\\u0442\\u0438\\u0432\\u0438" government 54668489 \N f \N 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +\. + + +-- +-- Data for Name: photo; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photo (id, ai_accessibility_detection, ai_moderation_score, created_at, created_by, description, feature_id, location_id, metadata, moderation_status, reject_reason, thumbnail_url, url) FROM stdin; +\. + + +-- +-- Data for Name: photos; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photos (id, location_id, feature_id, url, thumbnail_url, description, created_by, moderation_status, ai_moderation_score, ai_accessibility_detection, created_at, reject_reason, metadata) FROM stdin; +b9efe387-5000-4101-8420-76c31b691bdf 479d899f-a9be-4506-a314-f10867e3e8f0 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 https://example.com/photos/0a1b2c3d4e5f.jpg https://example.com/photos/thumbnails/0a1b2c3d4e5f_thumb.jpg \N 00e44ab2-6259-411b-96ca-380de025150a pending \N \N 2025-04-12 14:33:31.354523 \N \N +250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 3349f2de-1730-49db-a888-d0560aced177 581b16f7-fe04-4b83-be44-a616d9fd835f https://cdn.accessibilityhub.org/images/photo_87234_large.jpg https://cdn.accessibilityhub.org/images/photo_87234_thumb.jpg \N c74f8b4b-81fd-4904-8a5e-026bb2c6538c rejected \N \N 2025-04-12 14:33:31.354523 Incorrect data \N +643d9e1b-7d63-4354-a9ce-f4929237b421 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main.jpg https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main_thumb.jpg \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 pending \N \N 2025-04-12 14:33:31.354523 \N \N +\. + + +-- +-- Data for Name: review; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.review (id, accessibility_experience, comment, created_at, location_id, moderation_status, rating, updated_at, user_id) FROM stdin; +\. + + +-- +-- Data for Name: reviews; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.reviews (id, location_id, user_id, rating, comment, accessibility_experience, moderation_status, created_at, updated_at) FROM stdin; +039f5712-f0d1-4164-9195-48a2a39b5951 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb c74f8b4b-81fd-4904-8a5e-026bb2c6538c 1 \\u0414\\u0443\\u0436\\u0435 \\u043f\\u043e\\u0433\\u0430\\u043d\\u0438\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u0412\\u0445\\u0456\\u0434\\u043d\\u0456 \\u0441\\u0445\\u043e\\u0434\\u0438 \\u0431\\u0435\\u0437 \\u043f\\u0430\\u043d\\u0434\\u0443\\u0441\\u0443, \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442 \\u043d\\u0435\\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0438\\u0439 rejected 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +0d192b48-e732-446e-84fa-4216641309a8 479d899f-a9be-4506-a314-f10867e3e8f0 00e44ab2-6259-411b-96ca-380de025150a 3 \\u0404 \\u043d\\u044e\\u0430\\u043d\\u0441\\u0438 \\u0437 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043e\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0454, \\u0430\\u043b\\u0435 \\u0434\\u0443\\u0436\\u0435 \\u043a\\u0440\\u0443\\u0442\\u0438\\u0439, \\u0434\\u0432\\u0435\\u0440\\u0456 \\u0432\\u0430\\u0436\\u043a\\u043e \\u0432\\u0456\\u0434\\u0447\\u0438\\u043d\\u0438\\u0442\\u0438 pending 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +3b9ecceb-387f-4f49-9483-7ac2dd184063 3349f2de-1730-49db-a888-d0560aced177 00e44ab2-6259-411b-96ca-380de025150a 5 \\u0427\\u0443\\u0434\\u043e\\u0432\\u0435 \\u043c\\u0456\\u0441\\u0446\\u0435! \\u0420\\u0435\\u043a\\u043e\\u043c\\u0435\\u043d\\u0434\\u0443\\u044e \\u0432\\u0441\\u0456\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0437\\u0440\\u0443\\u0447\\u043d\\u0438\\u0439, \\u0448\\u0438\\u0440\\u043e\\u043a\\u0456 \\u0434\\u0432\\u0435\\u0440\\u0456, \\u0454 \\u043b\\u0456\\u0444\\u0442 approved 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +\. + + +-- +-- Data for Name: roles; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.roles (id, name, description, permissions, created_at, updated_at) FROM stdin; +82830544-55c2-43de-9725-cd1508965eae admin \\u0410\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0442\\u043e\\u0440 \\u0437 \\u0443\\u0441\\u0456\\u043c\\u0430 \\u043f\\u0440\\u0430\\u0432\\u0430\\u043c\\u0438 {"read": true, "write": true, "delete": true, "manage_users": true} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +9c4866a1-b893-4736-8f39-ecd382616c9d viewer \\u041f\\u0435\\u0440\\u0435\\u0433\\u043b\\u044f\\u0434 \\u0431\\u0435\\u0437 \\u043c\\u043e\\u0436\\u043b\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0437\\u043c\\u0456\\u043d {"read": true, "write": false, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +6a12c5e4-02f9-425c-b590-ff456fdb35df editor \\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u043e\\u0440 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043d\\u0442\\u0443 {"read": true, "write": true, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +\. + + +-- +-- Data for Name: spatial_ref_sys; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin; +\. + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.users (id, email, full_name, phone, role_id, gov_id, verification_status, avatar_url, organization_id, created_at, updated_at, last_login_at, is_active, password) FROM stdin; +00e44ab2-6259-411b-96ca-380de025150a iryna.kovalenko@example.net \\u0406\\u0440\\u0438\\u043d\\u0430 \\u041a\\u043e\\u0432\\u0430\\u043b\\u0435\\u043d\\u043a\\u043e +380931234567 \N CC987654 unverified https://example.net/pic/iryna.jpeg 03e6527b-10b8-4400-a8d5-425047e6c144 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\xf7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7 +68fa1eb3-9302-4ab3-9037-463737fb45a7 taras.bondarenko@example.org \\u0422\\u0430\\u0440\\u0430\\u0441 \\u0411\\u043e\\u043d\\u0434\\u0430\\u0440\\u0435\\u043d\\u043a\\u043e +380671234567 \N BB654321 verified https://example.org/images/taras.png b3900f49-afce-43ce-84c7-13ef2ab12eee 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x38567e882369a9af763cb94d78d682081bcb88f94c7a9d85864531553f5fa5a942470897a3f72dd6b89985c3fd42ff9a78102a2f711492122da49530bfd7e133 +c74f8b4b-81fd-4904-8a5e-026bb2c6538c olena.ivchenko@example.com \\u041e\\u043b\\u0435\\u043d\\u0430 \\u0406\\u0432\\u0447\\u0435\\u043d\\u043a\\u043e +380501112233\n\n \N AE123456 verified https://example.com/avatars/olena.jpg d28150a5-16a0-47e2-acbf-fe51654d1ec3 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x3d983e0f78973ea9e44fced001b9b88dfe392450eecc02d41ed93e800de2f692efba2a939c61451b7c52b8026b77b6e1190af8576308d871c6379ee544d81d21 +71e636ea-b7e2-4bf6-abe7-fab206a7eaf5 test@example.com User666 \N \N \N unverified \N \N 2025-04-13 07:40:06.756668 2025-04-13 07:40:06.756668 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124356138744878774838486d4536683349626d4e773341245355305238506e6d6d3875303547567265633461544d55674e7a534b35747858504a4b394e756d4c757245 +e67d725b-3446-43c6-b2e3-f9baf951cf0a test@exle.com Useyy666 \N \N \N unverified \N \N 2025-04-13 08:42:12.493533 2025-04-13 08:42:12.493533 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d31246b52754e386d6e39326a2f576859735458656e4e6b51246d3150713631365834586354527230774a46796f766771763866313856427555624e4278432b7666566177 +be905e92-8bc3-4d70-956c-f778dd871a16 vasya@dima VLADIK LOH \N \N unverified \N \N 2025-04-13 08:02:43.040884 2025-04-13 11:36:46.220053 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d312475724c4178436b7766723230313767614938446d49412436314d4659777352623647502f4f736a56583978442b54776c7179317162314853314845394d47335a4955 +\. + + +-- +-- Data for Name: verification; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verification (id, comment, create_at, evidence_photo_id, feature_id, is_official, location_id, organization_id, status, verified_id) FROM stdin; +\. + + +-- +-- Data for Name: verifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verifications (id, location_id, feature_id, verified_by, organization_id, status, comment, evidence_photo_id, created_at, is_official) FROM stdin; +2b2c3181-7822-4fd7-8f41-79d049d369c9 479d899f-a9be-4506-a314-f10867e3e8f0 581b16f7-fe04-4b83-be44-a616d9fd835f 68fa1eb3-9302-4ab3-9037-463737fb45a7 b3900f49-afce-43ce-84c7-13ef2ab12eee f \\u041f\\u043e\\u0440\\u0443\\u0447\\u0435\\u043d\\u044c \\u0432\\u0456\\u0434\\u0441\\u0443\\u0442\\u043d\\u0456\\u0439 \N 2025-04-12 12:26:08.807848 t +6373a690-7a76-452c-80aa-203228a067bd 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 c74f8b4b-81fd-4904-8a5e-026bb2c6538c d28150a5-16a0-47e2-acbf-fe51654d1ec3 t \\u0414\\u043e\\u0441\\u0442\\u0443\\u043f \\u0434\\u043e \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442\\u0443 \\u043f\\u0456\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0436\\u0435\\u043d\\u043e b9efe387-5000-4101-8420-76c31b691bdf 2025-04-12 12:26:08.807848 f +96280588-c4fd-4c56-9ab9-2164af14119d 3349f2de-1730-49db-a888-d0560aced177 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 00e44ab2-6259-411b-96ca-380de025150a 03e6527b-10b8-4400-a8d5-425047e6c144 t \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u0435\\u043d\\u0438\\u0439, \\u0432\\u0456\\u0434\\u043f\\u043e\\u0432\\u0456\\u0434\\u0430\\u0454 \\u043d\\u043e\\u0440\\u043c\\u0430\\u043c 250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 2025-04-12 12:26:08.807848 t +\. + + +-- +-- Name: accessibility_features accessibility_features_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT accessibility_features_pkey PRIMARY KEY (id); + + +-- +-- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id); + + +-- +-- Name: location location_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.location + ADD CONSTRAINT location_pkey PRIMARY KEY (id); + + +-- +-- Name: locations locations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT locations_pkey PRIMARY KEY (id); + + +-- +-- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); + + +-- +-- Name: organizations organizations_edrpou_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_edrpou_key UNIQUE (edrpou); + + +-- +-- Name: organizations organizations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_pkey PRIMARY KEY (id); + + +-- +-- Name: photo photo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photo + ADD CONSTRAINT photo_pkey PRIMARY KEY (id); + + +-- +-- Name: photos photos_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT photos_pkey PRIMARY KEY (id); + + +-- +-- Name: review review_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.review + ADD CONSTRAINT review_pkey PRIMARY KEY (id); + + +-- +-- Name: reviews reviews_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT reviews_pkey PRIMARY KEY (id); + + +-- +-- Name: roles roles_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_name_key UNIQUE (name); + + +-- +-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + + +-- +-- Name: users users_gov_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_gov_id_key UNIQUE (gov_id); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: verification verification_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verification + ADD CONSTRAINT verification_pkey PRIMARY KEY (id); + + +-- +-- Name: verifications verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT verifications_pkey PRIMARY KEY (id); + + +-- +-- Name: idx_locations_coordinates; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX idx_locations_coordinates ON public.locations USING gist (coordinates); + + +-- +-- Name: audit_logs fk_audit_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT fk_audit_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: locations fk_locations_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: locations fk_locations_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: notifications fk_notifications_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT fk_notifications_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: photos fk_photos_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_role; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_role FOREIGN KEY (role_id) REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_photo; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_photo FOREIGN KEY (evidence_photo_id) REFERENCES public.photos(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_verified_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_verified_by FOREIGN KEY (verified_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/Database/backup_20250413_122659.sql b/Database/backup_20250413_122659.sql new file mode 100644 index 0000000..ad1389c --- /dev/null +++ b/Database/backup_20250413_122659.sql @@ -0,0 +1,904 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 17.4 - Percona Server for PostgreSQL 17.4.1 +-- Dumped by pg_dump version 17.4 - Percona Server for PostgreSQL 17.4.1 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'SQL_ASCII'; +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; + +-- +-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; + + +-- +-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; + + +-- +-- Name: postgis; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis IS 'PostGIS geometry and geography spatial types and functions'; + + +-- +-- Name: feature_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.feature_type_enum AS ENUM ( + 'ramp', + 'elevator', + 'call_button', + 'tactile_path', + 'accessible_toilet', + 'parking', + 'entrance', + 'interior', + 'signage', + 'other' +); + + +ALTER TYPE public.feature_type_enum OWNER TO postgres; + +-- +-- Name: location_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_status_enum AS ENUM ( + 'draft', + 'pending', + 'published', + 'rejected' +); + + +ALTER TYPE public.location_status_enum OWNER TO postgres; + +-- +-- Name: location_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_type_enum AS ENUM ( + 'government_building', + 'business', + 'healthcare', + 'education', + 'culture', + 'transport', + 'recreation', + 'other' +); + + +ALTER TYPE public.location_type_enum OWNER TO postgres; + +-- +-- Name: moderation_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.moderation_status_enum AS ENUM ( + 'pending', + 'approved', + 'rejected' +); + + +ALTER TYPE public.moderation_status_enum OWNER TO postgres; + +-- +-- Name: organization_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.organization_type_enum AS ENUM ( + 'government', + 'business', + 'ngo' +); + + +ALTER TYPE public.organization_type_enum OWNER TO postgres; + +-- +-- Name: verification_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.verification_status_enum AS ENUM ( + 'unverified', + 'pending', + 'verified' +); + + +ALTER TYPE public.verification_status_enum OWNER TO postgres; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: accessibility_features; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.accessibility_features ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + type character varying(255) NOT NULL, + subtype character varying(100), + description text, + status boolean NOT NULL, + quality_rating integer, + standards_compliance boolean, + created_by uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.accessibility_features OWNER TO postgres; + +-- +-- Name: audit_logs; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.audit_logs ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + action character varying(100) NOT NULL, + entity_type character varying(50) NOT NULL, + entity_id uuid, + details jsonb, + ip_address character varying(45), + user_agent text, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.audit_logs OWNER TO postgres; + +-- +-- Name: location; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.location ( + id uuid NOT NULL, + address character varying(500) NOT NULL, + category character varying(100), + coder smallint, + hash integer, + hash_is_zero boolean, + value bytea, + coordinates public.geometry(Point,4326) NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid NOT NULL, + description text, + last_verified_at timestamp(6) without time zone NOT NULL, + name character varying(255) NOT NULL, + organization_id uuid, + overall_accessibility_score integer, + rejection_reason text, + status character varying(255) NOT NULL, + type character varying(255) NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + working_hours jsonb, + contacts jsonb, + CONSTRAINT location_status_check CHECK (((status)::text = ANY ((ARRAY['draft'::character varying, 'pending'::character varying, 'published'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT location_type_check CHECK (((type)::text = ANY ((ARRAY['government_building'::character varying, 'business'::character varying, 'healthcare'::character varying, 'education'::character varying, 'culture'::character varying, 'transport'::character varying, 'recreation'::character varying, 'other'::character varying])::text[]))) +); + + +ALTER TABLE public.location OWNER TO postgres; + +-- +-- Name: locations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.locations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + address character varying(500) NOT NULL, + coordinates public.geometry(Point,4326) NOT NULL, + type public.location_type_enum NOT NULL, + category character varying(100), + description text, + contacts jsonb, + working_hours jsonb, + created_by uuid, + organization_id uuid, + status public.location_status_enum DEFAULT 'draft'::public.location_status_enum NOT NULL, + overall_accessibility_score integer, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_verified_at timestamp without time zone, + rejection_reason text +); + + +ALTER TABLE public.locations OWNER TO postgres; + +-- +-- Name: notifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.notifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + type character varying(50) NOT NULL, + title character varying(255) NOT NULL, + message text NOT NULL, + link character varying(500), + is_read boolean DEFAULT false NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.notifications OWNER TO postgres; + +-- +-- Name: organizations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.organizations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + type public.organization_type_enum NOT NULL, + edrpou character varying(15), + website character varying(255), + is_verified boolean DEFAULT false NOT NULL, + verification_document_url character varying(255), + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.organizations OWNER TO postgres; + +-- +-- Name: photo; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photo ( + id uuid NOT NULL, + ai_accessibility_detection jsonb, + ai_moderation_score real, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid, + description text, + feature_id uuid, + location_id uuid NOT NULL, + metadata jsonb, + moderation_status smallint NOT NULL, + reject_reason text, + thumbnail_url character varying(500) NOT NULL, + url character varying(500) NOT NULL, + CONSTRAINT photo_ai_moderation_score_check CHECK (((ai_moderation_score <= (1)::double precision) AND (ai_moderation_score >= (0)::double precision))), + CONSTRAINT photo_moderation_status_check CHECK (((moderation_status >= 0) AND (moderation_status <= 2))) +); + + +ALTER TABLE public.photo OWNER TO postgres; + +-- +-- Name: photos; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photos ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + url character varying(500) NOT NULL, + thumbnail_url character varying(500) NOT NULL, + description text, + created_by uuid, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + ai_moderation_score double precision, + ai_accessibility_detection jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + reject_reason text, + metadata jsonb +); + + +ALTER TABLE public.photos OWNER TO postgres; + +-- +-- Name: review; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.review ( + id uuid NOT NULL, + accessibility_experience text NOT NULL, + comment text NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + location_id uuid NOT NULL, + moderation_status character varying(255) NOT NULL, + rating integer NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + user_id uuid NOT NULL, + CONSTRAINT review_moderation_status_check CHECK (((moderation_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT review_rating_check CHECK (((rating <= 5) AND (rating >= 1))) +); + + +ALTER TABLE public.review OWNER TO postgres; + +-- +-- Name: reviews; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.reviews ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + user_id uuid, + rating integer NOT NULL, + comment text, + accessibility_experience text, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + CONSTRAINT reviews_rating_check CHECK (((rating >= 1) AND (rating <= 5))) +); + + +ALTER TABLE public.reviews OWNER TO postgres; + +-- +-- Name: roles; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.roles ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(50) NOT NULL, + description text, + permissions jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.roles OWNER TO postgres; + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.users ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + email character varying(255) NOT NULL, + full_name character varying(255) NOT NULL, + phone character varying(20), + role_id uuid, + gov_id character varying(255), + verification_status public.verification_status_enum DEFAULT 'unverified'::public.verification_status_enum NOT NULL, + avatar_url character varying(255), + organization_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_login_at timestamp without time zone, + is_active boolean DEFAULT true NOT NULL, + password bytea +); + + +ALTER TABLE public.users OWNER TO postgres; + +-- +-- Name: verification; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verification ( + id uuid NOT NULL, + comment text NOT NULL, + create_at timestamp(6) without time zone NOT NULL, + evidence_photo_id uuid, + feature_id uuid, + is_official boolean NOT NULL, + location_id uuid NOT NULL, + organization_id uuid, + status boolean NOT NULL, + verified_id uuid NOT NULL +); + + +ALTER TABLE public.verification OWNER TO postgres; + +-- +-- Name: verifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + verified_by uuid, + organization_id uuid, + status boolean NOT NULL, + comment text, + evidence_photo_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + is_official boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.verifications OWNER TO postgres; + +-- +-- Data for Name: accessibility_features; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.accessibility_features (id, location_id, type, subtype, description, status, quality_rating, standards_compliance, created_by, created_at, updated_at) FROM stdin; +581b16f7-fe04-4b83-be44-a616d9fd835f 479d899f-a9be-4506-a314-f10867e3e8f0 call_button \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 479d899f-a9be-4506-a314-f10867e3e8f0 accessible_toilet \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +a765b190-666e-4dc9-8d64-39db2df8a659 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb call_button \N \N t \N t c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +ba48224a-ad60-477c-a15b-a7e938023ce6 3349f2de-1730-49db-a888-d0560aced177 ramp \N \N f \N f c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +bfac36a3-9638-474c-ba96-845267857630 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb parking \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +3bbeb94e-caf9-4df0-9d09-db1844bbd24e 3349f2de-1730-49db-a888-d0560aced177 elevator \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +\. + + +-- +-- Data for Name: audit_logs; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.audit_logs (id, user_id, action, entity_type, entity_id, details, ip_address, user_agent, created_at) FROM stdin; +38eea15a-4c3c-40fa-8f31-499fdb869190 c74f8b4b-81fd-4904-8a5e-026bb2c6538c delete document \N {"reason": "User request", "doc_name": "contract.pdf"} 172.16.1.23 curl/7.68.0 2025-04-12 11:32:09.562276 +adda61a4-d731-40d1-bfbf-53abbed0fe92 68fa1eb3-9302-4ab3-9037-463737fb45a7 update_profile user \N {"fields_changed": ["email", "name"]} 10.0.0.5 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) 2025-04-12 11:32:09.562276 +1bf4b383-969d-443d-8066-dd0f7d6d248b 00e44ab2-6259-411b-96ca-380de025150a login user \N {"success": true} 192.168.0.101 Mozilla/5.0 (Windows NT 10.0; Win64; x64) 2025-04-12 11:32:09.562276 +\. + + +-- +-- Data for Name: location; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.location (id, address, category, coder, hash, hash_is_zero, value, coordinates, created_at, created_by, description, last_verified_at, name, organization_id, overall_accessibility_score, rejection_reason, status, type, updated_at, working_hours, contacts) FROM stdin; +\. + + +-- +-- Data for Name: locations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.locations (id, name, address, coordinates, type, category, description, contacts, working_hours, created_by, organization_id, status, overall_accessibility_score, created_at, updated_at, last_verified_at, rejection_reason) FROM stdin; +85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb \\u0415\\u043f\\u0456\\u0446\\u0435\\u043d\\u0442\\u0440 \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 57, \\u041d\\u043e\\u0432\\u043e\\u0441\\u0435\\u043b\\u0456\\u0432\\u043a\\u0430 0101000020E6100000DAD7CE1D40C34940BE88C49354543F40 business \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +3349f2de-1730-49db-a888-d0560aced177 \\u041e\\u0431\\u043b\\u0430\\u0441\\u043d\\u0430 \\u0430\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0446\\u0456\\u044f \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 7, \\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E6100000C4530F58C1BE4940B57151CF5B4C3F40 government_building \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +479d899f-a9be-4506-a314-f10867e3e8f0 \\u041b\\u0456\\u043a\\u0430\\u0440\\u043d\\u044f \\u21162 \\u043f\\u0440\\u043e\\u0441\\u043f\\u0435\\u043a\\u0442 \\u041c\\u0438\\u0445\\u0430\\u0439\\u043b\\u0430 \\u0413\\u0440\\u0443\\u0448\\u0435\\u0432\\u0441\\u044c\\u043a\\u043e\\u0433\\u043e, 168,\\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E610000014E42F853AC2494012AAA3AA304F3F40 healthcare \N \N \N \N 00e44ab2-6259-411b-96ca-380de025150a \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +\. + + +-- +-- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.notifications (id, user_id, type, title, message, link, is_read, created_at) FROM stdin; +7d1612da-e4ed-42a0-aa67-7febb1faa7af \N system_error \\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430 \\u0412\\u0438\\u043d\\u0438\\u043a\\u043b\\u0430 \\u043f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u043f\\u0456\\u0434 \\u0447\\u0430\\u0441 \\u043e\\u0431\\u0440\\u043e\\u0431\\u043a\\u0438 \\u0432\\u0430\\u0448\\u043e\\u0433\\u043e \\u0437\\u0430\\u043f\\u0438\\u0442\\u0443. /support t 2025-04-12 11:25:13.505412 +e9792f56-2626-41b7-9892-d91af512cd27 \N warning \\u0417\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043d\\u043d\\u044f \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0422\\u0435\\u0440\\u043c\\u0456\\u043d \\u0432\\u0430\\u0448\\u043e\\u0457 \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0441\\u043f\\u043b\\u0438\\u0432\\u0430\\u0454 \\u0447\\u0435\\u0440\\u0435\\u0437 3 \\u0434\\u043d\\u0456. /subscription/renew f 2025-04-12 11:25:13.505412 +6ea8bdb5-0960-49b6-8256-d0e17a3738a3 \N info \\u041d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0423 \\u0432\\u0430\\u0441 \\u043d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0443 \\u0432\\u0445\\u0456\\u0434\\u043d\\u0438\\u0445. /messages/123 f 2025-04-12 11:25:13.505412 +\. + + +-- +-- Data for Name: organizations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.organizations (id, name, type, edrpou, website, is_verified, verification_document_url, created_at, updated_at) FROM stdin; +03e6527b-10b8-4400-a8d5-425047e6c144 \\u0422\\u041e\\u0412 "\\u0406\\u043d\\u043d\\u043e\\u0432\\u0430\\u0446\\u0456\\u0439\\u043d\\u0456 \\u0440\\u0456\\u0448\\u0435\\u043d\\u043d\\u044f" business 12344568 https://inno-solutions.ua f https://docs.ua/verif/inno123.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +b3900f49-afce-43ce-84c7-13ef2ab12eee \\u0411\\u0424 "\\u0414\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0430 \\u043f\\u043e\\u0440\\u0443\\u0447" ngo 84684522 https://help-now.org.ua f https://docs.ua/verif/help987.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +d28150a5-16a0-47e2-acbf-fe51654d1ec3 \\u041a\\u041f "\\u041c\\u0406\\u0441\\u044c\\u043a\\u0456 \\u0456\\u043d\\u0456\\u0446\\u0456\\u0430\\u0442\\u0438\\u0432\\u0438" government 54668489 \N f \N 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +\. + + +-- +-- Data for Name: photo; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photo (id, ai_accessibility_detection, ai_moderation_score, created_at, created_by, description, feature_id, location_id, metadata, moderation_status, reject_reason, thumbnail_url, url) FROM stdin; +\. + + +-- +-- Data for Name: photos; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photos (id, location_id, feature_id, url, thumbnail_url, description, created_by, moderation_status, ai_moderation_score, ai_accessibility_detection, created_at, reject_reason, metadata) FROM stdin; +b9efe387-5000-4101-8420-76c31b691bdf 479d899f-a9be-4506-a314-f10867e3e8f0 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 https://example.com/photos/0a1b2c3d4e5f.jpg https://example.com/photos/thumbnails/0a1b2c3d4e5f_thumb.jpg \N 00e44ab2-6259-411b-96ca-380de025150a pending \N \N 2025-04-12 14:33:31.354523 \N \N +250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 3349f2de-1730-49db-a888-d0560aced177 581b16f7-fe04-4b83-be44-a616d9fd835f https://cdn.accessibilityhub.org/images/photo_87234_large.jpg https://cdn.accessibilityhub.org/images/photo_87234_thumb.jpg \N c74f8b4b-81fd-4904-8a5e-026bb2c6538c rejected \N \N 2025-04-12 14:33:31.354523 Incorrect data \N +643d9e1b-7d63-4354-a9ce-f4929237b421 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main.jpg https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main_thumb.jpg \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 pending \N \N 2025-04-12 14:33:31.354523 \N \N +\. + + +-- +-- Data for Name: review; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.review (id, accessibility_experience, comment, created_at, location_id, moderation_status, rating, updated_at, user_id) FROM stdin; +\. + + +-- +-- Data for Name: reviews; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.reviews (id, location_id, user_id, rating, comment, accessibility_experience, moderation_status, created_at, updated_at) FROM stdin; +039f5712-f0d1-4164-9195-48a2a39b5951 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb c74f8b4b-81fd-4904-8a5e-026bb2c6538c 1 \\u0414\\u0443\\u0436\\u0435 \\u043f\\u043e\\u0433\\u0430\\u043d\\u0438\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u0412\\u0445\\u0456\\u0434\\u043d\\u0456 \\u0441\\u0445\\u043e\\u0434\\u0438 \\u0431\\u0435\\u0437 \\u043f\\u0430\\u043d\\u0434\\u0443\\u0441\\u0443, \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442 \\u043d\\u0435\\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0438\\u0439 rejected 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +0d192b48-e732-446e-84fa-4216641309a8 479d899f-a9be-4506-a314-f10867e3e8f0 00e44ab2-6259-411b-96ca-380de025150a 3 \\u0404 \\u043d\\u044e\\u0430\\u043d\\u0441\\u0438 \\u0437 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043e\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0454, \\u0430\\u043b\\u0435 \\u0434\\u0443\\u0436\\u0435 \\u043a\\u0440\\u0443\\u0442\\u0438\\u0439, \\u0434\\u0432\\u0435\\u0440\\u0456 \\u0432\\u0430\\u0436\\u043a\\u043e \\u0432\\u0456\\u0434\\u0447\\u0438\\u043d\\u0438\\u0442\\u0438 pending 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +3b9ecceb-387f-4f49-9483-7ac2dd184063 3349f2de-1730-49db-a888-d0560aced177 00e44ab2-6259-411b-96ca-380de025150a 5 \\u0427\\u0443\\u0434\\u043e\\u0432\\u0435 \\u043c\\u0456\\u0441\\u0446\\u0435! \\u0420\\u0435\\u043a\\u043e\\u043c\\u0435\\u043d\\u0434\\u0443\\u044e \\u0432\\u0441\\u0456\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0437\\u0440\\u0443\\u0447\\u043d\\u0438\\u0439, \\u0448\\u0438\\u0440\\u043e\\u043a\\u0456 \\u0434\\u0432\\u0435\\u0440\\u0456, \\u0454 \\u043b\\u0456\\u0444\\u0442 approved 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +\. + + +-- +-- Data for Name: roles; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.roles (id, name, description, permissions, created_at, updated_at) FROM stdin; +82830544-55c2-43de-9725-cd1508965eae admin \\u0410\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0442\\u043e\\u0440 \\u0437 \\u0443\\u0441\\u0456\\u043c\\u0430 \\u043f\\u0440\\u0430\\u0432\\u0430\\u043c\\u0438 {"read": true, "write": true, "delete": true, "manage_users": true} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +9c4866a1-b893-4736-8f39-ecd382616c9d viewer \\u041f\\u0435\\u0440\\u0435\\u0433\\u043b\\u044f\\u0434 \\u0431\\u0435\\u0437 \\u043c\\u043e\\u0436\\u043b\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0437\\u043c\\u0456\\u043d {"read": true, "write": false, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +6a12c5e4-02f9-425c-b590-ff456fdb35df editor \\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u043e\\u0440 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043d\\u0442\\u0443 {"read": true, "write": true, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +\. + + +-- +-- Data for Name: spatial_ref_sys; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin; +\. + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.users (id, email, full_name, phone, role_id, gov_id, verification_status, avatar_url, organization_id, created_at, updated_at, last_login_at, is_active, password) FROM stdin; +00e44ab2-6259-411b-96ca-380de025150a iryna.kovalenko@example.net \\u0406\\u0440\\u0438\\u043d\\u0430 \\u041a\\u043e\\u0432\\u0430\\u043b\\u0435\\u043d\\u043a\\u043e +380931234567 \N CC987654 unverified https://example.net/pic/iryna.jpeg 03e6527b-10b8-4400-a8d5-425047e6c144 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\xf7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7 +68fa1eb3-9302-4ab3-9037-463737fb45a7 taras.bondarenko@example.org \\u0422\\u0430\\u0440\\u0430\\u0441 \\u0411\\u043e\\u043d\\u0434\\u0430\\u0440\\u0435\\u043d\\u043a\\u043e +380671234567 \N BB654321 verified https://example.org/images/taras.png b3900f49-afce-43ce-84c7-13ef2ab12eee 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x38567e882369a9af763cb94d78d682081bcb88f94c7a9d85864531553f5fa5a942470897a3f72dd6b89985c3fd42ff9a78102a2f711492122da49530bfd7e133 +c74f8b4b-81fd-4904-8a5e-026bb2c6538c olena.ivchenko@example.com \\u041e\\u043b\\u0435\\u043d\\u0430 \\u0406\\u0432\\u0447\\u0435\\u043d\\u043a\\u043e +380501112233\n\n \N AE123456 verified https://example.com/avatars/olena.jpg d28150a5-16a0-47e2-acbf-fe51654d1ec3 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x3d983e0f78973ea9e44fced001b9b88dfe392450eecc02d41ed93e800de2f692efba2a939c61451b7c52b8026b77b6e1190af8576308d871c6379ee544d81d21 +71e636ea-b7e2-4bf6-abe7-fab206a7eaf5 test@example.com User666 \N \N \N unverified \N \N 2025-04-13 07:40:06.756668 2025-04-13 07:40:06.756668 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124356138744878774838486d4536683349626d4e773341245355305238506e6d6d3875303547567265633461544d55674e7a534b35747858504a4b394e756d4c757245 +e67d725b-3446-43c6-b2e3-f9baf951cf0a test@exle.com Useyy666 \N \N \N unverified \N \N 2025-04-13 08:42:12.493533 2025-04-13 08:42:12.493533 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d31246b52754e386d6e39326a2f576859735458656e4e6b51246d3150713631365834586354527230774a46796f766771763866313856427555624e4278432b7666566177 +de50d385-fa64-41d4-99e0-07298116bea4 BINGO@example.com Test User \N \N \N unverified \N \N 2025-04-13 12:19:13.289785 2025-04-13 12:19:13.289785 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124425269313032783745567a55366f3978522b754138412441554942636b5553694d6d547872534539464e545547306f632b4e4439553973656b47516a357143475359 +be905e92-8bc3-4d70-956c-f778dd871a16 vasya@dima vITALIK \N \N unverified \N \N 2025-04-13 08:02:43.040884 2025-04-13 12:22:00.604933 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d312475724c4178436b7766723230313767614938446d49412436314d4659777352623647502f4f736a56583978442b54776c7179317162314853314845394d47335a4955 +\. + + +-- +-- Data for Name: verification; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verification (id, comment, create_at, evidence_photo_id, feature_id, is_official, location_id, organization_id, status, verified_id) FROM stdin; +\. + + +-- +-- Data for Name: verifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verifications (id, location_id, feature_id, verified_by, organization_id, status, comment, evidence_photo_id, created_at, is_official) FROM stdin; +2b2c3181-7822-4fd7-8f41-79d049d369c9 479d899f-a9be-4506-a314-f10867e3e8f0 581b16f7-fe04-4b83-be44-a616d9fd835f 68fa1eb3-9302-4ab3-9037-463737fb45a7 b3900f49-afce-43ce-84c7-13ef2ab12eee f \\u041f\\u043e\\u0440\\u0443\\u0447\\u0435\\u043d\\u044c \\u0432\\u0456\\u0434\\u0441\\u0443\\u0442\\u043d\\u0456\\u0439 \N 2025-04-12 12:26:08.807848 t +6373a690-7a76-452c-80aa-203228a067bd 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 c74f8b4b-81fd-4904-8a5e-026bb2c6538c d28150a5-16a0-47e2-acbf-fe51654d1ec3 t \\u0414\\u043e\\u0441\\u0442\\u0443\\u043f \\u0434\\u043e \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442\\u0443 \\u043f\\u0456\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0436\\u0435\\u043d\\u043e b9efe387-5000-4101-8420-76c31b691bdf 2025-04-12 12:26:08.807848 f +96280588-c4fd-4c56-9ab9-2164af14119d 3349f2de-1730-49db-a888-d0560aced177 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 00e44ab2-6259-411b-96ca-380de025150a 03e6527b-10b8-4400-a8d5-425047e6c144 t \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u0435\\u043d\\u0438\\u0439, \\u0432\\u0456\\u0434\\u043f\\u043e\\u0432\\u0456\\u0434\\u0430\\u0454 \\u043d\\u043e\\u0440\\u043c\\u0430\\u043c 250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 2025-04-12 12:26:08.807848 t +\. + + +-- +-- Name: accessibility_features accessibility_features_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT accessibility_features_pkey PRIMARY KEY (id); + + +-- +-- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id); + + +-- +-- Name: location location_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.location + ADD CONSTRAINT location_pkey PRIMARY KEY (id); + + +-- +-- Name: locations locations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT locations_pkey PRIMARY KEY (id); + + +-- +-- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); + + +-- +-- Name: organizations organizations_edrpou_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_edrpou_key UNIQUE (edrpou); + + +-- +-- Name: organizations organizations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_pkey PRIMARY KEY (id); + + +-- +-- Name: photo photo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photo + ADD CONSTRAINT photo_pkey PRIMARY KEY (id); + + +-- +-- Name: photos photos_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT photos_pkey PRIMARY KEY (id); + + +-- +-- Name: review review_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.review + ADD CONSTRAINT review_pkey PRIMARY KEY (id); + + +-- +-- Name: reviews reviews_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT reviews_pkey PRIMARY KEY (id); + + +-- +-- Name: roles roles_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_name_key UNIQUE (name); + + +-- +-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + + +-- +-- Name: users users_gov_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_gov_id_key UNIQUE (gov_id); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: verification verification_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verification + ADD CONSTRAINT verification_pkey PRIMARY KEY (id); + + +-- +-- Name: verifications verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT verifications_pkey PRIMARY KEY (id); + + +-- +-- Name: idx_locations_coordinates; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX idx_locations_coordinates ON public.locations USING gist (coordinates); + + +-- +-- Name: audit_logs fk_audit_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT fk_audit_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: locations fk_locations_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: locations fk_locations_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: notifications fk_notifications_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT fk_notifications_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: photos fk_photos_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_role; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_role FOREIGN KEY (role_id) REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_photo; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_photo FOREIGN KEY (evidence_photo_id) REFERENCES public.photos(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_verified_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_verified_by FOREIGN KEY (verified_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- PostgreSQL database dump complete +-- + From e1899da65dae6e227171a7b879c55551ce5aab1b Mon Sep 17 00:00:00 2001 From: LmaksL Date: Sun, 13 Apr 2025 12:30:05 +0000 Subject: [PATCH 2/5] Backup: 20250413_123002 --- Database/backup_20250413_123002.sql | 904 ++++++++++++++++++++++++++++ 1 file changed, 904 insertions(+) create mode 100644 Database/backup_20250413_123002.sql diff --git a/Database/backup_20250413_123002.sql b/Database/backup_20250413_123002.sql new file mode 100644 index 0000000..ad1389c --- /dev/null +++ b/Database/backup_20250413_123002.sql @@ -0,0 +1,904 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 17.4 - Percona Server for PostgreSQL 17.4.1 +-- Dumped by pg_dump version 17.4 - Percona Server for PostgreSQL 17.4.1 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'SQL_ASCII'; +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; + +-- +-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; + + +-- +-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; + + +-- +-- Name: postgis; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis IS 'PostGIS geometry and geography spatial types and functions'; + + +-- +-- Name: feature_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.feature_type_enum AS ENUM ( + 'ramp', + 'elevator', + 'call_button', + 'tactile_path', + 'accessible_toilet', + 'parking', + 'entrance', + 'interior', + 'signage', + 'other' +); + + +ALTER TYPE public.feature_type_enum OWNER TO postgres; + +-- +-- Name: location_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_status_enum AS ENUM ( + 'draft', + 'pending', + 'published', + 'rejected' +); + + +ALTER TYPE public.location_status_enum OWNER TO postgres; + +-- +-- Name: location_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_type_enum AS ENUM ( + 'government_building', + 'business', + 'healthcare', + 'education', + 'culture', + 'transport', + 'recreation', + 'other' +); + + +ALTER TYPE public.location_type_enum OWNER TO postgres; + +-- +-- Name: moderation_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.moderation_status_enum AS ENUM ( + 'pending', + 'approved', + 'rejected' +); + + +ALTER TYPE public.moderation_status_enum OWNER TO postgres; + +-- +-- Name: organization_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.organization_type_enum AS ENUM ( + 'government', + 'business', + 'ngo' +); + + +ALTER TYPE public.organization_type_enum OWNER TO postgres; + +-- +-- Name: verification_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.verification_status_enum AS ENUM ( + 'unverified', + 'pending', + 'verified' +); + + +ALTER TYPE public.verification_status_enum OWNER TO postgres; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: accessibility_features; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.accessibility_features ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + type character varying(255) NOT NULL, + subtype character varying(100), + description text, + status boolean NOT NULL, + quality_rating integer, + standards_compliance boolean, + created_by uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.accessibility_features OWNER TO postgres; + +-- +-- Name: audit_logs; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.audit_logs ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + action character varying(100) NOT NULL, + entity_type character varying(50) NOT NULL, + entity_id uuid, + details jsonb, + ip_address character varying(45), + user_agent text, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.audit_logs OWNER TO postgres; + +-- +-- Name: location; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.location ( + id uuid NOT NULL, + address character varying(500) NOT NULL, + category character varying(100), + coder smallint, + hash integer, + hash_is_zero boolean, + value bytea, + coordinates public.geometry(Point,4326) NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid NOT NULL, + description text, + last_verified_at timestamp(6) without time zone NOT NULL, + name character varying(255) NOT NULL, + organization_id uuid, + overall_accessibility_score integer, + rejection_reason text, + status character varying(255) NOT NULL, + type character varying(255) NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + working_hours jsonb, + contacts jsonb, + CONSTRAINT location_status_check CHECK (((status)::text = ANY ((ARRAY['draft'::character varying, 'pending'::character varying, 'published'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT location_type_check CHECK (((type)::text = ANY ((ARRAY['government_building'::character varying, 'business'::character varying, 'healthcare'::character varying, 'education'::character varying, 'culture'::character varying, 'transport'::character varying, 'recreation'::character varying, 'other'::character varying])::text[]))) +); + + +ALTER TABLE public.location OWNER TO postgres; + +-- +-- Name: locations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.locations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + address character varying(500) NOT NULL, + coordinates public.geometry(Point,4326) NOT NULL, + type public.location_type_enum NOT NULL, + category character varying(100), + description text, + contacts jsonb, + working_hours jsonb, + created_by uuid, + organization_id uuid, + status public.location_status_enum DEFAULT 'draft'::public.location_status_enum NOT NULL, + overall_accessibility_score integer, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_verified_at timestamp without time zone, + rejection_reason text +); + + +ALTER TABLE public.locations OWNER TO postgres; + +-- +-- Name: notifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.notifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + type character varying(50) NOT NULL, + title character varying(255) NOT NULL, + message text NOT NULL, + link character varying(500), + is_read boolean DEFAULT false NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.notifications OWNER TO postgres; + +-- +-- Name: organizations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.organizations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + type public.organization_type_enum NOT NULL, + edrpou character varying(15), + website character varying(255), + is_verified boolean DEFAULT false NOT NULL, + verification_document_url character varying(255), + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.organizations OWNER TO postgres; + +-- +-- Name: photo; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photo ( + id uuid NOT NULL, + ai_accessibility_detection jsonb, + ai_moderation_score real, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid, + description text, + feature_id uuid, + location_id uuid NOT NULL, + metadata jsonb, + moderation_status smallint NOT NULL, + reject_reason text, + thumbnail_url character varying(500) NOT NULL, + url character varying(500) NOT NULL, + CONSTRAINT photo_ai_moderation_score_check CHECK (((ai_moderation_score <= (1)::double precision) AND (ai_moderation_score >= (0)::double precision))), + CONSTRAINT photo_moderation_status_check CHECK (((moderation_status >= 0) AND (moderation_status <= 2))) +); + + +ALTER TABLE public.photo OWNER TO postgres; + +-- +-- Name: photos; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photos ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + url character varying(500) NOT NULL, + thumbnail_url character varying(500) NOT NULL, + description text, + created_by uuid, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + ai_moderation_score double precision, + ai_accessibility_detection jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + reject_reason text, + metadata jsonb +); + + +ALTER TABLE public.photos OWNER TO postgres; + +-- +-- Name: review; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.review ( + id uuid NOT NULL, + accessibility_experience text NOT NULL, + comment text NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + location_id uuid NOT NULL, + moderation_status character varying(255) NOT NULL, + rating integer NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + user_id uuid NOT NULL, + CONSTRAINT review_moderation_status_check CHECK (((moderation_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT review_rating_check CHECK (((rating <= 5) AND (rating >= 1))) +); + + +ALTER TABLE public.review OWNER TO postgres; + +-- +-- Name: reviews; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.reviews ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + user_id uuid, + rating integer NOT NULL, + comment text, + accessibility_experience text, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + CONSTRAINT reviews_rating_check CHECK (((rating >= 1) AND (rating <= 5))) +); + + +ALTER TABLE public.reviews OWNER TO postgres; + +-- +-- Name: roles; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.roles ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(50) NOT NULL, + description text, + permissions jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.roles OWNER TO postgres; + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.users ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + email character varying(255) NOT NULL, + full_name character varying(255) NOT NULL, + phone character varying(20), + role_id uuid, + gov_id character varying(255), + verification_status public.verification_status_enum DEFAULT 'unverified'::public.verification_status_enum NOT NULL, + avatar_url character varying(255), + organization_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_login_at timestamp without time zone, + is_active boolean DEFAULT true NOT NULL, + password bytea +); + + +ALTER TABLE public.users OWNER TO postgres; + +-- +-- Name: verification; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verification ( + id uuid NOT NULL, + comment text NOT NULL, + create_at timestamp(6) without time zone NOT NULL, + evidence_photo_id uuid, + feature_id uuid, + is_official boolean NOT NULL, + location_id uuid NOT NULL, + organization_id uuid, + status boolean NOT NULL, + verified_id uuid NOT NULL +); + + +ALTER TABLE public.verification OWNER TO postgres; + +-- +-- Name: verifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + verified_by uuid, + organization_id uuid, + status boolean NOT NULL, + comment text, + evidence_photo_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + is_official boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.verifications OWNER TO postgres; + +-- +-- Data for Name: accessibility_features; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.accessibility_features (id, location_id, type, subtype, description, status, quality_rating, standards_compliance, created_by, created_at, updated_at) FROM stdin; +581b16f7-fe04-4b83-be44-a616d9fd835f 479d899f-a9be-4506-a314-f10867e3e8f0 call_button \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 479d899f-a9be-4506-a314-f10867e3e8f0 accessible_toilet \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +a765b190-666e-4dc9-8d64-39db2df8a659 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb call_button \N \N t \N t c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +ba48224a-ad60-477c-a15b-a7e938023ce6 3349f2de-1730-49db-a888-d0560aced177 ramp \N \N f \N f c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +bfac36a3-9638-474c-ba96-845267857630 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb parking \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +3bbeb94e-caf9-4df0-9d09-db1844bbd24e 3349f2de-1730-49db-a888-d0560aced177 elevator \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +\. + + +-- +-- Data for Name: audit_logs; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.audit_logs (id, user_id, action, entity_type, entity_id, details, ip_address, user_agent, created_at) FROM stdin; +38eea15a-4c3c-40fa-8f31-499fdb869190 c74f8b4b-81fd-4904-8a5e-026bb2c6538c delete document \N {"reason": "User request", "doc_name": "contract.pdf"} 172.16.1.23 curl/7.68.0 2025-04-12 11:32:09.562276 +adda61a4-d731-40d1-bfbf-53abbed0fe92 68fa1eb3-9302-4ab3-9037-463737fb45a7 update_profile user \N {"fields_changed": ["email", "name"]} 10.0.0.5 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) 2025-04-12 11:32:09.562276 +1bf4b383-969d-443d-8066-dd0f7d6d248b 00e44ab2-6259-411b-96ca-380de025150a login user \N {"success": true} 192.168.0.101 Mozilla/5.0 (Windows NT 10.0; Win64; x64) 2025-04-12 11:32:09.562276 +\. + + +-- +-- Data for Name: location; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.location (id, address, category, coder, hash, hash_is_zero, value, coordinates, created_at, created_by, description, last_verified_at, name, organization_id, overall_accessibility_score, rejection_reason, status, type, updated_at, working_hours, contacts) FROM stdin; +\. + + +-- +-- Data for Name: locations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.locations (id, name, address, coordinates, type, category, description, contacts, working_hours, created_by, organization_id, status, overall_accessibility_score, created_at, updated_at, last_verified_at, rejection_reason) FROM stdin; +85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb \\u0415\\u043f\\u0456\\u0446\\u0435\\u043d\\u0442\\u0440 \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 57, \\u041d\\u043e\\u0432\\u043e\\u0441\\u0435\\u043b\\u0456\\u0432\\u043a\\u0430 0101000020E6100000DAD7CE1D40C34940BE88C49354543F40 business \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +3349f2de-1730-49db-a888-d0560aced177 \\u041e\\u0431\\u043b\\u0430\\u0441\\u043d\\u0430 \\u0430\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0446\\u0456\\u044f \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 7, \\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E6100000C4530F58C1BE4940B57151CF5B4C3F40 government_building \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +479d899f-a9be-4506-a314-f10867e3e8f0 \\u041b\\u0456\\u043a\\u0430\\u0440\\u043d\\u044f \\u21162 \\u043f\\u0440\\u043e\\u0441\\u043f\\u0435\\u043a\\u0442 \\u041c\\u0438\\u0445\\u0430\\u0439\\u043b\\u0430 \\u0413\\u0440\\u0443\\u0448\\u0435\\u0432\\u0441\\u044c\\u043a\\u043e\\u0433\\u043e, 168,\\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E610000014E42F853AC2494012AAA3AA304F3F40 healthcare \N \N \N \N 00e44ab2-6259-411b-96ca-380de025150a \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +\. + + +-- +-- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.notifications (id, user_id, type, title, message, link, is_read, created_at) FROM stdin; +7d1612da-e4ed-42a0-aa67-7febb1faa7af \N system_error \\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430 \\u0412\\u0438\\u043d\\u0438\\u043a\\u043b\\u0430 \\u043f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u043f\\u0456\\u0434 \\u0447\\u0430\\u0441 \\u043e\\u0431\\u0440\\u043e\\u0431\\u043a\\u0438 \\u0432\\u0430\\u0448\\u043e\\u0433\\u043e \\u0437\\u0430\\u043f\\u0438\\u0442\\u0443. /support t 2025-04-12 11:25:13.505412 +e9792f56-2626-41b7-9892-d91af512cd27 \N warning \\u0417\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043d\\u043d\\u044f \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0422\\u0435\\u0440\\u043c\\u0456\\u043d \\u0432\\u0430\\u0448\\u043e\\u0457 \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0441\\u043f\\u043b\\u0438\\u0432\\u0430\\u0454 \\u0447\\u0435\\u0440\\u0435\\u0437 3 \\u0434\\u043d\\u0456. /subscription/renew f 2025-04-12 11:25:13.505412 +6ea8bdb5-0960-49b6-8256-d0e17a3738a3 \N info \\u041d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0423 \\u0432\\u0430\\u0441 \\u043d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0443 \\u0432\\u0445\\u0456\\u0434\\u043d\\u0438\\u0445. /messages/123 f 2025-04-12 11:25:13.505412 +\. + + +-- +-- Data for Name: organizations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.organizations (id, name, type, edrpou, website, is_verified, verification_document_url, created_at, updated_at) FROM stdin; +03e6527b-10b8-4400-a8d5-425047e6c144 \\u0422\\u041e\\u0412 "\\u0406\\u043d\\u043d\\u043e\\u0432\\u0430\\u0446\\u0456\\u0439\\u043d\\u0456 \\u0440\\u0456\\u0448\\u0435\\u043d\\u043d\\u044f" business 12344568 https://inno-solutions.ua f https://docs.ua/verif/inno123.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +b3900f49-afce-43ce-84c7-13ef2ab12eee \\u0411\\u0424 "\\u0414\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0430 \\u043f\\u043e\\u0440\\u0443\\u0447" ngo 84684522 https://help-now.org.ua f https://docs.ua/verif/help987.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +d28150a5-16a0-47e2-acbf-fe51654d1ec3 \\u041a\\u041f "\\u041c\\u0406\\u0441\\u044c\\u043a\\u0456 \\u0456\\u043d\\u0456\\u0446\\u0456\\u0430\\u0442\\u0438\\u0432\\u0438" government 54668489 \N f \N 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +\. + + +-- +-- Data for Name: photo; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photo (id, ai_accessibility_detection, ai_moderation_score, created_at, created_by, description, feature_id, location_id, metadata, moderation_status, reject_reason, thumbnail_url, url) FROM stdin; +\. + + +-- +-- Data for Name: photos; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photos (id, location_id, feature_id, url, thumbnail_url, description, created_by, moderation_status, ai_moderation_score, ai_accessibility_detection, created_at, reject_reason, metadata) FROM stdin; +b9efe387-5000-4101-8420-76c31b691bdf 479d899f-a9be-4506-a314-f10867e3e8f0 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 https://example.com/photos/0a1b2c3d4e5f.jpg https://example.com/photos/thumbnails/0a1b2c3d4e5f_thumb.jpg \N 00e44ab2-6259-411b-96ca-380de025150a pending \N \N 2025-04-12 14:33:31.354523 \N \N +250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 3349f2de-1730-49db-a888-d0560aced177 581b16f7-fe04-4b83-be44-a616d9fd835f https://cdn.accessibilityhub.org/images/photo_87234_large.jpg https://cdn.accessibilityhub.org/images/photo_87234_thumb.jpg \N c74f8b4b-81fd-4904-8a5e-026bb2c6538c rejected \N \N 2025-04-12 14:33:31.354523 Incorrect data \N +643d9e1b-7d63-4354-a9ce-f4929237b421 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main.jpg https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main_thumb.jpg \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 pending \N \N 2025-04-12 14:33:31.354523 \N \N +\. + + +-- +-- Data for Name: review; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.review (id, accessibility_experience, comment, created_at, location_id, moderation_status, rating, updated_at, user_id) FROM stdin; +\. + + +-- +-- Data for Name: reviews; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.reviews (id, location_id, user_id, rating, comment, accessibility_experience, moderation_status, created_at, updated_at) FROM stdin; +039f5712-f0d1-4164-9195-48a2a39b5951 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb c74f8b4b-81fd-4904-8a5e-026bb2c6538c 1 \\u0414\\u0443\\u0436\\u0435 \\u043f\\u043e\\u0433\\u0430\\u043d\\u0438\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u0412\\u0445\\u0456\\u0434\\u043d\\u0456 \\u0441\\u0445\\u043e\\u0434\\u0438 \\u0431\\u0435\\u0437 \\u043f\\u0430\\u043d\\u0434\\u0443\\u0441\\u0443, \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442 \\u043d\\u0435\\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0438\\u0439 rejected 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +0d192b48-e732-446e-84fa-4216641309a8 479d899f-a9be-4506-a314-f10867e3e8f0 00e44ab2-6259-411b-96ca-380de025150a 3 \\u0404 \\u043d\\u044e\\u0430\\u043d\\u0441\\u0438 \\u0437 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043e\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0454, \\u0430\\u043b\\u0435 \\u0434\\u0443\\u0436\\u0435 \\u043a\\u0440\\u0443\\u0442\\u0438\\u0439, \\u0434\\u0432\\u0435\\u0440\\u0456 \\u0432\\u0430\\u0436\\u043a\\u043e \\u0432\\u0456\\u0434\\u0447\\u0438\\u043d\\u0438\\u0442\\u0438 pending 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +3b9ecceb-387f-4f49-9483-7ac2dd184063 3349f2de-1730-49db-a888-d0560aced177 00e44ab2-6259-411b-96ca-380de025150a 5 \\u0427\\u0443\\u0434\\u043e\\u0432\\u0435 \\u043c\\u0456\\u0441\\u0446\\u0435! \\u0420\\u0435\\u043a\\u043e\\u043c\\u0435\\u043d\\u0434\\u0443\\u044e \\u0432\\u0441\\u0456\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0437\\u0440\\u0443\\u0447\\u043d\\u0438\\u0439, \\u0448\\u0438\\u0440\\u043e\\u043a\\u0456 \\u0434\\u0432\\u0435\\u0440\\u0456, \\u0454 \\u043b\\u0456\\u0444\\u0442 approved 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +\. + + +-- +-- Data for Name: roles; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.roles (id, name, description, permissions, created_at, updated_at) FROM stdin; +82830544-55c2-43de-9725-cd1508965eae admin \\u0410\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0442\\u043e\\u0440 \\u0437 \\u0443\\u0441\\u0456\\u043c\\u0430 \\u043f\\u0440\\u0430\\u0432\\u0430\\u043c\\u0438 {"read": true, "write": true, "delete": true, "manage_users": true} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +9c4866a1-b893-4736-8f39-ecd382616c9d viewer \\u041f\\u0435\\u0440\\u0435\\u0433\\u043b\\u044f\\u0434 \\u0431\\u0435\\u0437 \\u043c\\u043e\\u0436\\u043b\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0437\\u043c\\u0456\\u043d {"read": true, "write": false, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +6a12c5e4-02f9-425c-b590-ff456fdb35df editor \\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u043e\\u0440 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043d\\u0442\\u0443 {"read": true, "write": true, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +\. + + +-- +-- Data for Name: spatial_ref_sys; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin; +\. + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.users (id, email, full_name, phone, role_id, gov_id, verification_status, avatar_url, organization_id, created_at, updated_at, last_login_at, is_active, password) FROM stdin; +00e44ab2-6259-411b-96ca-380de025150a iryna.kovalenko@example.net \\u0406\\u0440\\u0438\\u043d\\u0430 \\u041a\\u043e\\u0432\\u0430\\u043b\\u0435\\u043d\\u043a\\u043e +380931234567 \N CC987654 unverified https://example.net/pic/iryna.jpeg 03e6527b-10b8-4400-a8d5-425047e6c144 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\xf7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7 +68fa1eb3-9302-4ab3-9037-463737fb45a7 taras.bondarenko@example.org \\u0422\\u0430\\u0440\\u0430\\u0441 \\u0411\\u043e\\u043d\\u0434\\u0430\\u0440\\u0435\\u043d\\u043a\\u043e +380671234567 \N BB654321 verified https://example.org/images/taras.png b3900f49-afce-43ce-84c7-13ef2ab12eee 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x38567e882369a9af763cb94d78d682081bcb88f94c7a9d85864531553f5fa5a942470897a3f72dd6b89985c3fd42ff9a78102a2f711492122da49530bfd7e133 +c74f8b4b-81fd-4904-8a5e-026bb2c6538c olena.ivchenko@example.com \\u041e\\u043b\\u0435\\u043d\\u0430 \\u0406\\u0432\\u0447\\u0435\\u043d\\u043a\\u043e +380501112233\n\n \N AE123456 verified https://example.com/avatars/olena.jpg d28150a5-16a0-47e2-acbf-fe51654d1ec3 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x3d983e0f78973ea9e44fced001b9b88dfe392450eecc02d41ed93e800de2f692efba2a939c61451b7c52b8026b77b6e1190af8576308d871c6379ee544d81d21 +71e636ea-b7e2-4bf6-abe7-fab206a7eaf5 test@example.com User666 \N \N \N unverified \N \N 2025-04-13 07:40:06.756668 2025-04-13 07:40:06.756668 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124356138744878774838486d4536683349626d4e773341245355305238506e6d6d3875303547567265633461544d55674e7a534b35747858504a4b394e756d4c757245 +e67d725b-3446-43c6-b2e3-f9baf951cf0a test@exle.com Useyy666 \N \N \N unverified \N \N 2025-04-13 08:42:12.493533 2025-04-13 08:42:12.493533 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d31246b52754e386d6e39326a2f576859735458656e4e6b51246d3150713631365834586354527230774a46796f766771763866313856427555624e4278432b7666566177 +de50d385-fa64-41d4-99e0-07298116bea4 BINGO@example.com Test User \N \N \N unverified \N \N 2025-04-13 12:19:13.289785 2025-04-13 12:19:13.289785 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124425269313032783745567a55366f3978522b754138412441554942636b5553694d6d547872534539464e545547306f632b4e4439553973656b47516a357143475359 +be905e92-8bc3-4d70-956c-f778dd871a16 vasya@dima vITALIK \N \N unverified \N \N 2025-04-13 08:02:43.040884 2025-04-13 12:22:00.604933 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d312475724c4178436b7766723230313767614938446d49412436314d4659777352623647502f4f736a56583978442b54776c7179317162314853314845394d47335a4955 +\. + + +-- +-- Data for Name: verification; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verification (id, comment, create_at, evidence_photo_id, feature_id, is_official, location_id, organization_id, status, verified_id) FROM stdin; +\. + + +-- +-- Data for Name: verifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verifications (id, location_id, feature_id, verified_by, organization_id, status, comment, evidence_photo_id, created_at, is_official) FROM stdin; +2b2c3181-7822-4fd7-8f41-79d049d369c9 479d899f-a9be-4506-a314-f10867e3e8f0 581b16f7-fe04-4b83-be44-a616d9fd835f 68fa1eb3-9302-4ab3-9037-463737fb45a7 b3900f49-afce-43ce-84c7-13ef2ab12eee f \\u041f\\u043e\\u0440\\u0443\\u0447\\u0435\\u043d\\u044c \\u0432\\u0456\\u0434\\u0441\\u0443\\u0442\\u043d\\u0456\\u0439 \N 2025-04-12 12:26:08.807848 t +6373a690-7a76-452c-80aa-203228a067bd 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 c74f8b4b-81fd-4904-8a5e-026bb2c6538c d28150a5-16a0-47e2-acbf-fe51654d1ec3 t \\u0414\\u043e\\u0441\\u0442\\u0443\\u043f \\u0434\\u043e \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442\\u0443 \\u043f\\u0456\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0436\\u0435\\u043d\\u043e b9efe387-5000-4101-8420-76c31b691bdf 2025-04-12 12:26:08.807848 f +96280588-c4fd-4c56-9ab9-2164af14119d 3349f2de-1730-49db-a888-d0560aced177 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 00e44ab2-6259-411b-96ca-380de025150a 03e6527b-10b8-4400-a8d5-425047e6c144 t \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u0435\\u043d\\u0438\\u0439, \\u0432\\u0456\\u0434\\u043f\\u043e\\u0432\\u0456\\u0434\\u0430\\u0454 \\u043d\\u043e\\u0440\\u043c\\u0430\\u043c 250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 2025-04-12 12:26:08.807848 t +\. + + +-- +-- Name: accessibility_features accessibility_features_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT accessibility_features_pkey PRIMARY KEY (id); + + +-- +-- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id); + + +-- +-- Name: location location_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.location + ADD CONSTRAINT location_pkey PRIMARY KEY (id); + + +-- +-- Name: locations locations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT locations_pkey PRIMARY KEY (id); + + +-- +-- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); + + +-- +-- Name: organizations organizations_edrpou_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_edrpou_key UNIQUE (edrpou); + + +-- +-- Name: organizations organizations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_pkey PRIMARY KEY (id); + + +-- +-- Name: photo photo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photo + ADD CONSTRAINT photo_pkey PRIMARY KEY (id); + + +-- +-- Name: photos photos_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT photos_pkey PRIMARY KEY (id); + + +-- +-- Name: review review_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.review + ADD CONSTRAINT review_pkey PRIMARY KEY (id); + + +-- +-- Name: reviews reviews_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT reviews_pkey PRIMARY KEY (id); + + +-- +-- Name: roles roles_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_name_key UNIQUE (name); + + +-- +-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + + +-- +-- Name: users users_gov_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_gov_id_key UNIQUE (gov_id); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: verification verification_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verification + ADD CONSTRAINT verification_pkey PRIMARY KEY (id); + + +-- +-- Name: verifications verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT verifications_pkey PRIMARY KEY (id); + + +-- +-- Name: idx_locations_coordinates; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX idx_locations_coordinates ON public.locations USING gist (coordinates); + + +-- +-- Name: audit_logs fk_audit_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT fk_audit_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: locations fk_locations_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: locations fk_locations_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: notifications fk_notifications_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT fk_notifications_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: photos fk_photos_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_role; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_role FOREIGN KEY (role_id) REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_photo; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_photo FOREIGN KEY (evidence_photo_id) REFERENCES public.photos(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_verified_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_verified_by FOREIGN KEY (verified_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- PostgreSQL database dump complete +-- + From 97cd5db2df44992b7088cd538d5811593ae9fe5d Mon Sep 17 00:00:00 2001 From: LmaksL Date: Sun, 13 Apr 2025 12:39:35 +0000 Subject: [PATCH 3/5] Backup: 20250413_123933 --- Database/backup_20250413_123651.sql | 0 Database/backup_20250413_123933.sql | 904 ++++++++++++++++++++++++++++ 2 files changed, 904 insertions(+) create mode 100644 Database/backup_20250413_123651.sql create mode 100644 Database/backup_20250413_123933.sql diff --git a/Database/backup_20250413_123651.sql b/Database/backup_20250413_123651.sql new file mode 100644 index 0000000..e69de29 diff --git a/Database/backup_20250413_123933.sql b/Database/backup_20250413_123933.sql new file mode 100644 index 0000000..ad1389c --- /dev/null +++ b/Database/backup_20250413_123933.sql @@ -0,0 +1,904 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 17.4 - Percona Server for PostgreSQL 17.4.1 +-- Dumped by pg_dump version 17.4 - Percona Server for PostgreSQL 17.4.1 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'SQL_ASCII'; +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; + +-- +-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; + + +-- +-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; + + +-- +-- Name: postgis; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis IS 'PostGIS geometry and geography spatial types and functions'; + + +-- +-- Name: feature_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.feature_type_enum AS ENUM ( + 'ramp', + 'elevator', + 'call_button', + 'tactile_path', + 'accessible_toilet', + 'parking', + 'entrance', + 'interior', + 'signage', + 'other' +); + + +ALTER TYPE public.feature_type_enum OWNER TO postgres; + +-- +-- Name: location_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_status_enum AS ENUM ( + 'draft', + 'pending', + 'published', + 'rejected' +); + + +ALTER TYPE public.location_status_enum OWNER TO postgres; + +-- +-- Name: location_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_type_enum AS ENUM ( + 'government_building', + 'business', + 'healthcare', + 'education', + 'culture', + 'transport', + 'recreation', + 'other' +); + + +ALTER TYPE public.location_type_enum OWNER TO postgres; + +-- +-- Name: moderation_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.moderation_status_enum AS ENUM ( + 'pending', + 'approved', + 'rejected' +); + + +ALTER TYPE public.moderation_status_enum OWNER TO postgres; + +-- +-- Name: organization_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.organization_type_enum AS ENUM ( + 'government', + 'business', + 'ngo' +); + + +ALTER TYPE public.organization_type_enum OWNER TO postgres; + +-- +-- Name: verification_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.verification_status_enum AS ENUM ( + 'unverified', + 'pending', + 'verified' +); + + +ALTER TYPE public.verification_status_enum OWNER TO postgres; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: accessibility_features; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.accessibility_features ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + type character varying(255) NOT NULL, + subtype character varying(100), + description text, + status boolean NOT NULL, + quality_rating integer, + standards_compliance boolean, + created_by uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.accessibility_features OWNER TO postgres; + +-- +-- Name: audit_logs; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.audit_logs ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + action character varying(100) NOT NULL, + entity_type character varying(50) NOT NULL, + entity_id uuid, + details jsonb, + ip_address character varying(45), + user_agent text, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.audit_logs OWNER TO postgres; + +-- +-- Name: location; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.location ( + id uuid NOT NULL, + address character varying(500) NOT NULL, + category character varying(100), + coder smallint, + hash integer, + hash_is_zero boolean, + value bytea, + coordinates public.geometry(Point,4326) NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid NOT NULL, + description text, + last_verified_at timestamp(6) without time zone NOT NULL, + name character varying(255) NOT NULL, + organization_id uuid, + overall_accessibility_score integer, + rejection_reason text, + status character varying(255) NOT NULL, + type character varying(255) NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + working_hours jsonb, + contacts jsonb, + CONSTRAINT location_status_check CHECK (((status)::text = ANY ((ARRAY['draft'::character varying, 'pending'::character varying, 'published'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT location_type_check CHECK (((type)::text = ANY ((ARRAY['government_building'::character varying, 'business'::character varying, 'healthcare'::character varying, 'education'::character varying, 'culture'::character varying, 'transport'::character varying, 'recreation'::character varying, 'other'::character varying])::text[]))) +); + + +ALTER TABLE public.location OWNER TO postgres; + +-- +-- Name: locations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.locations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + address character varying(500) NOT NULL, + coordinates public.geometry(Point,4326) NOT NULL, + type public.location_type_enum NOT NULL, + category character varying(100), + description text, + contacts jsonb, + working_hours jsonb, + created_by uuid, + organization_id uuid, + status public.location_status_enum DEFAULT 'draft'::public.location_status_enum NOT NULL, + overall_accessibility_score integer, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_verified_at timestamp without time zone, + rejection_reason text +); + + +ALTER TABLE public.locations OWNER TO postgres; + +-- +-- Name: notifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.notifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + type character varying(50) NOT NULL, + title character varying(255) NOT NULL, + message text NOT NULL, + link character varying(500), + is_read boolean DEFAULT false NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.notifications OWNER TO postgres; + +-- +-- Name: organizations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.organizations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + type public.organization_type_enum NOT NULL, + edrpou character varying(15), + website character varying(255), + is_verified boolean DEFAULT false NOT NULL, + verification_document_url character varying(255), + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.organizations OWNER TO postgres; + +-- +-- Name: photo; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photo ( + id uuid NOT NULL, + ai_accessibility_detection jsonb, + ai_moderation_score real, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid, + description text, + feature_id uuid, + location_id uuid NOT NULL, + metadata jsonb, + moderation_status smallint NOT NULL, + reject_reason text, + thumbnail_url character varying(500) NOT NULL, + url character varying(500) NOT NULL, + CONSTRAINT photo_ai_moderation_score_check CHECK (((ai_moderation_score <= (1)::double precision) AND (ai_moderation_score >= (0)::double precision))), + CONSTRAINT photo_moderation_status_check CHECK (((moderation_status >= 0) AND (moderation_status <= 2))) +); + + +ALTER TABLE public.photo OWNER TO postgres; + +-- +-- Name: photos; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photos ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + url character varying(500) NOT NULL, + thumbnail_url character varying(500) NOT NULL, + description text, + created_by uuid, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + ai_moderation_score double precision, + ai_accessibility_detection jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + reject_reason text, + metadata jsonb +); + + +ALTER TABLE public.photos OWNER TO postgres; + +-- +-- Name: review; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.review ( + id uuid NOT NULL, + accessibility_experience text NOT NULL, + comment text NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + location_id uuid NOT NULL, + moderation_status character varying(255) NOT NULL, + rating integer NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + user_id uuid NOT NULL, + CONSTRAINT review_moderation_status_check CHECK (((moderation_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT review_rating_check CHECK (((rating <= 5) AND (rating >= 1))) +); + + +ALTER TABLE public.review OWNER TO postgres; + +-- +-- Name: reviews; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.reviews ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + user_id uuid, + rating integer NOT NULL, + comment text, + accessibility_experience text, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + CONSTRAINT reviews_rating_check CHECK (((rating >= 1) AND (rating <= 5))) +); + + +ALTER TABLE public.reviews OWNER TO postgres; + +-- +-- Name: roles; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.roles ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(50) NOT NULL, + description text, + permissions jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.roles OWNER TO postgres; + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.users ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + email character varying(255) NOT NULL, + full_name character varying(255) NOT NULL, + phone character varying(20), + role_id uuid, + gov_id character varying(255), + verification_status public.verification_status_enum DEFAULT 'unverified'::public.verification_status_enum NOT NULL, + avatar_url character varying(255), + organization_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_login_at timestamp without time zone, + is_active boolean DEFAULT true NOT NULL, + password bytea +); + + +ALTER TABLE public.users OWNER TO postgres; + +-- +-- Name: verification; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verification ( + id uuid NOT NULL, + comment text NOT NULL, + create_at timestamp(6) without time zone NOT NULL, + evidence_photo_id uuid, + feature_id uuid, + is_official boolean NOT NULL, + location_id uuid NOT NULL, + organization_id uuid, + status boolean NOT NULL, + verified_id uuid NOT NULL +); + + +ALTER TABLE public.verification OWNER TO postgres; + +-- +-- Name: verifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + verified_by uuid, + organization_id uuid, + status boolean NOT NULL, + comment text, + evidence_photo_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + is_official boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.verifications OWNER TO postgres; + +-- +-- Data for Name: accessibility_features; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.accessibility_features (id, location_id, type, subtype, description, status, quality_rating, standards_compliance, created_by, created_at, updated_at) FROM stdin; +581b16f7-fe04-4b83-be44-a616d9fd835f 479d899f-a9be-4506-a314-f10867e3e8f0 call_button \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 479d899f-a9be-4506-a314-f10867e3e8f0 accessible_toilet \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +a765b190-666e-4dc9-8d64-39db2df8a659 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb call_button \N \N t \N t c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +ba48224a-ad60-477c-a15b-a7e938023ce6 3349f2de-1730-49db-a888-d0560aced177 ramp \N \N f \N f c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +bfac36a3-9638-474c-ba96-845267857630 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb parking \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +3bbeb94e-caf9-4df0-9d09-db1844bbd24e 3349f2de-1730-49db-a888-d0560aced177 elevator \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +\. + + +-- +-- Data for Name: audit_logs; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.audit_logs (id, user_id, action, entity_type, entity_id, details, ip_address, user_agent, created_at) FROM stdin; +38eea15a-4c3c-40fa-8f31-499fdb869190 c74f8b4b-81fd-4904-8a5e-026bb2c6538c delete document \N {"reason": "User request", "doc_name": "contract.pdf"} 172.16.1.23 curl/7.68.0 2025-04-12 11:32:09.562276 +adda61a4-d731-40d1-bfbf-53abbed0fe92 68fa1eb3-9302-4ab3-9037-463737fb45a7 update_profile user \N {"fields_changed": ["email", "name"]} 10.0.0.5 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) 2025-04-12 11:32:09.562276 +1bf4b383-969d-443d-8066-dd0f7d6d248b 00e44ab2-6259-411b-96ca-380de025150a login user \N {"success": true} 192.168.0.101 Mozilla/5.0 (Windows NT 10.0; Win64; x64) 2025-04-12 11:32:09.562276 +\. + + +-- +-- Data for Name: location; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.location (id, address, category, coder, hash, hash_is_zero, value, coordinates, created_at, created_by, description, last_verified_at, name, organization_id, overall_accessibility_score, rejection_reason, status, type, updated_at, working_hours, contacts) FROM stdin; +\. + + +-- +-- Data for Name: locations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.locations (id, name, address, coordinates, type, category, description, contacts, working_hours, created_by, organization_id, status, overall_accessibility_score, created_at, updated_at, last_verified_at, rejection_reason) FROM stdin; +85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb \\u0415\\u043f\\u0456\\u0446\\u0435\\u043d\\u0442\\u0440 \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 57, \\u041d\\u043e\\u0432\\u043e\\u0441\\u0435\\u043b\\u0456\\u0432\\u043a\\u0430 0101000020E6100000DAD7CE1D40C34940BE88C49354543F40 business \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +3349f2de-1730-49db-a888-d0560aced177 \\u041e\\u0431\\u043b\\u0430\\u0441\\u043d\\u0430 \\u0430\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0446\\u0456\\u044f \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 7, \\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E6100000C4530F58C1BE4940B57151CF5B4C3F40 government_building \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +479d899f-a9be-4506-a314-f10867e3e8f0 \\u041b\\u0456\\u043a\\u0430\\u0440\\u043d\\u044f \\u21162 \\u043f\\u0440\\u043e\\u0441\\u043f\\u0435\\u043a\\u0442 \\u041c\\u0438\\u0445\\u0430\\u0439\\u043b\\u0430 \\u0413\\u0440\\u0443\\u0448\\u0435\\u0432\\u0441\\u044c\\u043a\\u043e\\u0433\\u043e, 168,\\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E610000014E42F853AC2494012AAA3AA304F3F40 healthcare \N \N \N \N 00e44ab2-6259-411b-96ca-380de025150a \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +\. + + +-- +-- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.notifications (id, user_id, type, title, message, link, is_read, created_at) FROM stdin; +7d1612da-e4ed-42a0-aa67-7febb1faa7af \N system_error \\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430 \\u0412\\u0438\\u043d\\u0438\\u043a\\u043b\\u0430 \\u043f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u043f\\u0456\\u0434 \\u0447\\u0430\\u0441 \\u043e\\u0431\\u0440\\u043e\\u0431\\u043a\\u0438 \\u0432\\u0430\\u0448\\u043e\\u0433\\u043e \\u0437\\u0430\\u043f\\u0438\\u0442\\u0443. /support t 2025-04-12 11:25:13.505412 +e9792f56-2626-41b7-9892-d91af512cd27 \N warning \\u0417\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043d\\u043d\\u044f \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0422\\u0435\\u0440\\u043c\\u0456\\u043d \\u0432\\u0430\\u0448\\u043e\\u0457 \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0441\\u043f\\u043b\\u0438\\u0432\\u0430\\u0454 \\u0447\\u0435\\u0440\\u0435\\u0437 3 \\u0434\\u043d\\u0456. /subscription/renew f 2025-04-12 11:25:13.505412 +6ea8bdb5-0960-49b6-8256-d0e17a3738a3 \N info \\u041d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0423 \\u0432\\u0430\\u0441 \\u043d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0443 \\u0432\\u0445\\u0456\\u0434\\u043d\\u0438\\u0445. /messages/123 f 2025-04-12 11:25:13.505412 +\. + + +-- +-- Data for Name: organizations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.organizations (id, name, type, edrpou, website, is_verified, verification_document_url, created_at, updated_at) FROM stdin; +03e6527b-10b8-4400-a8d5-425047e6c144 \\u0422\\u041e\\u0412 "\\u0406\\u043d\\u043d\\u043e\\u0432\\u0430\\u0446\\u0456\\u0439\\u043d\\u0456 \\u0440\\u0456\\u0448\\u0435\\u043d\\u043d\\u044f" business 12344568 https://inno-solutions.ua f https://docs.ua/verif/inno123.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +b3900f49-afce-43ce-84c7-13ef2ab12eee \\u0411\\u0424 "\\u0414\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0430 \\u043f\\u043e\\u0440\\u0443\\u0447" ngo 84684522 https://help-now.org.ua f https://docs.ua/verif/help987.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +d28150a5-16a0-47e2-acbf-fe51654d1ec3 \\u041a\\u041f "\\u041c\\u0406\\u0441\\u044c\\u043a\\u0456 \\u0456\\u043d\\u0456\\u0446\\u0456\\u0430\\u0442\\u0438\\u0432\\u0438" government 54668489 \N f \N 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +\. + + +-- +-- Data for Name: photo; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photo (id, ai_accessibility_detection, ai_moderation_score, created_at, created_by, description, feature_id, location_id, metadata, moderation_status, reject_reason, thumbnail_url, url) FROM stdin; +\. + + +-- +-- Data for Name: photos; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photos (id, location_id, feature_id, url, thumbnail_url, description, created_by, moderation_status, ai_moderation_score, ai_accessibility_detection, created_at, reject_reason, metadata) FROM stdin; +b9efe387-5000-4101-8420-76c31b691bdf 479d899f-a9be-4506-a314-f10867e3e8f0 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 https://example.com/photos/0a1b2c3d4e5f.jpg https://example.com/photos/thumbnails/0a1b2c3d4e5f_thumb.jpg \N 00e44ab2-6259-411b-96ca-380de025150a pending \N \N 2025-04-12 14:33:31.354523 \N \N +250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 3349f2de-1730-49db-a888-d0560aced177 581b16f7-fe04-4b83-be44-a616d9fd835f https://cdn.accessibilityhub.org/images/photo_87234_large.jpg https://cdn.accessibilityhub.org/images/photo_87234_thumb.jpg \N c74f8b4b-81fd-4904-8a5e-026bb2c6538c rejected \N \N 2025-04-12 14:33:31.354523 Incorrect data \N +643d9e1b-7d63-4354-a9ce-f4929237b421 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main.jpg https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main_thumb.jpg \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 pending \N \N 2025-04-12 14:33:31.354523 \N \N +\. + + +-- +-- Data for Name: review; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.review (id, accessibility_experience, comment, created_at, location_id, moderation_status, rating, updated_at, user_id) FROM stdin; +\. + + +-- +-- Data for Name: reviews; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.reviews (id, location_id, user_id, rating, comment, accessibility_experience, moderation_status, created_at, updated_at) FROM stdin; +039f5712-f0d1-4164-9195-48a2a39b5951 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb c74f8b4b-81fd-4904-8a5e-026bb2c6538c 1 \\u0414\\u0443\\u0436\\u0435 \\u043f\\u043e\\u0433\\u0430\\u043d\\u0438\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u0412\\u0445\\u0456\\u0434\\u043d\\u0456 \\u0441\\u0445\\u043e\\u0434\\u0438 \\u0431\\u0435\\u0437 \\u043f\\u0430\\u043d\\u0434\\u0443\\u0441\\u0443, \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442 \\u043d\\u0435\\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0438\\u0439 rejected 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +0d192b48-e732-446e-84fa-4216641309a8 479d899f-a9be-4506-a314-f10867e3e8f0 00e44ab2-6259-411b-96ca-380de025150a 3 \\u0404 \\u043d\\u044e\\u0430\\u043d\\u0441\\u0438 \\u0437 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043e\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0454, \\u0430\\u043b\\u0435 \\u0434\\u0443\\u0436\\u0435 \\u043a\\u0440\\u0443\\u0442\\u0438\\u0439, \\u0434\\u0432\\u0435\\u0440\\u0456 \\u0432\\u0430\\u0436\\u043a\\u043e \\u0432\\u0456\\u0434\\u0447\\u0438\\u043d\\u0438\\u0442\\u0438 pending 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +3b9ecceb-387f-4f49-9483-7ac2dd184063 3349f2de-1730-49db-a888-d0560aced177 00e44ab2-6259-411b-96ca-380de025150a 5 \\u0427\\u0443\\u0434\\u043e\\u0432\\u0435 \\u043c\\u0456\\u0441\\u0446\\u0435! \\u0420\\u0435\\u043a\\u043e\\u043c\\u0435\\u043d\\u0434\\u0443\\u044e \\u0432\\u0441\\u0456\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0437\\u0440\\u0443\\u0447\\u043d\\u0438\\u0439, \\u0448\\u0438\\u0440\\u043e\\u043a\\u0456 \\u0434\\u0432\\u0435\\u0440\\u0456, \\u0454 \\u043b\\u0456\\u0444\\u0442 approved 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +\. + + +-- +-- Data for Name: roles; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.roles (id, name, description, permissions, created_at, updated_at) FROM stdin; +82830544-55c2-43de-9725-cd1508965eae admin \\u0410\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0442\\u043e\\u0440 \\u0437 \\u0443\\u0441\\u0456\\u043c\\u0430 \\u043f\\u0440\\u0430\\u0432\\u0430\\u043c\\u0438 {"read": true, "write": true, "delete": true, "manage_users": true} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +9c4866a1-b893-4736-8f39-ecd382616c9d viewer \\u041f\\u0435\\u0440\\u0435\\u0433\\u043b\\u044f\\u0434 \\u0431\\u0435\\u0437 \\u043c\\u043e\\u0436\\u043b\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0437\\u043c\\u0456\\u043d {"read": true, "write": false, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +6a12c5e4-02f9-425c-b590-ff456fdb35df editor \\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u043e\\u0440 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043d\\u0442\\u0443 {"read": true, "write": true, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +\. + + +-- +-- Data for Name: spatial_ref_sys; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin; +\. + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.users (id, email, full_name, phone, role_id, gov_id, verification_status, avatar_url, organization_id, created_at, updated_at, last_login_at, is_active, password) FROM stdin; +00e44ab2-6259-411b-96ca-380de025150a iryna.kovalenko@example.net \\u0406\\u0440\\u0438\\u043d\\u0430 \\u041a\\u043e\\u0432\\u0430\\u043b\\u0435\\u043d\\u043a\\u043e +380931234567 \N CC987654 unverified https://example.net/pic/iryna.jpeg 03e6527b-10b8-4400-a8d5-425047e6c144 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\xf7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7 +68fa1eb3-9302-4ab3-9037-463737fb45a7 taras.bondarenko@example.org \\u0422\\u0430\\u0440\\u0430\\u0441 \\u0411\\u043e\\u043d\\u0434\\u0430\\u0440\\u0435\\u043d\\u043a\\u043e +380671234567 \N BB654321 verified https://example.org/images/taras.png b3900f49-afce-43ce-84c7-13ef2ab12eee 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x38567e882369a9af763cb94d78d682081bcb88f94c7a9d85864531553f5fa5a942470897a3f72dd6b89985c3fd42ff9a78102a2f711492122da49530bfd7e133 +c74f8b4b-81fd-4904-8a5e-026bb2c6538c olena.ivchenko@example.com \\u041e\\u043b\\u0435\\u043d\\u0430 \\u0406\\u0432\\u0447\\u0435\\u043d\\u043a\\u043e +380501112233\n\n \N AE123456 verified https://example.com/avatars/olena.jpg d28150a5-16a0-47e2-acbf-fe51654d1ec3 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x3d983e0f78973ea9e44fced001b9b88dfe392450eecc02d41ed93e800de2f692efba2a939c61451b7c52b8026b77b6e1190af8576308d871c6379ee544d81d21 +71e636ea-b7e2-4bf6-abe7-fab206a7eaf5 test@example.com User666 \N \N \N unverified \N \N 2025-04-13 07:40:06.756668 2025-04-13 07:40:06.756668 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124356138744878774838486d4536683349626d4e773341245355305238506e6d6d3875303547567265633461544d55674e7a534b35747858504a4b394e756d4c757245 +e67d725b-3446-43c6-b2e3-f9baf951cf0a test@exle.com Useyy666 \N \N \N unverified \N \N 2025-04-13 08:42:12.493533 2025-04-13 08:42:12.493533 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d31246b52754e386d6e39326a2f576859735458656e4e6b51246d3150713631365834586354527230774a46796f766771763866313856427555624e4278432b7666566177 +de50d385-fa64-41d4-99e0-07298116bea4 BINGO@example.com Test User \N \N \N unverified \N \N 2025-04-13 12:19:13.289785 2025-04-13 12:19:13.289785 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124425269313032783745567a55366f3978522b754138412441554942636b5553694d6d547872534539464e545547306f632b4e4439553973656b47516a357143475359 +be905e92-8bc3-4d70-956c-f778dd871a16 vasya@dima vITALIK \N \N unverified \N \N 2025-04-13 08:02:43.040884 2025-04-13 12:22:00.604933 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d312475724c4178436b7766723230313767614938446d49412436314d4659777352623647502f4f736a56583978442b54776c7179317162314853314845394d47335a4955 +\. + + +-- +-- Data for Name: verification; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verification (id, comment, create_at, evidence_photo_id, feature_id, is_official, location_id, organization_id, status, verified_id) FROM stdin; +\. + + +-- +-- Data for Name: verifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verifications (id, location_id, feature_id, verified_by, organization_id, status, comment, evidence_photo_id, created_at, is_official) FROM stdin; +2b2c3181-7822-4fd7-8f41-79d049d369c9 479d899f-a9be-4506-a314-f10867e3e8f0 581b16f7-fe04-4b83-be44-a616d9fd835f 68fa1eb3-9302-4ab3-9037-463737fb45a7 b3900f49-afce-43ce-84c7-13ef2ab12eee f \\u041f\\u043e\\u0440\\u0443\\u0447\\u0435\\u043d\\u044c \\u0432\\u0456\\u0434\\u0441\\u0443\\u0442\\u043d\\u0456\\u0439 \N 2025-04-12 12:26:08.807848 t +6373a690-7a76-452c-80aa-203228a067bd 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 c74f8b4b-81fd-4904-8a5e-026bb2c6538c d28150a5-16a0-47e2-acbf-fe51654d1ec3 t \\u0414\\u043e\\u0441\\u0442\\u0443\\u043f \\u0434\\u043e \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442\\u0443 \\u043f\\u0456\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0436\\u0435\\u043d\\u043e b9efe387-5000-4101-8420-76c31b691bdf 2025-04-12 12:26:08.807848 f +96280588-c4fd-4c56-9ab9-2164af14119d 3349f2de-1730-49db-a888-d0560aced177 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 00e44ab2-6259-411b-96ca-380de025150a 03e6527b-10b8-4400-a8d5-425047e6c144 t \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u0435\\u043d\\u0438\\u0439, \\u0432\\u0456\\u0434\\u043f\\u043e\\u0432\\u0456\\u0434\\u0430\\u0454 \\u043d\\u043e\\u0440\\u043c\\u0430\\u043c 250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 2025-04-12 12:26:08.807848 t +\. + + +-- +-- Name: accessibility_features accessibility_features_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT accessibility_features_pkey PRIMARY KEY (id); + + +-- +-- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id); + + +-- +-- Name: location location_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.location + ADD CONSTRAINT location_pkey PRIMARY KEY (id); + + +-- +-- Name: locations locations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT locations_pkey PRIMARY KEY (id); + + +-- +-- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); + + +-- +-- Name: organizations organizations_edrpou_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_edrpou_key UNIQUE (edrpou); + + +-- +-- Name: organizations organizations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_pkey PRIMARY KEY (id); + + +-- +-- Name: photo photo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photo + ADD CONSTRAINT photo_pkey PRIMARY KEY (id); + + +-- +-- Name: photos photos_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT photos_pkey PRIMARY KEY (id); + + +-- +-- Name: review review_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.review + ADD CONSTRAINT review_pkey PRIMARY KEY (id); + + +-- +-- Name: reviews reviews_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT reviews_pkey PRIMARY KEY (id); + + +-- +-- Name: roles roles_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_name_key UNIQUE (name); + + +-- +-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + + +-- +-- Name: users users_gov_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_gov_id_key UNIQUE (gov_id); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: verification verification_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verification + ADD CONSTRAINT verification_pkey PRIMARY KEY (id); + + +-- +-- Name: verifications verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT verifications_pkey PRIMARY KEY (id); + + +-- +-- Name: idx_locations_coordinates; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX idx_locations_coordinates ON public.locations USING gist (coordinates); + + +-- +-- Name: audit_logs fk_audit_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT fk_audit_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: locations fk_locations_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: locations fk_locations_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: notifications fk_notifications_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT fk_notifications_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: photos fk_photos_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_role; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_role FOREIGN KEY (role_id) REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_photo; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_photo FOREIGN KEY (evidence_photo_id) REFERENCES public.photos(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_verified_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_verified_by FOREIGN KEY (verified_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- PostgreSQL database dump complete +-- + From a131d565c1b7b45ec4093547295cd892a4c9ef70 Mon Sep 17 00:00:00 2001 From: LmaksL Date: Sun, 13 Apr 2025 12:52:11 +0000 Subject: [PATCH 4/5] Backup: 20250413_125208 --- Database/backup_20250413_125208.sql | 904 ++++++++++++++++++++++++++++ 1 file changed, 904 insertions(+) create mode 100644 Database/backup_20250413_125208.sql diff --git a/Database/backup_20250413_125208.sql b/Database/backup_20250413_125208.sql new file mode 100644 index 0000000..ad1389c --- /dev/null +++ b/Database/backup_20250413_125208.sql @@ -0,0 +1,904 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 17.4 - Percona Server for PostgreSQL 17.4.1 +-- Dumped by pg_dump version 17.4 - Percona Server for PostgreSQL 17.4.1 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_timeout = 0; +SET client_encoding = 'SQL_ASCII'; +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; + +-- +-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; + + +-- +-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; + + +-- +-- Name: postgis; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis IS 'PostGIS geometry and geography spatial types and functions'; + + +-- +-- Name: feature_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.feature_type_enum AS ENUM ( + 'ramp', + 'elevator', + 'call_button', + 'tactile_path', + 'accessible_toilet', + 'parking', + 'entrance', + 'interior', + 'signage', + 'other' +); + + +ALTER TYPE public.feature_type_enum OWNER TO postgres; + +-- +-- Name: location_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_status_enum AS ENUM ( + 'draft', + 'pending', + 'published', + 'rejected' +); + + +ALTER TYPE public.location_status_enum OWNER TO postgres; + +-- +-- Name: location_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.location_type_enum AS ENUM ( + 'government_building', + 'business', + 'healthcare', + 'education', + 'culture', + 'transport', + 'recreation', + 'other' +); + + +ALTER TYPE public.location_type_enum OWNER TO postgres; + +-- +-- Name: moderation_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.moderation_status_enum AS ENUM ( + 'pending', + 'approved', + 'rejected' +); + + +ALTER TYPE public.moderation_status_enum OWNER TO postgres; + +-- +-- Name: organization_type_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.organization_type_enum AS ENUM ( + 'government', + 'business', + 'ngo' +); + + +ALTER TYPE public.organization_type_enum OWNER TO postgres; + +-- +-- Name: verification_status_enum; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE public.verification_status_enum AS ENUM ( + 'unverified', + 'pending', + 'verified' +); + + +ALTER TYPE public.verification_status_enum OWNER TO postgres; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: accessibility_features; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.accessibility_features ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + type character varying(255) NOT NULL, + subtype character varying(100), + description text, + status boolean NOT NULL, + quality_rating integer, + standards_compliance boolean, + created_by uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.accessibility_features OWNER TO postgres; + +-- +-- Name: audit_logs; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.audit_logs ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + action character varying(100) NOT NULL, + entity_type character varying(50) NOT NULL, + entity_id uuid, + details jsonb, + ip_address character varying(45), + user_agent text, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.audit_logs OWNER TO postgres; + +-- +-- Name: location; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.location ( + id uuid NOT NULL, + address character varying(500) NOT NULL, + category character varying(100), + coder smallint, + hash integer, + hash_is_zero boolean, + value bytea, + coordinates public.geometry(Point,4326) NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid NOT NULL, + description text, + last_verified_at timestamp(6) without time zone NOT NULL, + name character varying(255) NOT NULL, + organization_id uuid, + overall_accessibility_score integer, + rejection_reason text, + status character varying(255) NOT NULL, + type character varying(255) NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + working_hours jsonb, + contacts jsonb, + CONSTRAINT location_status_check CHECK (((status)::text = ANY ((ARRAY['draft'::character varying, 'pending'::character varying, 'published'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT location_type_check CHECK (((type)::text = ANY ((ARRAY['government_building'::character varying, 'business'::character varying, 'healthcare'::character varying, 'education'::character varying, 'culture'::character varying, 'transport'::character varying, 'recreation'::character varying, 'other'::character varying])::text[]))) +); + + +ALTER TABLE public.location OWNER TO postgres; + +-- +-- Name: locations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.locations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + address character varying(500) NOT NULL, + coordinates public.geometry(Point,4326) NOT NULL, + type public.location_type_enum NOT NULL, + category character varying(100), + description text, + contacts jsonb, + working_hours jsonb, + created_by uuid, + organization_id uuid, + status public.location_status_enum DEFAULT 'draft'::public.location_status_enum NOT NULL, + overall_accessibility_score integer, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_verified_at timestamp without time zone, + rejection_reason text +); + + +ALTER TABLE public.locations OWNER TO postgres; + +-- +-- Name: notifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.notifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + user_id uuid, + type character varying(50) NOT NULL, + title character varying(255) NOT NULL, + message text NOT NULL, + link character varying(500), + is_read boolean DEFAULT false NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.notifications OWNER TO postgres; + +-- +-- Name: organizations; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.organizations ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(255) NOT NULL, + type public.organization_type_enum NOT NULL, + edrpou character varying(15), + website character varying(255), + is_verified boolean DEFAULT false NOT NULL, + verification_document_url character varying(255), + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.organizations OWNER TO postgres; + +-- +-- Name: photo; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photo ( + id uuid NOT NULL, + ai_accessibility_detection jsonb, + ai_moderation_score real, + created_at timestamp(6) without time zone NOT NULL, + created_by uuid, + description text, + feature_id uuid, + location_id uuid NOT NULL, + metadata jsonb, + moderation_status smallint NOT NULL, + reject_reason text, + thumbnail_url character varying(500) NOT NULL, + url character varying(500) NOT NULL, + CONSTRAINT photo_ai_moderation_score_check CHECK (((ai_moderation_score <= (1)::double precision) AND (ai_moderation_score >= (0)::double precision))), + CONSTRAINT photo_moderation_status_check CHECK (((moderation_status >= 0) AND (moderation_status <= 2))) +); + + +ALTER TABLE public.photo OWNER TO postgres; + +-- +-- Name: photos; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.photos ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + url character varying(500) NOT NULL, + thumbnail_url character varying(500) NOT NULL, + description text, + created_by uuid, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + ai_moderation_score double precision, + ai_accessibility_detection jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + reject_reason text, + metadata jsonb +); + + +ALTER TABLE public.photos OWNER TO postgres; + +-- +-- Name: review; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.review ( + id uuid NOT NULL, + accessibility_experience text NOT NULL, + comment text NOT NULL, + created_at timestamp(6) without time zone NOT NULL, + location_id uuid NOT NULL, + moderation_status character varying(255) NOT NULL, + rating integer NOT NULL, + updated_at timestamp(6) without time zone NOT NULL, + user_id uuid NOT NULL, + CONSTRAINT review_moderation_status_check CHECK (((moderation_status)::text = ANY ((ARRAY['pending'::character varying, 'approved'::character varying, 'rejected'::character varying])::text[]))), + CONSTRAINT review_rating_check CHECK (((rating <= 5) AND (rating >= 1))) +); + + +ALTER TABLE public.review OWNER TO postgres; + +-- +-- Name: reviews; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.reviews ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + user_id uuid, + rating integer NOT NULL, + comment text, + accessibility_experience text, + moderation_status public.moderation_status_enum DEFAULT 'pending'::public.moderation_status_enum NOT NULL, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + CONSTRAINT reviews_rating_check CHECK (((rating >= 1) AND (rating <= 5))) +); + + +ALTER TABLE public.reviews OWNER TO postgres; + +-- +-- Name: roles; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.roles ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + name character varying(50) NOT NULL, + description text, + permissions jsonb, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL +); + + +ALTER TABLE public.roles OWNER TO postgres; + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.users ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + email character varying(255) NOT NULL, + full_name character varying(255) NOT NULL, + phone character varying(20), + role_id uuid, + gov_id character varying(255), + verification_status public.verification_status_enum DEFAULT 'unverified'::public.verification_status_enum NOT NULL, + avatar_url character varying(255), + organization_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + updated_at timestamp without time zone DEFAULT now() NOT NULL, + last_login_at timestamp without time zone, + is_active boolean DEFAULT true NOT NULL, + password bytea +); + + +ALTER TABLE public.users OWNER TO postgres; + +-- +-- Name: verification; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verification ( + id uuid NOT NULL, + comment text NOT NULL, + create_at timestamp(6) without time zone NOT NULL, + evidence_photo_id uuid, + feature_id uuid, + is_official boolean NOT NULL, + location_id uuid NOT NULL, + organization_id uuid, + status boolean NOT NULL, + verified_id uuid NOT NULL +); + + +ALTER TABLE public.verification OWNER TO postgres; + +-- +-- Name: verifications; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.verifications ( + id uuid DEFAULT gen_random_uuid() NOT NULL, + location_id uuid, + feature_id uuid, + verified_by uuid, + organization_id uuid, + status boolean NOT NULL, + comment text, + evidence_photo_id uuid, + created_at timestamp without time zone DEFAULT now() NOT NULL, + is_official boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.verifications OWNER TO postgres; + +-- +-- Data for Name: accessibility_features; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.accessibility_features (id, location_id, type, subtype, description, status, quality_rating, standards_compliance, created_by, created_at, updated_at) FROM stdin; +581b16f7-fe04-4b83-be44-a616d9fd835f 479d899f-a9be-4506-a314-f10867e3e8f0 call_button \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 479d899f-a9be-4506-a314-f10867e3e8f0 accessible_toilet \N \N t \N t 00e44ab2-6259-411b-96ca-380de025150a 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +a765b190-666e-4dc9-8d64-39db2df8a659 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb call_button \N \N t \N t c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +ba48224a-ad60-477c-a15b-a7e938023ce6 3349f2de-1730-49db-a888-d0560aced177 ramp \N \N f \N f c74f8b4b-81fd-4904-8a5e-026bb2c6538c 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +bfac36a3-9638-474c-ba96-845267857630 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb parking \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +3bbeb94e-caf9-4df0-9d09-db1844bbd24e 3349f2de-1730-49db-a888-d0560aced177 elevator \N \N t \N t 68fa1eb3-9302-4ab3-9037-463737fb45a7 2025-04-12 13:07:29.521449 2025-04-12 13:07:29.521449 +\. + + +-- +-- Data for Name: audit_logs; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.audit_logs (id, user_id, action, entity_type, entity_id, details, ip_address, user_agent, created_at) FROM stdin; +38eea15a-4c3c-40fa-8f31-499fdb869190 c74f8b4b-81fd-4904-8a5e-026bb2c6538c delete document \N {"reason": "User request", "doc_name": "contract.pdf"} 172.16.1.23 curl/7.68.0 2025-04-12 11:32:09.562276 +adda61a4-d731-40d1-bfbf-53abbed0fe92 68fa1eb3-9302-4ab3-9037-463737fb45a7 update_profile user \N {"fields_changed": ["email", "name"]} 10.0.0.5 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) 2025-04-12 11:32:09.562276 +1bf4b383-969d-443d-8066-dd0f7d6d248b 00e44ab2-6259-411b-96ca-380de025150a login user \N {"success": true} 192.168.0.101 Mozilla/5.0 (Windows NT 10.0; Win64; x64) 2025-04-12 11:32:09.562276 +\. + + +-- +-- Data for Name: location; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.location (id, address, category, coder, hash, hash_is_zero, value, coordinates, created_at, created_by, description, last_verified_at, name, organization_id, overall_accessibility_score, rejection_reason, status, type, updated_at, working_hours, contacts) FROM stdin; +\. + + +-- +-- Data for Name: locations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.locations (id, name, address, coordinates, type, category, description, contacts, working_hours, created_by, organization_id, status, overall_accessibility_score, created_at, updated_at, last_verified_at, rejection_reason) FROM stdin; +85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb \\u0415\\u043f\\u0456\\u0446\\u0435\\u043d\\u0442\\u0440 \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 57, \\u041d\\u043e\\u0432\\u043e\\u0441\\u0435\\u043b\\u0456\\u0432\\u043a\\u0430 0101000020E6100000DAD7CE1D40C34940BE88C49354543F40 business \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +3349f2de-1730-49db-a888-d0560aced177 \\u041e\\u0431\\u043b\\u0430\\u0441\\u043d\\u0430 \\u0430\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0446\\u0456\\u044f \\u0432\\u0443\\u043b\\u0438\\u0446\\u044f \\u0428\\u0435\\u0432\\u0447\\u0435\\u043d\\u043a\\u0430, 7, \\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E6100000C4530F58C1BE4940B57151CF5B4C3F40 government_building \N \N \N \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +479d899f-a9be-4506-a314-f10867e3e8f0 \\u041b\\u0456\\u043a\\u0430\\u0440\\u043d\\u044f \\u21162 \\u043f\\u0440\\u043e\\u0441\\u043f\\u0435\\u043a\\u0442 \\u041c\\u0438\\u0445\\u0430\\u0439\\u043b\\u0430 \\u0413\\u0440\\u0443\\u0448\\u0435\\u0432\\u0441\\u044c\\u043a\\u043e\\u0433\\u043e, 168,\\u0427\\u0435\\u0440\\u043d\\u0456\\u0433\\u0456\\u0432 0101000020E610000014E42F853AC2494012AAA3AA304F3F40 healthcare \N \N \N \N 00e44ab2-6259-411b-96ca-380de025150a \N draft \N 2025-04-12 12:06:57.21802 2025-04-12 12:06:57.21802 \N \N +\. + + +-- +-- Data for Name: notifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.notifications (id, user_id, type, title, message, link, is_read, created_at) FROM stdin; +7d1612da-e4ed-42a0-aa67-7febb1faa7af \N system_error \\u041f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430 \\u0412\\u0438\\u043d\\u0438\\u043a\\u043b\\u0430 \\u043f\\u043e\\u043c\\u0438\\u043b\\u043a\\u0430 \\u043f\\u0456\\u0434 \\u0447\\u0430\\u0441 \\u043e\\u0431\\u0440\\u043e\\u0431\\u043a\\u0438 \\u0432\\u0430\\u0448\\u043e\\u0433\\u043e \\u0437\\u0430\\u043f\\u0438\\u0442\\u0443. /support t 2025-04-12 11:25:13.505412 +e9792f56-2626-41b7-9892-d91af512cd27 \N warning \\u0417\\u0430\\u0432\\u0435\\u0440\\u0448\\u0435\\u043d\\u043d\\u044f \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0422\\u0435\\u0440\\u043c\\u0456\\u043d \\u0432\\u0430\\u0448\\u043e\\u0457 \\u043f\\u0456\\u0434\\u043f\\u0438\\u0441\\u043a\\u0438 \\u0441\\u043f\\u043b\\u0438\\u0432\\u0430\\u0454 \\u0447\\u0435\\u0440\\u0435\\u0437 3 \\u0434\\u043d\\u0456. /subscription/renew f 2025-04-12 11:25:13.505412 +6ea8bdb5-0960-49b6-8256-d0e17a3738a3 \N info \\u041d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0423 \\u0432\\u0430\\u0441 \\u043d\\u043e\\u0432\\u0435 \\u043f\\u043e\\u0432\\u0456\\u0434\\u043e\\u043c\\u043b\\u0435\\u043d\\u043d\\u044f \\u0443 \\u0432\\u0445\\u0456\\u0434\\u043d\\u0438\\u0445. /messages/123 f 2025-04-12 11:25:13.505412 +\. + + +-- +-- Data for Name: organizations; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.organizations (id, name, type, edrpou, website, is_verified, verification_document_url, created_at, updated_at) FROM stdin; +03e6527b-10b8-4400-a8d5-425047e6c144 \\u0422\\u041e\\u0412 "\\u0406\\u043d\\u043d\\u043e\\u0432\\u0430\\u0446\\u0456\\u0439\\u043d\\u0456 \\u0440\\u0456\\u0448\\u0435\\u043d\\u043d\\u044f" business 12344568 https://inno-solutions.ua f https://docs.ua/verif/inno123.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +b3900f49-afce-43ce-84c7-13ef2ab12eee \\u0411\\u0424 "\\u0414\\u043e\\u043f\\u043e\\u043c\\u043e\\u0433\\u0430 \\u043f\\u043e\\u0440\\u0443\\u0447" ngo 84684522 https://help-now.org.ua f https://docs.ua/verif/help987.pdf 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +d28150a5-16a0-47e2-acbf-fe51654d1ec3 \\u041a\\u041f "\\u041c\\u0406\\u0441\\u044c\\u043a\\u0456 \\u0456\\u043d\\u0456\\u0446\\u0456\\u0430\\u0442\\u0438\\u0432\\u0438" government 54668489 \N f \N 2025-04-12 13:52:38.253468 2025-04-12 13:52:38.253468 +\. + + +-- +-- Data for Name: photo; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photo (id, ai_accessibility_detection, ai_moderation_score, created_at, created_by, description, feature_id, location_id, metadata, moderation_status, reject_reason, thumbnail_url, url) FROM stdin; +\. + + +-- +-- Data for Name: photos; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.photos (id, location_id, feature_id, url, thumbnail_url, description, created_by, moderation_status, ai_moderation_score, ai_accessibility_detection, created_at, reject_reason, metadata) FROM stdin; +b9efe387-5000-4101-8420-76c31b691bdf 479d899f-a9be-4506-a314-f10867e3e8f0 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 https://example.com/photos/0a1b2c3d4e5f.jpg https://example.com/photos/thumbnails/0a1b2c3d4e5f_thumb.jpg \N 00e44ab2-6259-411b-96ca-380de025150a pending \N \N 2025-04-12 14:33:31.354523 \N \N +250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 3349f2de-1730-49db-a888-d0560aced177 581b16f7-fe04-4b83-be44-a616d9fd835f https://cdn.accessibilityhub.org/images/photo_87234_large.jpg https://cdn.accessibilityhub.org/images/photo_87234_thumb.jpg \N c74f8b4b-81fd-4904-8a5e-026bb2c6538c rejected \N \N 2025-04-12 14:33:31.354523 Incorrect data \N +643d9e1b-7d63-4354-a9ce-f4929237b421 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main.jpg https://media.barrierfree.ua/uploads/2025/04/ramp-entry-main_thumb.jpg \N 68fa1eb3-9302-4ab3-9037-463737fb45a7 pending \N \N 2025-04-12 14:33:31.354523 \N \N +\. + + +-- +-- Data for Name: review; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.review (id, accessibility_experience, comment, created_at, location_id, moderation_status, rating, updated_at, user_id) FROM stdin; +\. + + +-- +-- Data for Name: reviews; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.reviews (id, location_id, user_id, rating, comment, accessibility_experience, moderation_status, created_at, updated_at) FROM stdin; +039f5712-f0d1-4164-9195-48a2a39b5951 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb c74f8b4b-81fd-4904-8a5e-026bb2c6538c 1 \\u0414\\u0443\\u0436\\u0435 \\u043f\\u043e\\u0433\\u0430\\u043d\\u0438\\u0439 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f \\u0412\\u0445\\u0456\\u0434\\u043d\\u0456 \\u0441\\u0445\\u043e\\u0434\\u0438 \\u0431\\u0435\\u0437 \\u043f\\u0430\\u043d\\u0434\\u0443\\u0441\\u0443, \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442 \\u043d\\u0435\\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043d\\u0438\\u0439 rejected 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +0d192b48-e732-446e-84fa-4216641309a8 479d899f-a9be-4506-a314-f10867e3e8f0 00e44ab2-6259-411b-96ca-380de025150a 3 \\u0404 \\u043d\\u044e\\u0430\\u043d\\u0441\\u0438 \\u0437 \\u0434\\u043e\\u0441\\u0442\\u0443\\u043f\\u043e\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0454, \\u0430\\u043b\\u0435 \\u0434\\u0443\\u0436\\u0435 \\u043a\\u0440\\u0443\\u0442\\u0438\\u0439, \\u0434\\u0432\\u0435\\u0440\\u0456 \\u0432\\u0430\\u0436\\u043a\\u043e \\u0432\\u0456\\u0434\\u0447\\u0438\\u043d\\u0438\\u0442\\u0438 pending 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +3b9ecceb-387f-4f49-9483-7ac2dd184063 3349f2de-1730-49db-a888-d0560aced177 00e44ab2-6259-411b-96ca-380de025150a 5 \\u0427\\u0443\\u0434\\u043e\\u0432\\u0435 \\u043c\\u0456\\u0441\\u0446\\u0435! \\u0420\\u0435\\u043a\\u043e\\u043c\\u0435\\u043d\\u0434\\u0443\\u044e \\u0432\\u0441\\u0456\\u043c \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u0437\\u0440\\u0443\\u0447\\u043d\\u0438\\u0439, \\u0448\\u0438\\u0440\\u043e\\u043a\\u0456 \\u0434\\u0432\\u0435\\u0440\\u0456, \\u0454 \\u043b\\u0456\\u0444\\u0442 approved 2025-04-12 12:15:22.892992 2025-04-12 12:15:22.892992 +\. + + +-- +-- Data for Name: roles; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.roles (id, name, description, permissions, created_at, updated_at) FROM stdin; +82830544-55c2-43de-9725-cd1508965eae admin \\u0410\\u0434\\u043c\\u0456\\u043d\\u0456\\u0441\\u0442\\u0440\\u0430\\u0442\\u043e\\u0440 \\u0437 \\u0443\\u0441\\u0456\\u043c\\u0430 \\u043f\\u0440\\u0430\\u0432\\u0430\\u043c\\u0438 {"read": true, "write": true, "delete": true, "manage_users": true} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +9c4866a1-b893-4736-8f39-ecd382616c9d viewer \\u041f\\u0435\\u0440\\u0435\\u0433\\u043b\\u044f\\u0434 \\u0431\\u0435\\u0437 \\u043c\\u043e\\u0436\\u043b\\u0438\\u0432\\u043e\\u0441\\u0442\\u0456 \\u0437\\u043c\\u0456\\u043d {"read": true, "write": false, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +6a12c5e4-02f9-425c-b590-ff456fdb35df editor \\u0420\\u0435\\u0434\\u0430\\u043a\\u0442\\u043e\\u0440 \\u043a\\u043e\\u043d\\u0442\\u0435\\u043d\\u0442\\u0443 {"read": true, "write": true, "delete": false, "manage_users": false} 2025-04-12 13:47:35.505466 2025-04-12 13:47:35.505466 +\. + + +-- +-- Data for Name: spatial_ref_sys; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin; +\. + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.users (id, email, full_name, phone, role_id, gov_id, verification_status, avatar_url, organization_id, created_at, updated_at, last_login_at, is_active, password) FROM stdin; +00e44ab2-6259-411b-96ca-380de025150a iryna.kovalenko@example.net \\u0406\\u0440\\u0438\\u043d\\u0430 \\u041a\\u043e\\u0432\\u0430\\u043b\\u0435\\u043d\\u043a\\u043e +380931234567 \N CC987654 unverified https://example.net/pic/iryna.jpeg 03e6527b-10b8-4400-a8d5-425047e6c144 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\xf7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7 +68fa1eb3-9302-4ab3-9037-463737fb45a7 taras.bondarenko@example.org \\u0422\\u0430\\u0440\\u0430\\u0441 \\u0411\\u043e\\u043d\\u0434\\u0430\\u0440\\u0435\\u043d\\u043a\\u043e +380671234567 \N BB654321 verified https://example.org/images/taras.png b3900f49-afce-43ce-84c7-13ef2ab12eee 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x38567e882369a9af763cb94d78d682081bcb88f94c7a9d85864531553f5fa5a942470897a3f72dd6b89985c3fd42ff9a78102a2f711492122da49530bfd7e133 +c74f8b4b-81fd-4904-8a5e-026bb2c6538c olena.ivchenko@example.com \\u041e\\u043b\\u0435\\u043d\\u0430 \\u0406\\u0432\\u0447\\u0435\\u043d\\u043a\\u043e +380501112233\n\n \N AE123456 verified https://example.com/avatars/olena.jpg d28150a5-16a0-47e2-acbf-fe51654d1ec3 2025-04-12 13:56:02.361099 2025-04-12 13:56:02.361099 \N t \\x3d983e0f78973ea9e44fced001b9b88dfe392450eecc02d41ed93e800de2f692efba2a939c61451b7c52b8026b77b6e1190af8576308d871c6379ee544d81d21 +71e636ea-b7e2-4bf6-abe7-fab206a7eaf5 test@example.com User666 \N \N \N unverified \N \N 2025-04-13 07:40:06.756668 2025-04-13 07:40:06.756668 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124356138744878774838486d4536683349626d4e773341245355305238506e6d6d3875303547567265633461544d55674e7a534b35747858504a4b394e756d4c757245 +e67d725b-3446-43c6-b2e3-f9baf951cf0a test@exle.com Useyy666 \N \N \N unverified \N \N 2025-04-13 08:42:12.493533 2025-04-13 08:42:12.493533 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d31246b52754e386d6e39326a2f576859735458656e4e6b51246d3150713631365834586354527230774a46796f766771763866313856427555624e4278432b7666566177 +de50d385-fa64-41d4-99e0-07298116bea4 BINGO@example.com Test User \N \N \N unverified \N \N 2025-04-13 12:19:13.289785 2025-04-13 12:19:13.289785 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d3124425269313032783745567a55366f3978522b754138412441554942636b5553694d6d547872534539464e545547306f632b4e4439553973656b47516a357143475359 +be905e92-8bc3-4d70-956c-f778dd871a16 vasya@dima vITALIK \N \N unverified \N \N 2025-04-13 08:02:43.040884 2025-04-13 12:22:00.604933 \N t \\x246172676f6e32696424763d3139246d3d36353533362c743d332c703d312475724c4178436b7766723230313767614938446d49412436314d4659777352623647502f4f736a56583978442b54776c7179317162314853314845394d47335a4955 +\. + + +-- +-- Data for Name: verification; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verification (id, comment, create_at, evidence_photo_id, feature_id, is_official, location_id, organization_id, status, verified_id) FROM stdin; +\. + + +-- +-- Data for Name: verifications; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY public.verifications (id, location_id, feature_id, verified_by, organization_id, status, comment, evidence_photo_id, created_at, is_official) FROM stdin; +2b2c3181-7822-4fd7-8f41-79d049d369c9 479d899f-a9be-4506-a314-f10867e3e8f0 581b16f7-fe04-4b83-be44-a616d9fd835f 68fa1eb3-9302-4ab3-9037-463737fb45a7 b3900f49-afce-43ce-84c7-13ef2ab12eee f \\u041f\\u043e\\u0440\\u0443\\u0447\\u0435\\u043d\\u044c \\u0432\\u0456\\u0434\\u0441\\u0443\\u0442\\u043d\\u0456\\u0439 \N 2025-04-12 12:26:08.807848 t +6373a690-7a76-452c-80aa-203228a067bd 85f5f1cb-b5d0-4253-a7b5-c4d20ab214fb bfac36a3-9638-474c-ba96-845267857630 c74f8b4b-81fd-4904-8a5e-026bb2c6538c d28150a5-16a0-47e2-acbf-fe51654d1ec3 t \\u0414\\u043e\\u0441\\u0442\\u0443\\u043f \\u0434\\u043e \\u0442\\u0443\\u0430\\u043b\\u0435\\u0442\\u0443 \\u043f\\u0456\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0436\\u0435\\u043d\\u043e b9efe387-5000-4101-8420-76c31b691bdf 2025-04-12 12:26:08.807848 f +96280588-c4fd-4c56-9ab9-2164af14119d 3349f2de-1730-49db-a888-d0560aced177 1f0aa0c9-ccfc-457e-9b4e-821e3a6b23c8 00e44ab2-6259-411b-96ca-380de025150a 03e6527b-10b8-4400-a8d5-425047e6c144 t \\u041f\\u0430\\u043d\\u0434\\u0443\\u0441 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0456\\u0440\\u0435\\u043d\\u0438\\u0439, \\u0432\\u0456\\u0434\\u043f\\u043e\\u0432\\u0456\\u0434\\u0430\\u0454 \\u043d\\u043e\\u0440\\u043c\\u0430\\u043c 250f8717-2ce0-4d63-bfa8-a0ef6f85ba10 2025-04-12 12:26:08.807848 t +\. + + +-- +-- Name: accessibility_features accessibility_features_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT accessibility_features_pkey PRIMARY KEY (id); + + +-- +-- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id); + + +-- +-- Name: location location_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.location + ADD CONSTRAINT location_pkey PRIMARY KEY (id); + + +-- +-- Name: locations locations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT locations_pkey PRIMARY KEY (id); + + +-- +-- Name: notifications notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT notifications_pkey PRIMARY KEY (id); + + +-- +-- Name: organizations organizations_edrpou_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_edrpou_key UNIQUE (edrpou); + + +-- +-- Name: organizations organizations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.organizations + ADD CONSTRAINT organizations_pkey PRIMARY KEY (id); + + +-- +-- Name: photo photo_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photo + ADD CONSTRAINT photo_pkey PRIMARY KEY (id); + + +-- +-- Name: photos photos_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT photos_pkey PRIMARY KEY (id); + + +-- +-- Name: review review_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.review + ADD CONSTRAINT review_pkey PRIMARY KEY (id); + + +-- +-- Name: reviews reviews_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT reviews_pkey PRIMARY KEY (id); + + +-- +-- Name: roles roles_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_name_key UNIQUE (name); + + +-- +-- Name: roles roles_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.roles + ADD CONSTRAINT roles_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_email_key UNIQUE (email); + + +-- +-- Name: users users_gov_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_gov_id_key UNIQUE (gov_id); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: verification verification_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verification + ADD CONSTRAINT verification_pkey PRIMARY KEY (id); + + +-- +-- Name: verifications verifications_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT verifications_pkey PRIMARY KEY (id); + + +-- +-- Name: idx_locations_coordinates; Type: INDEX; Schema: public; Owner: postgres +-- + +CREATE INDEX idx_locations_coordinates ON public.locations USING gist (coordinates); + + +-- +-- Name: audit_logs fk_audit_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.audit_logs + ADD CONSTRAINT fk_audit_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: accessibility_features fk_features_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.accessibility_features + ADD CONSTRAINT fk_features_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: locations fk_locations_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: locations fk_locations_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.locations + ADD CONSTRAINT fk_locations_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: notifications fk_notifications_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.notifications + ADD CONSTRAINT fk_notifications_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: photos fk_photos_created_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_created_by FOREIGN KEY (created_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: photos fk_photos_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.photos + ADD CONSTRAINT fk_photos_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: reviews fk_reviews_user; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_reviews_user FOREIGN KEY (user_id) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: users fk_users_role; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_users_role FOREIGN KEY (role_id) REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_feature; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_feature FOREIGN KEY (feature_id) REFERENCES public.accessibility_features(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_location; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_location FOREIGN KEY (location_id) REFERENCES public.locations(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: verifications fk_verifications_organization; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_organization FOREIGN KEY (organization_id) REFERENCES public.organizations(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_photo; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_photo FOREIGN KEY (evidence_photo_id) REFERENCES public.photos(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- Name: verifications fk_verifications_verified_by; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY public.verifications + ADD CONSTRAINT fk_verifications_verified_by FOREIGN KEY (verified_by) REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL; + + +-- +-- PostgreSQL database dump complete +-- + From a5ccb17ac9f4308719a41ce1b5e0bc7b5d7d96d3 Mon Sep 17 00:00:00 2001 From: LmaksL Date: Sun, 13 Apr 2025 12:55:50 +0000 Subject: [PATCH 5/5] Add files via upload --- 5467569513739447962.jpg | Bin 0 -> 219891 bytes initdb2_1.sql | 939 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 939 insertions(+) create mode 100644 5467569513739447962.jpg create mode 100644 initdb2_1.sql diff --git a/5467569513739447962.jpg b/5467569513739447962.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c81a338010087360202b8a0cf1160b99f570f997 GIT binary patch literal 219891 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¸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Ƭ*)*D;D4 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