]> ruin.nu Git - ndwebbie.git/blob - database/scans.sql
rework of scan storage and parsing
[ndwebbie.git] / database / scans.sql
1 ALTER TABLE fleets ADD COLUMN sender INTEGER NOT NULL REFERENCES planets(id) ON UPDATE CASCADE ON DELETE CASCADE;
2
3 ALTER TABLE fleets DROP COLUMN fleet;
4
5 ALTER TABLE fleets ALTER COLUMN target DROP NOT NULL;
6
7 ALTER TABLE fleets ALTER COLUMN back DROP NOT NULL;
8
9 ALTER TABLE fleets ALTER COLUMN eta DROP NOT NULL;
10
11 ALTER TABLE fleets ADD COLUMN amount INTEGER;
12
13 ALTER TABLE fleets ADD COLUMN name TEXT NOT NULL;
14
15 ALTER TABLE fleets ADD COLUMN ingal BOOLEAN NOT NULL DEFAULT false;
16
17 ALTER TABLE fleets RENAME COLUMN landing_tick TO tick;
18
19 ALTER TABLE fleet_ships RENAME COLUMN fleet TO id;
20
21
22 CREATE TABLE fleet_scans (
23         id INTEGER PRIMARY KEY REFERENCES fleets(id),
24         scan INTEGER NOT NULL REFERENCES scans(id)
25 ) WITHOUT OIDS;
26
27 ALTER TABLE scans DROP COLUMN scan;
28
29 ALTER TABLE scans DROP COLUMN type;
30
31 ALTER TABLE scans ADD COLUMN type TEXT;
32
33 ALTER TABLE scans ADD COLUMN uid INTEGER NOT NULL DEFAULT -1 REFERENCES users(uid) ON UPDATE RESTRICT ON DELETE RESTRICT;
34
35 ALTER TABLE scans ADD COLUMN groupscan BOOLEAN NOT NULL DEFAULT False;
36
37 ALTER TABLE scans ADD COLUMN parsed BOOLEAN NOT NULL DEFAULT False;
38
39 ALTER TABLE scans ADD COLUMN id SERIAL PRIMARY KEY;
40
41 ALTER TABLE scans ADD UNIQUE (scan_id, tick, groupscan);
42
43 CREATE OR REPLACE FUNCTION planetid(x integer, y integer, z integer, tick integer) RETURNS integer
44     AS $_$SELECT id FROM planet_stats WHERE x = $1 AND y = $2 AND z = $3 AND (tick >= $4  OR tick =( SELECT max(tick) FROM planet_stats)) ORDER BY tick ASC LIMIT 1$_$
45     LANGUAGE sql STABLE;
46
47 CREATE OR REPLACE FUNCTION planetcoords(IN id integer,IN tick integer, OUT x integer,OUT y integer,OUT z integer)
48     AS $_$SELECT x,y,z FROM planet_stats WHERE id = $1 AND (tick >= $2  OR tick =( SELECT max(tick) FROM planet_stats))  ORDER BY tick ASC LIMIT 1$_$
49     LANGUAGE sql STABLE;
50
51 CREATE TABLE planet_data_types (
52         id SERIAL PRIMARY KEY,
53         category TEXT NOT NULL,
54         name TEXT NOT NULL,
55         UNIQUE (category,name)
56 ) WITHOUT OIDS;
57
58 INSERT INTO planet_data_types (category,name) VALUES('roid','Metal');
59 INSERT INTO planet_data_types (category,name) VALUES('roid','Crystal');
60 INSERT INTO planet_data_types (category,name) VALUES('roid','Eonium');
61 INSERT INTO planet_data_types (category,name) VALUES('resource','Metal');
62 INSERT INTO planet_data_types (category,name) VALUES('resource','Crystal');
63 INSERT INTO planet_data_types (category,name) VALUES('resource','Eonium');
64 INSERT INTO planet_data_types (category,name) VALUES('tech','Space Travel');
65 INSERT INTO planet_data_types (category,name) VALUES('tech','Infrastructure');
66 INSERT INTO planet_data_types (category,name) VALUES('tech','Hulls');
67 INSERT INTO planet_data_types (category,name) VALUES('tech','Waves');
68 INSERT INTO planet_data_types (category,name) VALUES('tech','Core Extraction');
69 INSERT INTO planet_data_types (category,name) VALUES('tech','Covert Ops');
70 INSERT INTO planet_data_types (category,name) VALUES('tech','Asteroid Mining');
71 INSERT INTO planet_data_types (category,name) VALUES('struc','Light Factory');
72 INSERT INTO planet_data_types (category,name) VALUES('struc','Medium Factory');
73 INSERT INTO planet_data_types (category,name) VALUES('struc','Heavy Factory');
74 INSERT INTO planet_data_types (category,name) VALUES('struc','Wave Amplifier');
75 INSERT INTO planet_data_types (category,name) VALUES('struc','Wave Distorter');
76 INSERT INTO planet_data_types (category,name) VALUES('struc','Metal Refinery');
77 INSERT INTO planet_data_types (category,name) VALUES('struc','Crystal Refinery');
78 INSERT INTO planet_data_types (category,name) VALUES('struc','Eonium Refinery');
79 INSERT INTO planet_data_types (category,name) VALUES('struc','Research Laboratory');
80 INSERT INTO planet_data_types (category,name) VALUES('struc','Finance Centre');
81 INSERT INTO planet_data_types (category,name) VALUES('struc','Security Centre');
82
83 CREATE TABLE planet_data (
84         id SERIAL PRIMARY KEY,
85         uid INTEGER NOT NULL REFERENCES users(uid),
86         planet INTEGER NOT NULL REFERENCES planets(id),
87         tick INTEGER NOT NULL,
88         rid INTEGER NOT NULL REFERENCES planet_data_types(id),
89         amount INTEGER NOT NULL
90 ) WITHOUT OIDS;
91
92 CREATE TABLE data_scans (
93         id INTEGER PRIMARY KEY REFERENCES planet_data(id),
94         scan INTEGER NOT NULL REFERENCES scans(id)
95 ) WITHOUT OIDS;
96
97 DROP TABLE intel;