-- SPDX-FileCopyrightText: 2020 Luke Granger-Brown -- -- 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)) );