Files
dolthub--doltgresql/testing/dumps/sql/joec05_social-media-app-pgsql.sql
T
2026-07-13 12:32:25 +08:00

330 lines
9.2 KiB
PL/PgSQL

-- 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
--