-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathfairywren.sql
51 lines (46 loc) · 1.22 KB
/
fairywren.sql
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
CREATE TABLE users(
id serial UNIQUE,
name varchar NOT NULL UNIQUE,
password char(86),
secretKey char(86),
PRIMARY KEY(id,name)
);
CREATE TABLE torrents(
id SERIAL UNIQUE,
infoHash char(27) NOT NULL UNIQUE,
title varchar(128) NOT NULL,
creator INTEGER REFERENCES users(id) NOT NULL,
creationDate TIMESTAMP WITHOUT TIME ZONE NOT NULL,
lengthInbytes BIGINT NOT NULL,
metainfo bytea,
extendedinfo bytea,
PRIMARY KEY(id,infoHash)
);
CREATE TABLE invites(
id SERIAL UNIQUE,
secret char(43) UNIQUE,
inviter INTEGER REFERENCES users(id) NOT NULL,
creationDate TIMESTAMP WITHOUT TIME ZONE NOT NULL,
invitee INTEGER REFERENCES users(id) NULL,
accepted TIMESTAMP WITHOUT TIME ZONE NULL,
PRIMARY KEY(id)
);
CREATE TABLE roles(
id SERIAL UNIQUE,
name varchar NOT NULL UNIQUE,
PRIMARY KEY(id)
);
CREATE TABLE roleMember(
roleId INTEGER REFERENCES roles(id) NOT NULL,
userId INTEGER REFERENCES users(id) NOT NULL,
PRIMARY KEY(roleId,userId)
);
CREATE TABLE peers(
userId INTEGER REFERENCES users(id) NOT NULL,
ip inet NOT NULL,
port INTEGER NOT NULL,
peerId bytea NOT NULL,
lastSeen TIMESTAMP WITHOUT TIME ZONE NOT NULL,
firstSeen TIMESTAMP WITHOUT TIME ZONE NOT NULL,
PRIMARY KEY(userId,ip,port)
);