Repository navigation
Expand file tree
/
Copy pathinstalled-packages.sql
More file actions
76 lines (67 loc) · 2.31 KB
/
Copy pathinstalled-packages.sql
File metadata and controls
76 lines (67 loc) · 2.31 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
-- Defines the Spec 2.4 installed package index with schema version 242.
-- The DDL matches packagedatabase/database.go and requires an empty database.
-- Execution does not migrate a database or register package contents.
-- Foreign key enforcement requires configuration on each connection.
PRAGMA foreign_keys = ON;
PRAGMA busy_timeout = 0;
BEGIN TRANSACTION;
CREATE TABLE packages (
id TEXT COLLATE BINARY NOT NULL,
version TEXT NOT NULL,
compat_version TEXT NOT NULL,
hash TEXT NOT NULL,
installed_at INTEGER NOT NULL,
directory TEXT NOT NULL UNIQUE,
PRIMARY KEY (id, version)
);
CREATE TABLE dependencies (
package_id TEXT NOT NULL,
package_version TEXT NOT NULL,
id TEXT NOT NULL,
version TEXT NOT NULL,
PRIMARY KEY (package_id, package_version, id),
FOREIGN KEY (package_id, package_version)
REFERENCES packages (id, version) ON DELETE CASCADE
);
CREATE TABLE contributions (
package_id TEXT NOT NULL,
package_version TEXT NOT NULL,
category TEXT NOT NULL,
id TEXT NOT NULL,
interface TEXT NOT NULL,
level INTEGER NOT NULL,
variant TEXT NOT NULL,
PRIMARY KEY (package_id, package_version, category, id),
CHECK (category = 'singer' OR (interface = '' AND level = 0 AND variant = '')),
FOREIGN KEY (package_id, package_version)
REFERENCES packages (id, version) ON DELETE CASCADE
);
CREATE TABLE package_texts (
package_id TEXT NOT NULL,
package_version TEXT NOT NULL,
language TEXT NOT NULL,
name TEXT,
description TEXT,
vendor TEXT,
PRIMARY KEY (package_id, package_version, language),
FOREIGN KEY (package_id, package_version)
REFERENCES packages (id, version) ON DELETE CASCADE
);
CREATE TABLE contribution_names (
package_id TEXT NOT NULL,
package_version TEXT NOT NULL,
category TEXT NOT NULL,
contribution_id TEXT NOT NULL,
language TEXT NOT NULL,
name TEXT NOT NULL,
PRIMARY KEY (package_id, package_version, category, contribution_id, language),
CHECK (category = 'singer'),
FOREIGN KEY (package_id, package_version, category, contribution_id)
REFERENCES contributions (package_id, package_version, category, id)
ON DELETE CASCADE
);
CREATE TABLE transaction_commits (
id TEXT PRIMARY KEY NOT NULL
);
PRAGMA user_version = 242;
COMMIT;