37 lines
1.2 KiB
SQL
37 lines
1.2 KiB
SQL
-- SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
|
|
--
|
|
-- SPDX-License-Identifier: Apache-2.0
|
|
|
|
CREATE TABLE tweets (
|
|
id BIGINT NOT NULL,
|
|
text TEXT NOT NULL,
|
|
object JSONB NOT NULL
|
|
);
|
|
|
|
CREATE INDEX tweets_retweet_text_idx ON public.tweets USING gin (to_tsvector('english'::regconfig, ((object -> 'retweeted_status'::text) ->> 'full_text'::text)));
|
|
CREATE INDEX tweets_retweet_user_idx ON public.tweets USING btree (((((object -> 'retweeted_status'::text) -> 'user'::text) ->> 'screen_name'::text)));
|
|
CREATE INDEX tweets_text_idx ON public.tweets USING gin (to_tsvector('english'::regconfig, text));
|
|
CREATE INDEX tweets_user_idx ON public.tweets USING btree ((((object -> 'user'::text) ->> 'screen_name'::text)));
|
|
|
|
CREATE TABLE user_accounts (
|
|
username TEXT NOT NULL PRIMARY KEY,
|
|
userid BIGINT NOT NULL,
|
|
access_token TEXT NOT NULL,
|
|
access_secret TEXT NOT NULL,
|
|
latest_tweet BIGINT NOT NULL,
|
|
CONSTRAINT unique_userid
|
|
UNIQUE (userid)
|
|
);
|
|
|
|
CREATE TABLE public.user_accounts_tweets (
|
|
userid bigint NOT NULL,
|
|
tweetid bigint NOT NULL,
|
|
PRIMARY KEY (userid, tweetid),
|
|
UNIQUE (tweetid, userid),
|
|
CONSTRAINT fk_userid
|
|
FOREIGN KEY (userid)
|
|
REFERENCES user_accounts(userid),
|
|
CONSTRAINT fk_tweetid
|
|
FOREIGN KEY (tweetid)
|
|
REFERENCES tweets(id))
|
|
);
|