Files
mostlymatter/db/migrations/postgres/000020_create_posts.up.sql
Agniva De Sarker 91f7eb0957 Filter by templated schema name for postgres queries (#21635)
There were certain queries which did not filter
by the current schema, but hardcoded public schema.

Apart from that, we always filter with the current schema
which allows connection proxies to run multiple MM within
a single DB.
```release-note
NONE
```
2022-11-11 13:03:28 +05:30

52 строки
1.9 KiB
SQL

CREATE TABLE IF NOT EXISTS posts (
id VARCHAR(26) PRIMARY KEY,
createat bigint,
updateat bigint,
deleteat bigint,
userid VARCHAR(26),
channelid VARCHAR(26),
rootid VARCHAR(26),
parentid VARCHAR(26),
originalid VARCHAR(26),
message VARCHAR(65535),
type VARCHAR(26),
props VARCHAR(8000),
hashtags VARCHAR(1000),
filenames VARCHAR(4000)
);
ALTER TABLE posts ADD COLUMN IF NOT EXISTS fileids VARCHAR(300);
ALTER TABLE posts ADD COLUMN IF NOT EXISTS hasreactions boolean;
ALTER TABLE posts ADD COLUMN IF NOT EXISTS editat bigint;
ALTER TABLE posts ADD COLUMN IF NOT EXISTS ispinned boolean;
CREATE INDEX IF NOT EXISTS idx_posts_update_at ON posts(updateat);
CREATE INDEX IF NOT EXISTS idx_posts_create_at ON posts(createat);
CREATE INDEX IF NOT EXISTS idx_posts_delete_at ON posts(deleteat);
CREATE INDEX IF NOT EXISTS idx_posts_root_id ON posts(rootid);
CREATE INDEX IF NOT EXISTS idx_posts_user_id ON posts(userid);
CREATE INDEX IF NOT EXISTS idx_posts_is_pinned ON posts(ispinned);
CREATE INDEX IF NOT EXISTS idx_posts_channel_id_update_at ON posts(channelid, updateat);
CREATE INDEX IF NOT EXISTS idx_posts_channel_id_delete_at_create_at ON posts(channelid, deleteat, createat);
CREATE INDEX IF NOT EXISTS idx_posts_message_txt ON posts USING gin(to_tsvector('english', message));
CREATE INDEX IF NOT EXISTS idx_posts_hashtags_txt ON posts USING gin(to_tsvector('english', hashtags));
ALTER TABLE posts ADD COLUMN IF NOT EXISTS remoteid VARCHAR(26);
DROP INDEX IF EXISTS idx_posts_channel_id;
DO $$
DECLARE
column_exist boolean := false;
BEGIN
SELECT count(*) != 0 INTO column_exist
FROM information_schema.columns
WHERE table_name = 'posts'
AND table_schema = current_schema()
AND column_name = 'fileids'
AND NOT data_type = 'varchar(300)';
IF column_exist THEN
ALTER TABLE posts ALTER COLUMN fileids TYPE varchar(300);
END IF;
END $$;