1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
CREATE TABLE sys_params
(
    name TEXT NOT NULL,
    val  TEXT NULL,
    PRIMARY KEY (name)
);
CREATE UNIQUE INDEX idx_001 on sys_params (name);

INSERT INTO sys_params (name, val)
VALUES ('schema_ver', '0');

CREATE TABLE accounts
(
    id                INTEGER PRIMARY KEY NOT NULL,
    created_at        DATETIME            NOT NULL,
    user_url          TEXT                NOT NULL,
    handle            TEXT                NOT NULL,
    feed_name         TEXT                NOT NULL DEFAULT (''),
    feed_summary      TEXT                NOT NULL DEFAULT (''),
    profile_image_url TEXT                NOT NULL DEFAULT (''),
    site_url          TEXT                NOT NULL DEFAULT (''),
    feed_url          TEXT                NOT NULL DEFAULT (''),
    feed_last_updated DATETIME            NOT NULL DEFAULT '1900-01-01 00:00:00',
    next_check_due    DATETIME            NOT NULL DEFAULT '2100-01-01 00:00:00',
    pubkey            TEXT                NOT NULL,
    privkey           TEXT                NOT NULL DEFAULT ('')
);
CREATE UNIQUE INDEX idx_101 ON accounts (handle);
CREATE INDEX idx_102 ON accounts (next_check_due);

CREATE TABLE followers
(
    account_id     INTEGER NOT NULL,
    request_id     TEXT    NOT NULL,
    approve_status INTEGER NOT NULL DEFAULT 0,
    user_url       TEXT    NOT NULL,
    handle         TEXT    NOT NULL,
    host           TEXT    NOT NULL,
    user_inbox     TEXT    NOT NULL,
    shared_inbox   TEXT    NOT NULL,
    FOREIGN KEY (account_id) REFERENCES accounts (id)
);
CREATE INDEX idx_110 ON followers (user_url);
CREATE INDEX idx_111 ON followers (account_id);
CREATE UNIQUE INDEX idx_112 ON followers (account_id, user_url);

CREATE TABLE feed_posts
(
    account_id     INTEGER  NOT NULL,
    post_guid_hash INTEGER  NOT NULL,
    post_time      DATETIME NOT NULL,
    link           TEXT     NOT NULL,
    title          TEXT     NOT NULL,
    description    TEXT     NOT NULL,
    FOREIGN KEY (account_id) REFERENCES accounts (id)
);
CREATE UNIQUE INDEX idx_120 ON feed_posts (account_id, post_guid_hash);

CREATE TABLE toots
(
    account_id     INTEGER  NOT NULL,
    post_guid_hash INTEGER  NOT NULL DEFAULT 0,
    tooted_at      DATETIME NOT NULL,
    status_id      TEXT     NOT NULL,
    content        TEXT     NOT NULL,
    FOREIGN KEY (account_id) REFERENCES accounts (id)
);

CREATE TABLE toot_queue
(
    id           INTEGER PRIMARY KEY,
    sending_user TEXT     NOT NULL,
    to_inbox     TEXT     NOT NULL,
    tooted_at    DATETIME NOT NULL,
    status_id    TEXT     NOT NULL,
    content      TEXT     NOT NULL
);

CREATE TABLE handled_activities
(
    activity_id TEXT     NOT NULL,
    handled_at  DATETIME NOT NULL
);
CREATE UNIQUE INDEX idx_130 ON handled_activities (activity_id);
CREATE INDEX idx_131 ON handled_activities (handled_at);