85 lines
2.4 KiB
MySQL
Raw Normal View History

2021-06-27 13:31:30 -07:00
PRAGMA foreign_keys = on;
create table users (rowid integer primary key,
2021-07-24 21:52:39 -07:00
id integer unique not null check(typeof(id) = 'integer'),
2021-06-27 13:31:30 -07:00
display_name text not null,
handle text unique not null,
bio text,
2021-07-24 21:52:39 -07:00
following_count integer,
followers_count integer,
2021-06-27 13:31:30 -07:00
location text,
website text,
join_date integer,
is_private boolean default 0,
is_verified boolean default 0,
profile_image_url text,
banner_image_url text,
pinned_tweet_id integer check(typeof(pinned_tweet_id) = 'integer' or pinned_tweet_id = ''),
is_content_downloaded boolean default 0
-- foreign key(pinned_tweet_id) references tweets(id)
2021-06-27 13:31:30 -07:00
);
create table tweets (rowid integer primary key,
2021-07-24 21:52:39 -07:00
id integer unique not null check(typeof(id) = 'integer'),
user_id integer not null check(typeof(user_id) = 'integer'),
2021-06-27 13:31:30 -07:00
text text not null,
posted_at integer,
num_likes integer,
num_retweets integer,
num_replies integer,
num_quote_tweets integer,
in_reply_to integer,
quoted_tweet integer,
mentions text, -- comma-separated
hashtags text, -- comma-separated
is_content_downloaded boolean default 0,
foreign key(user_id) references users(id)
-- foreign key(in_reply_to) references tweets(id),
-- foreign key(quoted_tweet) references tweets(id)
2021-06-27 13:31:30 -07:00
);
create table retweets(rowid integer primary key,
retweet_id integer not null,
tweet_id integer not null,
retweeted_by integer not null,
retweeted_at integer not null,
foreign key(tweet_id) references tweets(id)
foreign key(retweeted_by) references users(id)
);
create table urls (rowid integer primary key,
tweet_id integer not null,
text text not null,
unique (tweet_id, text)
foreign key(tweet_id) references tweets(id)
);
create table images (rowid integer primary key,
id integer unique not null check(typeof(id) = 'integer'),
2021-06-27 13:31:30 -07:00
tweet_id integer not null,
2021-08-01 15:52:04 -07:00
filename text not null unique,
is_downloaded boolean default 0,
foreign key(tweet_id) references tweets(id)
);
create table videos (rowid integer primary key,
tweet_id integer not null,
2021-08-01 15:52:04 -07:00
filename text not null unique,
is_downloaded boolean default 0,
2021-06-27 13:31:30 -07:00
foreign key(tweet_id) references tweets(id)
);
create table hashtags (rowid integer primary key,
tweet_id integer not null,
text text not null,
unique (tweet_id, text)
foreign key(tweet_id) references tweets(id)
);