-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.sql
104 lines (102 loc) · 2.89 KB
/
setup.sql
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
-- this is highly experimental!
-- DROP TABLE users CASCADE;
-- DROP TABLE finanzlog;
-- DROP TABLE termine CASCADE;
-- DROP TABLE waschagtransaktionen;
-- DROP TABLE preise;
-- DROP TABLE notify;
-- DROP TABLE doku_deu;
-- DROP TABLE doku_eng;
CREATE TABLE config (
zweck VARCHAR(64) PRIMARY KEY NOT NULL,
wert FLOAT
);
CREATE TABLE users (
id SERIAL PRIMARY KEY,
pw VARCHAR(15),
ip VARCHAR(15), -- ip saved as string...
name VARCHAR(15),
nachname VARCHAR(15),
login VARCHAR(15),
zimmer INTEGER,
gesperrt BOOLEAN,
status INTEGER, -- 1: enduser, 3: exWaschag, 5: waschag, 7: admin, 9: god
message VARCHAR(4095),
bemerkung VARCHAR(256),
lastlogin TIMESTAMP,
gotfreimarken BOOLEAN,
von INTEGER REFERENCES users(id),
termine INTEGER -- number of used appointments
);
CREATE TABLE waschmaschinen (
id INTEGER PRIMARY KEY NOT NULL,
status INTEGER, -- 0: sperre (red, defekt), 1: not sperre (black, betriebsbereit), else: sperre (black)
bemerkung VARCHAR(255),
von INTEGER REFERENCES users(id)
);
CREATE TABLE finanzlog (
'user' INTEGER REFERENCES users(id), -- user is a keyword! https://dev.mysql.com/doc/refman/5.7/en/keywords.html
bestand INTEGER,
aktion INTEGER, -- betrag
bemerkung VARCHAR(255),
datum DATE,
bonus VARCHAR(7), -- not INTEGER because sometimes ''
id SERIAL PRIMARY KEY
);
CREATE TABLE termine (
'user' INTEGER REFERENCES users(id),
zeit INTEGER,
maschine INTEGER REFERENCES waschmaschinen(id),
datum DATE,
wochentag INTEGER,
bonus BOOLEAN DEFAULT 0,
PRIMARY KEY (zeit, maschine, datum)
);
CREATE TABLE waschagtransaktionen (
'user' INTEGER REFERENCES users(id),
aktion INTEGER,
bestand INTEGER,
bemerkung VARCHAR(255),
datum DATE,
id SERIAL PRIMARY KEY
);
CREATE TABLE preise (
zeit INTEGER, -- 0..15 available slots
tag INTEGER, -- 0..6 weekday
preis INTEGER,
id SERIAL PRIMARY KEY
);
CREATE TABLE notify (
id INTEGER PRIMARY KEY NOT NULL, -- compared with users.id
ziel INTEGER,
datum DATE
);
CREATE TABLE doku_eng (
paragraph INTEGER,
abschnitt INTEGER,
satz INTEGER,
titel VARCHAR(4095),
inhalt VARCHAR(16383),
id SERIAL PRIMARY KEY
);
CREATE TABLE doku_deu (
paragraph INTEGER,
abschnitt INTEGER,
satz INTEGER,
titel VARCHAR(4095),
inhalt VARCHAR(16383),
id SERIAL PRIMARY KEY
);
INSERT INTO users (login,pw,status) VALUES ('w','pszA9..xmmgb6',9); -- pw=crypt('b','ps')
INSERT INTO waschmaschinen (id,status) VALUES (1,0);
INSERT INTO waschmaschinen (id,status) VALUES (2,1);
INSERT INTO waschmaschinen (id,status) VALUES (3,2);
INSERT INTO config (zweck, wert) VALUES
( "Stornierzeit (in Min)", 5 ),
( "Antrittszeit (in Min)", 15 ),
( "minimaler Einzahlbetrag (in Euro)", 5 ),
( "Termine pro Monat", 12 ),
( "Relaiszeit (in Min)", 5 ),
( "Freigeld fuer WaschAG", 12 ),
( "Vorhaltezeit Kontodaten (in Monaten)", 3 ),
( "Vorhaltezeit WAG-Kontodaten (in Monaten)", 8 );