This PR adds the post reminder backend work.

We add a new API endpoint via which a user can set a reminder for a post. An ephemeral message will be sent down the line to let the user know about the action. And then after the time is over, the system admin bot will send a DM message to the user about the reminder post.
Этот коммит содержится в:
Agniva De Sarker
2022-07-26 16:12:56 +05:30
коммит произвёл GitHub
родитель e6459b97de
Коммит 20cb042362
23 изменённых файлов: 849 добавлений и 16 удалений

Просмотреть файл

@@ -180,6 +180,8 @@ db/migrations/mysql/000089_add-channelid-to-reaction.down.sql
db/migrations/mysql/000089_add-channelid-to-reaction.up.sql
db/migrations/mysql/000090_create_enums.down.sql
db/migrations/mysql/000090_create_enums.up.sql
db/migrations/mysql/000091_create_post_reminder.down.sql
db/migrations/mysql/000091_create_post_reminder.up.sql
db/migrations/postgres/000001_create_teams.down.sql
db/migrations/postgres/000001_create_teams.up.sql
db/migrations/postgres/000002_create_team_members.down.sql
@@ -360,3 +362,5 @@ db/migrations/postgres/000089_add-channelid-to-reaction.down.sql
db/migrations/postgres/000089_add-channelid-to-reaction.up.sql
db/migrations/postgres/000090_create_enums.down.sql
db/migrations/postgres/000090_create_enums.up.sql
db/migrations/postgres/000091_create_post_reminder.down.sql
db/migrations/postgres/000091_create_post_reminder.up.sql

Просмотреть файл

@@ -0,0 +1,16 @@
SET @preparedStatement = (SELECT IF(
(
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'PostReminders'
AND table_schema = DATABASE()
AND index_name = 'idx_postreminders_targettime'
) > 0,
'DROP INDEX idx_postreminders_targettime ON PostReminders;',
'SELECT 1'
));
PREPARE removeIndexIfExists FROM @preparedStatement;
EXECUTE removeIndexIfExists;
DEALLOCATE PREPARE removeIndexIfExists;
DROP TABLE IF EXISTS PostReminders;

Просмотреть файл

@@ -0,0 +1,21 @@
CREATE TABLE IF NOT EXISTS PostReminders (
PostId varchar(26) NOT NULL,
UserId varchar(26) NOT NULL,
TargetTime bigint,
PRIMARY KEY (PostId, UserId)
);
SET @preparedStatement = (SELECT IF(
(
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'PostReminders'
AND table_schema = DATABASE()
AND index_name = 'idx_postreminders_targettime'
) > 0,
'SELECT 1',
'CREATE INDEX idx_postreminders_targettime ON PostReminders(TargetTime);'
));
PREPARE createIndexIfNotExists FROM @preparedStatement;
EXECUTE createIndexIfNotExists;
DEALLOCATE PREPARE createIndexIfNotExists;

Просмотреть файл

@@ -0,0 +1,3 @@
DROP INDEX IF EXISTS idx_postreminders_targettime;
DROP TABLE IF EXISTS postreminders;

Просмотреть файл

@@ -0,0 +1,8 @@
CREATE TABLE IF NOT EXISTS postreminders (
postid varchar(26) NOT NULL,
userid varchar(26) NOT NULL,
targettime bigint,
PRIMARY KEY (postid, userid)
);
CREATE INDEX IF NOT EXISTS idx_postreminders_targettime ON postreminders(targettime);