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
|
CREATE TABLE IF NOT EXISTS projects (
id VARCHAR(128) NOT NULL PRIMARY KEY,
title VARCHAR(1024) NOT NULL,
description MEDIUMTEXT NOT NULL DEFAULT '',
remote VARCHAR(2048) NOT NULL,
remote_key VARCHAR(8192) NOT NULL,
main_branch VARCHAR(1024) NOT NULL
);
CREATE TABLE IF NOT EXISTS users (
id VARCHAR(128) NOT NULL PRIMARY KEY,
name VARCHAR(1024) NOT NULL DEFAULT '',
dn VARCHAR(256) NULL
);
CREATE TABLE IF NOT EXISTS project_users (
project VARCHAR(128) NOT NULL,
user VARCHAR(128) NOT NULL,
default_role TINYINT UNSIGNED NOT NULL,
maintainer BOOLEAN NOT NULL DEFAULT 0,
PRIMARY KEY (project, user),
CONSTRAINT `fk_project_users_project`
FOREIGN KEY (project) REFERENCES projects (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT `fk_project_users_user`
FOREIGN KEY (user) REFERENCES users (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS reviews (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
project VARCHAR(128) NOT NULL,
owner VARCHAR(128) NOT NULL,
title VARCHAR(1024) NOT NULL,
description MEDIUMTEXT NOT NULL DEFAULT '',
state TINYINT UNSIGNED NOT NULL DEFAULT 0,
progress FLOAT NOT NULL DEFAULT 0,
branch VARCHAR(1024) NOT NULL,
archived BOOLEAN NOT NULL DEFAULT 0,
rewrite TINYINT UNSIGNED NOT NULL DEFAULT 0,
CONSTRAINT `fk_reviews_project`
FOREIGN KEY (project) REFERENCES projects (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT `fk_reviews_owner`
FOREIGN KEY (owner) REFERENCES users (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS review_users (
review BIGINT UNSIGNED NOT NULL,
user VARCHAR(128) NOT NULL,
role TINYINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (review, user),
CONSTRAINT `fk_review_users_review`
FOREIGN KEY (review) REFERENCES reviews (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT `fk_review_users_user`
FOREIGN KEY (user) REFERENCES users (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS user_keys (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
user VARCHAR(128) NOT NULL,
kind VARCHAR(128) NOT NULL,
data VARCHAR(8192) NOT NULL,
comment VARCHAR(1024) NOT NULL,
CONSTRAINT `fk_user_keys_user`
FOREIGN KEY (user) REFERENCES users (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS translation_reviews (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
project VARCHAR(128) NOT NULL,
owner VARCHAR(128) NOT NULL,
title VARCHAR(1024) NOT NULL,
description MEDIUMTEXT NOT NULL DEFAULT '',
state TINYINT UNSIGNED NOT NULL DEFAULT 0,
progress FLOAT NOT NULL DEFAULT 0,
archived BOOLEAN NOT NULL DEFAULT 0,
base VARCHAR(40) NOT NULL,
head VARCHAR(40) NOT NULL,
CONSTRAINT `fk_translation_reviews_project`
FOREIGN KEY (project) REFERENCES projects (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT `fk_translation_reviews_owner`
FOREIGN KEY (owner) REFERENCES users (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS translation_review_users (
translation_review BIGINT UNSIGNED NOT NULL,
user VARCHAR(128) NOT NULL,
role TINYINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (translation_review, user),
CONSTRAINT `fk_translation_review_users_translation_review`
FOREIGN KEY (translation_review) REFERENCES translation_reviews (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
CONSTRAINT `fk_translation_review_users_user`
FOREIGN KEY (user) REFERENCES users (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS localization_strings (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
translation_review BIGINT UNSIGNED NOT NULL,
name VARCHAR(512) NOT NULL,
file VARCHAR(512) NOT NULL,
description MEDIUMTEXT NOT NULL DEFAULT '',
meaning VARCHAR(512) NOT NULL DEFAULT '',
source MEDIUMTEXT NOT NULL,
placeholder_offsets VARCHAR(512) NOT NULL DEFAULT '',
CONSTRAINT `fk_localization_strings_translation_review`
FOREIGN KEY (translation_review) REFERENCES translation_reviews (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS localization_placeholders (
id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
localization_string BIGINT UNSIGNED NOT NULL,
name VARCHAR(128) NOT NULL,
content VARCHAR(256) NOT NULL,
example VARCHAR(256) NOT NULL DEFAULT '',
CONSTRAINT `fk_localization_placeholder_localization_string`
FOREIGN KEY (localization_string) REFERENCES localization_strings (id)
ON DELETE CASCADE
ON UPDATE RESTRICT
);
CREATE TABLE IF NOT EXISTS translation_strings (
localization_string BIGINT UNSIGNED NOT NULL,
language VARCHAR(10) NOT NULL,
base_translation MEDIUMTEXT,
base_placeholder_offsets VARCHAR(512),
head_translation MEDIUMTEXT NOT NULL,
head_placeholder_offsets VARCHAR(512) NOT NULL DEFAULT '',
state TINYINT UNSIGNED NOT NULL DEFAULT 0,
comment MEDIUMTEXT NOT NULL DEFAULT '',
reviewer VARCHAR(128),
CONSTRAINT `fk_translation_string_localization_string`
FOREIGN KEY (localization_string) REFERENCES localization_strings (id)
ON DELETE CASCADE
ON UPDATE RESTRICT,
PRIMARY KEY (localization_string, language)
);
|