c3eaa2273a
commitf5b75f342b
Merge:bd1fc2b
69389f6
Author: Dessalines <happydooby@gmail.com> Date: Thu Jan 23 19:17:42 2020 -0500 Done merging http-api and private_message commitbd1fc2b80b
Author: Dessalines <happydooby@gmail.com> Date: Thu Jan 23 16:46:07 2020 -0500 Remove danger from private-message.tsx commit69389f61c9
Author: Dessalines <happydooby@gmail.com> Date: Thu Jan 23 11:21:21 2020 -0500 Fixing http curl POST docs. commit7fdcae4f07
Merge:dbe9ad0
752318f
Author: Dessalines <happydooby@gmail.com> Date: Thu Jan 23 11:01:06 2020 -0500 Merge remote-tracking branch 'nutomic/http-api' into dessalines-http-api commit752318fdf3
Author: Felix <me@nutomic.com> Date: Thu Jan 23 15:22:17 2020 +0100 api fixes commit9ccff18f23
Author: Dessalines <happydooby@gmail.com> Date: Wed Jan 22 22:29:11 2020 -0500 Adding a toaster to replace alerts. Fixes #457 commit5197407dd2
Merge:bacb9ac
58f673a
Author: Dessalines <happydooby@gmail.com> Date: Wed Jan 22 21:20:38 2020 -0500 Merge branch 'private_messaging' into dev commit58f673ab78
Author: Dessalines <happydooby@gmail.com> Date: Wed Jan 22 21:09:17 2020 -0500 Adding message to comment node actions. commitbacb9ac59e
Merge:10c6505
7d3adda
Author: Dessalines <happydooby@gmail.com> Date: Wed Jan 22 20:37:08 2020 -0500 Merge branch 'private_messaging' into dev commit10c6505968
Author: Dessalines <happydooby@gmail.com> Date: Wed Jan 22 20:35:20 2020 -0500 Adding correct hello_name to mail. commit7d3adda0cd
Author: Dessalines <happydooby@gmail.com> Date: Wed Jan 22 16:35:29 2020 -0500 Adding private messaging, and matrix user ids. - Fixes #244 commitdbe9ad0998
Author: Dessalines <happydooby@gmail.com> Date: Mon Jan 20 18:49:54 2020 -0500 Fixing last. commit20c9c54806
Author: Dessalines <happydooby@gmail.com> Date: Sun Jan 19 13:31:37 2020 -0500 Updating API docs. commitdc84ccaac9
Merge:6c61dd2
3edd75e
Author: Dessalines <happydooby@gmail.com> Date: Sun Jan 19 10:06:25 2020 -0500 Merge branch 'master' into dessalines-http-api commit6c61dd266b
Merge:c5eecd0
e518954
Author: Dessalines <happydooby@gmail.com> Date: Sun Jan 19 09:09:00 2020 -0500 Merge remote-tracking branch 'nutomic/websocket-generics' into dessalines-http-api commite518954bca
Author: Felix <me@nutomic.com> Date: Sun Jan 19 14:25:50 2020 +0100 Use generics to reduce code duplication in websocket commitc5eecd055e
Author: Dessalines <happydooby@gmail.com> Date: Sun Jan 19 00:38:45 2020 -0500 Strongly typing WebsocketJsonResponse. Forgot comment-form.tsx commit0c5eb47135
Author: Dessalines <happydooby@gmail.com> Date: Sat Jan 18 23:54:10 2020 -0500 First pass at fixing UI to work with new websocketresponses. commitbaf77bb6be
Author: Felix <me@nutomic.com> Date: Sat Jan 18 17:25:45 2020 +0100 simplify json serialization code commit047ec97e18
Author: Felix <me@nutomic.com> Date: Sat Jan 18 14:22:25 2020 +0100 rewrite api endpoint urls commit2fb4900b0c
Author: Felix <me@nutomic.com> Date: Thu Jan 16 17:04:37 2020 +0100 fix typo commitcba8081579
Author: Felix <me@nutomic.com> Date: Thu Jan 16 16:47:38 2020 +0100 fix formatting commitd7285d8c25
Author: Felix <me@nutomic.com> Date: Thu Jan 16 16:09:01 2020 +0100 small fix commit415040a1e9
Author: Felix <me@nutomic.com> Date: Thu Jan 16 15:39:08 2020 +0100 working! commit7a97c981a0
Author: Felix <me@nutomic.com> Date: Wed Jan 15 16:48:21 2020 +0100 try to simplify code with higher order functions commitc41082f98f
Author: Felix <me@nutomic.com> Date: Wed Jan 15 16:37:25 2020 +0100 Implement HTTP API using generics (fixes #380)
90 lines
2.9 KiB
PL/PgSQL
Vendored
90 lines
2.9 KiB
PL/PgSQL
Vendored
-- Creating private message
|
|
create table private_message (
|
|
id serial primary key,
|
|
creator_id int references user_ on update cascade on delete cascade not null,
|
|
recipient_id int references user_ on update cascade on delete cascade not null,
|
|
content text not null,
|
|
deleted boolean default false not null,
|
|
read boolean default false not null,
|
|
published timestamp not null default now(),
|
|
updated timestamp
|
|
);
|
|
|
|
-- Create the view and materialized view which has the avatar and creator name
|
|
create view private_message_view as
|
|
select
|
|
pm.*,
|
|
u.name as creator_name,
|
|
u.avatar as creator_avatar,
|
|
u2.name as recipient_name,
|
|
u2.avatar as recipient_avatar
|
|
from private_message pm
|
|
inner join user_ u on u.id = pm.creator_id
|
|
inner join user_ u2 on u2.id = pm.recipient_id;
|
|
|
|
create materialized view private_message_mview as select * from private_message_view;
|
|
|
|
create unique index idx_private_message_mview_id on private_message_mview (id);
|
|
|
|
-- Create the triggers
|
|
create or replace function refresh_private_message()
|
|
returns trigger language plpgsql
|
|
as $$
|
|
begin
|
|
refresh materialized view concurrently private_message_mview;
|
|
return null;
|
|
end $$;
|
|
|
|
create trigger refresh_private_message
|
|
after insert or update or delete or truncate
|
|
on private_message
|
|
for each statement
|
|
execute procedure refresh_private_message();
|
|
|
|
-- Update user to include matrix id
|
|
alter table user_ add column matrix_user_id text unique;
|
|
|
|
drop view user_view cascade;
|
|
create view user_view as
|
|
select
|
|
u.id,
|
|
u.name,
|
|
u.avatar,
|
|
u.email,
|
|
u.matrix_user_id,
|
|
u.fedi_name,
|
|
u.admin,
|
|
u.banned,
|
|
u.show_avatars,
|
|
u.send_notifications_to_email,
|
|
u.published,
|
|
(select count(*) from post p where p.creator_id = u.id) as number_of_posts,
|
|
(select coalesce(sum(score), 0) from post p, post_like pl where u.id = p.creator_id and p.id = pl.post_id) as post_score,
|
|
(select count(*) from comment c where c.creator_id = u.id) as number_of_comments,
|
|
(select coalesce(sum(score), 0) from comment c, comment_like cl where u.id = c.creator_id and c.id = cl.comment_id) as comment_score
|
|
from user_ u;
|
|
|
|
create materialized view user_mview as select * from user_view;
|
|
|
|
create unique index idx_user_mview_id on user_mview (id);
|
|
|
|
-- This is what a group pm table would look like
|
|
-- Not going to do it now because of the complications
|
|
--
|
|
-- create table private_message (
|
|
-- id serial primary key,
|
|
-- creator_id int references user_ on update cascade on delete cascade not null,
|
|
-- content text not null,
|
|
-- deleted boolean default false not null,
|
|
-- published timestamp not null default now(),
|
|
-- updated timestamp
|
|
-- );
|
|
--
|
|
-- create table private_message_recipient (
|
|
-- id serial primary key,
|
|
-- private_message_id int references private_message on update cascade on delete cascade not null,
|
|
-- recipient_id int references user_ on update cascade on delete cascade not null,
|
|
-- read boolean default false not null,
|
|
-- published timestamp not null default now(),
|
|
-- unique(private_message_id, recipient_id)
|
|
-- )
|