-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
94 lines (89 loc) · 3.2 KB
/
schema.sql
File metadata and controls
94 lines (89 loc) · 3.2 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
CREATE TABLE IF NOT EXISTS save_snapshots (
snapshot_id TEXT PRIMARY KEY,
save_name TEXT NOT NULL,
session_name TEXT,
source_path TEXT,
save_header_type INTEGER,
save_version INTEGER,
build_version INTEGER,
play_duration_seconds INTEGER,
save_date_raw BIGINT,
parser_version TEXT,
schema_version TEXT,
levels_count INTEGER,
partitions_count INTEGER,
objects_count INTEGER,
actor_count INTEGER,
component_count INTEGER,
biomass_total INTEGER,
biomass_working INTEGER,
power_production_mw DOUBLE PRECISION,
power_consumption_mw DOUBLE PRECISION,
power_max_consumption_mw DOUBLE PRECISION,
loaded_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS machines (
snapshot_id TEXT NOT NULL REFERENCES save_snapshots(snapshot_id) ON DELETE CASCADE,
instance_name TEXT NOT NULL,
level_name TEXT,
machine_type TEXT,
class_name TEXT,
machine_name TEXT,
building_class TEXT,
category TEXT,
type_path TEXT,
built_with_recipe_class TEXT,
built_with_recipe_name TEXT,
current_recipe_class TEXT,
current_recipe_name TEXT,
is_producing BOOLEAN,
current_potential DOUBLE PRECISION,
manufacturing_progress DOUBLE PRECISION,
position_x DOUBLE PRECISION,
position_y DOUBLE PRECISION,
position_z DOUBLE PRECISION,
PRIMARY KEY (snapshot_id, instance_name)
);
CREATE TABLE IF NOT EXISTS machine_power (
snapshot_id TEXT NOT NULL,
instance_name TEXT NOT NULL,
power_production_mw DOUBLE PRECISION,
power_consumption_mw DOUBLE PRECISION,
max_power_consumption_mw DOUBLE PRECISION,
fuel_item_class TEXT,
fuel_item_name TEXT,
fuel_consumption_per_min DOUBLE PRECISION,
supplemental_item_class TEXT,
supplemental_item_name TEXT,
supplemental_consumption_per_min DOUBLE PRECISION,
PRIMARY KEY (snapshot_id, instance_name),
FOREIGN KEY (snapshot_id, instance_name) REFERENCES machines(snapshot_id, instance_name) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS machine_recipes (
snapshot_id TEXT NOT NULL,
instance_name TEXT NOT NULL,
recipe_class TEXT,
recipe_name TEXT,
direction TEXT NOT NULL CHECK (direction IN ('input', 'output')),
item_class TEXT,
item_name TEXT,
amount_per_cycle DOUBLE PRECISION,
cycle_time_seconds DOUBLE PRECISION,
amount_per_min DOUBLE PRECISION,
is_alternate BOOLEAN,
FOREIGN KEY (snapshot_id, instance_name) REFERENCES machines(snapshot_id, instance_name) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS resource_extraction (
snapshot_id TEXT NOT NULL,
instance_name TEXT NOT NULL,
extractor_class TEXT,
extractor_name TEXT,
resource_class TEXT,
resource_name TEXT,
purity TEXT,
amount_per_min DOUBLE PRECISION,
FOREIGN KEY (snapshot_id, instance_name) REFERENCES machines(snapshot_id, instance_name) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_machines_snapshot_category ON machines (snapshot_id, category);
CREATE INDEX IF NOT EXISTS idx_machine_recipes_snapshot_item ON machine_recipes (snapshot_id, item_class);
CREATE INDEX IF NOT EXISTS idx_resource_extraction_snapshot_resource ON resource_extraction (snapshot_id, resource_class);