101 lines
3.0 KiB
SQL
101 lines
3.0 KiB
SQL
PRAGMA foreign_keys = on;
|
|
|
|
create table users (rowid integer primary key,
|
|
id integer unique not null check(typeof(id) = 'integer'),
|
|
display_name text not null,
|
|
handle text unique not null,
|
|
bio text,
|
|
following_count integer,
|
|
followers_count integer,
|
|
location text,
|
|
website text,
|
|
join_date integer,
|
|
is_private boolean default 0,
|
|
is_verified boolean default 0,
|
|
profile_image_url text,
|
|
profile_image_local_path text,
|
|
banner_image_url text,
|
|
banner_image_local_path 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)
|
|
);
|
|
|
|
create table tweets (rowid integer primary key,
|
|
id integer unique not null check(typeof(id) = 'integer'),
|
|
user_id integer not null check(typeof(user_id) = 'integer'),
|
|
text text not null,
|
|
posted_at integer,
|
|
num_likes integer,
|
|
num_retweets integer,
|
|
num_replies integer,
|
|
num_quote_tweets integer,
|
|
in_reply_to integer, -- TODO hungarian: should be `in_reply_to_id`
|
|
quoted_tweet integer, -- TODO hungarian: should be `quoted_tweet_id`
|
|
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)
|
|
);
|
|
|
|
create table retweets(rowid integer primary key,
|
|
retweet_id integer not null unique,
|
|
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,
|
|
domain text,
|
|
text text not null,
|
|
title text,
|
|
description text,
|
|
creator_id integer,
|
|
site_id integer,
|
|
thumbnail_remote_url text,
|
|
thumbnail_local_path text,
|
|
has_card boolean,
|
|
is_content_downloaded boolean default 0,
|
|
|
|
unique (tweet_id, text)
|
|
foreign key(tweet_id) references tweets(id)
|
|
-- foreign key(creator_id) references users(id)
|
|
-- foreign key(site_id) references users(id)
|
|
);
|
|
|
|
create table images (rowid integer primary key,
|
|
id integer unique not null check(typeof(id) = 'integer'),
|
|
tweet_id integer not null,
|
|
remote_url text not null unique,
|
|
local_filename text not null unique,
|
|
is_downloaded boolean default 0,
|
|
|
|
foreign key(tweet_id) references tweets(id)
|
|
);
|
|
|
|
create table videos (rowid integer primary key,
|
|
id integer unique not null check(typeof(id) = 'integer'),
|
|
tweet_id integer not null,
|
|
remote_url text not null unique,
|
|
local_filename text not null unique,
|
|
is_downloaded boolean default 0,
|
|
|
|
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)
|
|
);
|