-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathcanvas.pgsql
More file actions
208 lines (143 loc) · 5.19 KB
/
canvas.pgsql
File metadata and controls
208 lines (143 loc) · 5.19 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
BEGIN;
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(64),
password VARCHAR(64),
realname VARCHAR(128),
email VARCHAR(128),
description TEXT,
/*
** pending, active, suspended, closed
*/
status VARCHAR(16) DEFAULT 'pending',
access INTEGER DEFAULT 0,
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
updated TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
meta JSONB NOT NULL DEFAULT '{}',
UNIQUE (username)
);
CREATE TABLE usermeta (
meta_id BIGSERIAL PRIMARY KEY,
user_id BIGINT REFERENCES users(id),
meta_key VARCHAR(64),
meta_value TEXT
);
/*
** KORORA CANVAS - POST / ENGAGE STRUCTURES
*/
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
author_id BIGINT REFERENCES users(id),
parent_id BIGINT DEFAULT 0,
/* encrypt the post with a password */
password VARCHAR(32),
/* types: news, question, problem, thanks, idea */
type VARCHAR(16) NOT NULL,
/*
** document: draft, publish
** news: draft, publish
** question: answered, waiting
** thanks: n/a
** reply: accepted
*/
status VARCHAR(32) NOT NULL DEFAULT '',
/* name of the post */
name VARCHAR(200) NOT NULL DEFAULT '',
/* name of the post */
title TEXT NOT NULL DEFAULT '',
/* optional introductory paragraph of post */
excerpt TEXT NOT NULL DEFAULT '',
/* primary content of post */
content TEXT NOT NULL DEFAULT '',
/* provides an selectable prioritisation for post order */
menu_order INT NOT NULL DEFAULT 0,
/*
** open - replies are enabled
** closed - post is closed from replies
*/
reply_status VARCHAR(16) NOT NULL DEFAULT 'open',
reply_count INT NOT NULL DEFAULT 0,
meta JSONB NOT NULL DEFAULT '{}',
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
updated TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc')
);
CREATE TABLE postmeta (
meta_id BIGSERIAL PRIMARY KEY,
post_id BIGINT REFERENCES posts(id),
meta_key VARCHAR(64),
meta_value TEXT
);
CREATE TABLE tags (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc')
);
CREATE TABLE post_tag (
tag_id BIGINT REFERENCES tags(id),
post_id BIGINT REFERENCES posts(id),
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
PRIMARY KEY (tag_id, post_id)
);
CREATE TABLE contributions (
id BIGSERIAL PRIMARY KEY,
merchant_id VARCHAR(64) NOT NULL,
transaction_id VARCHAR(64) NOT NULL,
name VARCHAR(64),
email VARCHAR(128),
amount VARCHAR(16),
fee VARCHAR(16),
/* donation or sponsorship */
type VARCHAR(16) NOT NULL,
paypal_raw TEXT,
meta JSONB NOT NULL DEFAULT '{}',
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc')
);
CREATE TABLE templates (
id BIGSERIAL PRIMARY KEY,
owner_id BIGINT REFERENCES users(id) NOT NULL,
uuid VARCHAR(64),
name TEXT,
stub VARCHAR(128) NOT NULL,
description TEXT,
includes JSONB NOT NULL DEFAULT '[]',
packages JSONB NOT NULL DEFAULT '[]',
repos JSONB NOT NULL DEFAULT '[]',
stores JSONB NOT NULL DEFAULT '[]',
archives JSONB NOT NULL DEFAULT '[]',
meta JSONB NOT NULL DEFAULT '{}',
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
updated TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
UNIQUE(owner_id, name),
UNIQUE(uuid)
);
CREATE TABLE templatemeta (
meta_id BIGSERIAL PRIMARY KEY,
template_id BIGINT REFERENCES templates(id),
meta_key VARCHAR(64),
meta_value TEXT
);
CREATE TABLE machines (
id BIGSERIAL PRIMARY KEY,
owner_id BIGINT REFERENCES users(id) NOT NULL,
template_id BIGINT REFERENCES templates(id),
uuid VARCHAR(64),
key VARCHAR(128),
name TEXT,
stub VARCHAR(128) NOT NULL,
description TEXT,
stores JSONB NOT NULL DEFAULT '[]',
archives JSONB NOT NULL DEFAULT '[]',
history JSONB NOT NULL DEFAULT '[]',
meta JSONB NOT NULL DEFAULT '{}',
created TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
updated TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'utc'),
UNIQUE(owner_id, name),
UNIQUE(uuid)
);
CREATE TABLE machinemeta (
meta_id BIGSERIAL PRIMARY KEY,
machine_id BIGINT REFERENCES machines(id),
meta_key VARCHAR(64),
meta_value TEXT
);
COMMIT;