-- Downloaded from: https://github.com/joec05/social-media-app-pgsql/blob/a25959893494eaffd03deac61dabb08582cabf56/users_chats.sql -- -- PostgreSQL database dump -- -- Dumped from database version 16rc1 -- Dumped by pg_dump version 16rc1 SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SELECT pg_catalog.set_config('search_path', '', false); SET check_function_bodies = false; SET xmloption = content; SET client_min_messages = warning; SET row_security = off; -- -- Name: group_messages; Type: SCHEMA; Schema: -; Owner: postgres -- CREATE SCHEMA group_messages; ALTER SCHEMA group_messages OWNER to postgres; -- -- Name: group_profile; Type: SCHEMA; Schema: -; Owner: postgres -- CREATE SCHEMA group_profile; ALTER SCHEMA group_profile OWNER to postgres; -- -- Name: private_messages; Type: SCHEMA; Schema: -; Owner: postgres -- CREATE SCHEMA private_messages; ALTER SCHEMA private_messages OWNER to postgres; -- -- Name: users_chats; Type: SCHEMA; Schema: -; Owner: postgres -- CREATE SCHEMA users_chats; ALTER SCHEMA users_chats OWNER to postgres; -- -- Name: dblink; Type: EXTENSION; Schema: -; Owner: - -- CREATE EXTENSION IF NOT EXISTS dblink WITH SCHEMA public; -- -- Name: EXTENSION dblink; Type: COMMENT; Schema: -; Owner: -- COMMENT ON EXTENSION dblink IS 'connect to other PostgreSQL databases from within a database'; -- -- Name: fetch_user_chats(text, integer, integer, text, text, integer, text); Type: FUNCTION; Schema: public; Owner: postgres -- CREATE FUNCTION public.fetch_user_chats(currentid text, currentlength integer, paginationlimit integer, username text, ip text, port integer, password text) RETURNS TABLE(chat_data json) LANGUAGE plpgsql AS $_$ declare begin return query select row_to_json(f) from users_chats.chats_history as f where f.user_id = $1 and f.deleted = false and (f.recipient = '' or (f.recipient != '' and not is_blocked_user($1, f.recipient, username, ip, port, password) and not is_blocked_user(f.recipient, $1, username, ip, port, password) and is_exists_user($1, f.recipient, username, ip, port, password))) offset $2 limit $3; end; $_$; ALTER FUNCTION public.fetch_user_chats(currentid text, currentlength integer, paginationlimit integer, username text, ip text, port integer, password text) OWNER TO postgres; -- -- Name: is_blocked_user(text, text, text, text, integer, text); Type: FUNCTION; Schema: public; Owner: postgres -- CREATE FUNCTION public.is_blocked_user(checkingid text, checkedid text, username text, ip text, port integer, password text) RETURNS boolean LANGUAGE plpgsql AS $_$ declare res bool; users_profiles_path text := 'dbname=users_profiles user='||username||' hostaddr='||ip||' port='||port||' password='||password; begin if checkingid = checkedid then return false; end if; select exists ( select * from dblink(users_profiles_path, 'select * from blocked_users.block_history') as b(user_id text, blocked_id text) where b.user_id = $1 and b.blocked_id = $2 ) into res; return res; end; $_$; ALTER FUNCTION public.is_blocked_user(checkingid text, checkedid text, username text, ip text, port integer, password text) OWNER TO postgres; -- -- Name: is_exists_user(text, text, text, text, integer, text); Type: FUNCTION; Schema: public; Owner: postgres -- CREATE FUNCTION public.is_exists_user(checkingid text, checkedid text, username text, ip text, port integer, password text) RETURNS boolean LANGUAGE plpgsql AS $_$ declare res bool; users_profiles_path text := 'dbname=users_profiles user='||username||' hostaddr='||ip||' port='||port||' password='||password; begin if checkingid = checkedid then return true; end if; select exists ( select * from dblink(users_profiles_path, 'select user_id, deleted, suspended from basic_data.user_profile') as pr(user_id text, deleted bool, suspended bool) where pr.user_id = $2 and pr.deleted = false and pr.suspended = false ) into res; return res; end; $_$; ALTER FUNCTION public.is_exists_user(checkingid text, checkedid text, username text, ip text, port integer, password text) OWNER TO postgres; -- -- Name: is_muted_user(text, text, text, text, integer, text); Type: FUNCTION; Schema: public; Owner: postgres -- CREATE FUNCTION public.is_muted_user(checkingid text, checkedid text, username text, ip text, port integer, password text) RETURNS boolean LANGUAGE plpgsql AS $_$ declare res bool; users_profiles_path text := 'dbname=users_profiles user='||username||' hostaddr='||ip||' port='||port||' password='||password; begin if checkingid = checkedid then return false; end if; select exists ( select * from dblink(users_profiles_path, 'select * from muted_users.mute_history') as m(user_id text, muted_id text) where m.user_id = $1 and m.muted_id = $2 ) into res; return res; end; $_$; ALTER FUNCTION public.is_muted_user(checkingid text, checkedid text, username text, ip text, port integer, password text) OWNER TO postgres; SET default_tablespace = ''; SET default_table_access_method = heap; -- -- Name: messages_history; Type: TABLE; Schema: group_messages; Owner: postgres -- CREATE TABLE group_messages.messages_history ( chat_id text NOT NULL, message_id text NOT NULL, type text NOT NULL, content text NOT NULL, sender text NOT NULL, upload_time text NOT NULL, medias_datas text NOT NULL, deleted_list text[] NOT NULL ); ALTER TABLE group_messages.messages_history OWNER TO postgres; -- -- Name: group_info; Type: TABLE; Schema: group_profile; Owner: postgres -- CREATE TABLE group_profile.group_info ( chat_id text NOT NULL, name text NOT NULL, profile_pic_link text NOT NULL, description text NOT NULL, members text[] NOT NULL ); ALTER TABLE group_profile.group_info OWNER TO postgres; -- -- Name: messages_history; Type: TABLE; Schema: private_messages; Owner: postgres -- CREATE TABLE private_messages.messages_history ( chat_id text NOT NULL, message_id text NOT NULL, type text NOT NULL, content text NOT NULL, sender text NOT NULL, upload_time text NOT NULL, medias_datas text NOT NULL, deleted_list text[] NOT NULL ); ALTER TABLE private_messages.messages_history OWNER TO postgres; -- -- Name: chats_history; Type: TABLE; Schema: users_chats; Owner: postgres -- CREATE TABLE users_chats.chats_history ( user_id text NOT NULL, chat_id text NOT NULL, type text NOT NULL, recipient text NOT NULL, deleted boolean NOT NULL ); ALTER TABLE users_chats.chats_history OWNER TO postgres; -- -- Data for Name: messages_history; Type: TABLE DATA; Schema: group_messages; Owner: postgres -- COPY group_messages.messages_history (chat_id, message_id, type, content, sender, upload_time, medias_datas, deleted_list) FROM stdin; \. -- -- Data for Name: group_info; Type: TABLE DATA; Schema: group_profile; Owner: postgres -- COPY group_profile.group_info (chat_id, name, profile_pic_link, description, members) FROM stdin; \. -- -- Data for Name: messages_history; Type: TABLE DATA; Schema: private_messages; Owner: postgres -- COPY private_messages.messages_history (chat_id, message_id, type, content, sender, upload_time, medias_datas, deleted_list) FROM stdin; \. -- -- Data for Name: chats_history; Type: TABLE DATA; Schema: users_chats; Owner: postgres -- COPY users_chats.chats_history (user_id, chat_id, type, recipient, deleted) FROM stdin; \. -- -- Name: messages_history group_messages_constraint; Type: CONSTRAINT; Schema: group_messages; Owner: postgres -- ALTER TABLE ONLY group_messages.messages_history ADD CONSTRAINT group_messages_constraint UNIQUE (message_id); -- -- Name: messages_history messages_history_pkey; Type: CONSTRAINT; Schema: group_messages; Owner: postgres -- ALTER TABLE ONLY group_messages.messages_history ADD CONSTRAINT messages_history_pkey PRIMARY KEY (message_id); -- -- Name: group_info group_info_constraints; Type: CONSTRAINT; Schema: group_profile; Owner: postgres -- ALTER TABLE ONLY group_profile.group_info ADD CONSTRAINT group_info_constraints UNIQUE (chat_id); -- -- Name: group_info group_info_pkey; Type: CONSTRAINT; Schema: group_profile; Owner: postgres -- ALTER TABLE ONLY group_profile.group_info ADD CONSTRAINT group_info_pkey PRIMARY KEY (chat_id); -- -- Name: messages_history messages_history_pkey; Type: CONSTRAINT; Schema: private_messages; Owner: postgres -- ALTER TABLE ONLY private_messages.messages_history ADD CONSTRAINT messages_history_pkey PRIMARY KEY (message_id); -- -- Name: messages_history private_messages_constraints; Type: CONSTRAINT; Schema: private_messages; Owner: postgres -- ALTER TABLE ONLY private_messages.messages_history ADD CONSTRAINT private_messages_constraints UNIQUE (message_id); -- -- Name: chats_history chats_constraint; Type: CONSTRAINT; Schema: users_chats; Owner: postgres -- ALTER TABLE ONLY users_chats.chats_history ADD CONSTRAINT chats_constraint UNIQUE (user_id, chat_id); -- -- Name: chats_history chats_primary_key; Type: CONSTRAINT; Schema: users_chats; Owner: postgres -- ALTER TABLE ONLY users_chats.chats_history ADD CONSTRAINT chats_primary_key PRIMARY KEY (user_id, chat_id); -- -- PostgreSQL database dump complete --