-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdatabase-schema.sql
More file actions
163 lines (139 loc) · 4.44 KB
/
database-schema.sql
File metadata and controls
163 lines (139 loc) · 4.44 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
-- Nlib API - PostgreSQL Database Schema
-- Execute this script to create all necessary tables for the Nlib API
-- Create main nx table with all metadata
CREATE TABLE IF NOT EXISTS nx (
tid VARCHAR(16) PRIMARY KEY,
name TEXT,
publisher TEXT,
developer TEXT,
release_date VARCHAR(10),
category TEXT,
languages TEXT,
nsu_id BIGINT,
number_of_players INTEGER,
rating_content TEXT,
rights_id VARCHAR(32),
region VARCHAR(10),
is_demo INTEGER DEFAULT 0,
console VARCHAR(10) DEFAULT 'nx',
type VARCHAR(20) DEFAULT 'base',
version INTEGER DEFAULT 0,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create index on tid for faster lookups
CREATE INDEX IF NOT EXISTS idx_nx_tid ON nx(tid);
-- Create index on updated_at for recent queries
CREATE INDEX IF NOT EXISTS idx_nx_updated_at ON nx(updated_at DESC);
-- Create index on region for filtering
CREATE INDEX IF NOT EXISTS idx_nx_region ON nx(region);
-- Create description tables for each language
CREATE TABLE IF NOT EXISTS nx_en (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_ja (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_es (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_de (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_fr (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_nl (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_pt (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_it (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_zh (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_ko (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS nx_ru (
tid VARCHAR(16) PRIMARY KEY,
intro TEXT,
description TEXT,
FOREIGN KEY (tid) REFERENCES nx(tid) ON DELETE CASCADE
);
-- Create ctr table for 3DS game data
CREATE TABLE IF NOT EXISTS ctr (
tid VARCHAR(16) PRIMARY KEY,
uid VARCHAR(32),
name TEXT,
formal_name TEXT,
description TEXT,
release_date_on_eshop VARCHAR(10),
product_code VARCHAR(32),
platform_name TEXT,
region VARCHAR(50),
genres TEXT, -- JSON array stored as TEXT
features TEXT, -- JSON array stored as TEXT
languages TEXT, -- JSON array stored as TEXT
rating_system TEXT, -- JSON object stored as TEXT
version VARCHAR(20),
disclaimer TEXT,
descriptors TEXT, -- JSON array stored as TEXT
category VARCHAR(50) DEFAULT 'base',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create index on ctr tid for faster lookups
CREATE INDEX IF NOT EXISTS idx_ctr_tid ON ctr(tid);
-- Create index on ctr category for filtering
CREATE INDEX IF NOT EXISTS idx_ctr_category ON ctr(category);
-- Create index on ctr updated_at for recent queries
CREATE INDEX IF NOT EXISTS idx_ctr_updated_at ON ctr(updated_at DESC);
-- Create index on ctr region for filtering
CREATE INDEX IF NOT EXISTS idx_ctr_region ON ctr(region);
-- Create sync_log table to track updates
CREATE TABLE IF NOT EXISTS sync_log (
id SERIAL PRIMARY KEY,
synced_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
games_count INTEGER,
status VARCHAR(50),
source VARCHAR(100)
);
-- Create index on sync_log for recent queries
CREATE INDEX IF NOT EXISTS idx_sync_log_synced_at ON sync_log(synced_at DESC);
-- Display table information
SELECT 'Tables created successfully!' AS status;
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;