First web gui prototype
This commit is contained in:
+275
@@ -0,0 +1,275 @@
|
||||
/* SPDX-License-Identifier: WTFPL */
|
||||
|
||||
/* MariaDB Scheme
|
||||
Version: 1 */
|
||||
|
||||
CREATE TABLE user (
|
||||
userid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
login VARCHAR(20) NOT NULL,
|
||||
pass BINARY(60) NOT NULL,
|
||||
displayname VARCHAR(100) NOT NULL,
|
||||
role SET('vessel', 'captain','helmsman','sailor') NOT NULL DEFAULT 'sailor',
|
||||
flags SET('deleted','locked'),
|
||||
language CHAR(2) NOT NULL DEFAULT 'en',
|
||||
PRIMARY KEY (userid),
|
||||
UNIQUE INDEX ix_login (login)
|
||||
);
|
||||
|
||||
/* Settings
|
||||
E.g. the currently selected boat. Users logged in via the web are allowed
|
||||
to write to this table. Therefore a separate table and not additional
|
||||
fields in the user data record.
|
||||
|
||||
userid=0: Global program settings
|
||||
sno=0: db_scheme_version
|
||||
sno=1: doc_base_path
|
||||
|
||||
userid = -1: description of user settings for development and admin use
|
||||
|
||||
userid >=1: setings per user
|
||||
sno=1 current vessel
|
||||
|
||||
*/
|
||||
CREATE TABLE settings (
|
||||
userid SMALLINT(6) NOT NULL,
|
||||
sno SMALLINT(6) NOT NULL,
|
||||
valstr VARCHAR(200) DEFAULT NULL,
|
||||
valint INT(10) DEFAULT NULL,
|
||||
PRIMARY KEY (userid, sno)
|
||||
);
|
||||
|
||||
/* ddid=0 is list of lists, not editable
|
||||
flags: fixed=not deletable, value not changeable
|
||||
locked=not editable */
|
||||
CREATE TABLE dropdown (
|
||||
ddid TINYINT(3) UNSIGNED NOT NULL,
|
||||
ddval TINYINT(3) NOT NULL,
|
||||
sort TINYINT(3) DEFAULT NULL,
|
||||
ddtext VARCHAR(50) NOT NULL,
|
||||
ddshort VARCHAR(4) DEFAULT NULL,
|
||||
color CHAR(6) DEFAULT NULL,
|
||||
flags ENUM('locked', 'fixed') DEFAULT NULL,
|
||||
PRIMARY KEY (ddid, ddval)
|
||||
);
|
||||
|
||||
CREATE TABLE vessel (
|
||||
vid SMALLINT(10) NOT NULL AUTO_INCREMENT,
|
||||
vtype ENUM('mono','cat','tri') NOT NULL DEFAULT 'mono',
|
||||
vesselname VARCHAR(40) NOT NULL,
|
||||
model VARCHAR(20) DEFAULT NULL,
|
||||
loa FLOAT(4,2) UNSIGNED DEFAULT NULL,
|
||||
lwl FLOAT(4,2) UNSIGNED DEFAULT NULL,
|
||||
beam FLOAT(4,2) UNSIGNED DEFAULT NULL,
|
||||
draught FLOAT(3,2) UNSIGNED DEFAULT NULL,
|
||||
draught_min FLOAT(3,2) UNSIGNED DEFAULT NULL,
|
||||
displacement SMALLINT(6) UNSIGNED DEFAULT NULL,
|
||||
ballast SMALLINT(6) UNSIGNED DEFAULT NULL,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
PRIMARY KEY (vid)
|
||||
);
|
||||
|
||||
CREATE TABLE storage (
|
||||
sid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
vid SMALLINT(6) NOT NULL DEFAULT 1,
|
||||
sname VARCHAR(40) NOT NULL,
|
||||
stype TINYINT(3) NOT NULL DEFAULT 0,
|
||||
capacity SMALLINT(6) DEFAULT NULL,
|
||||
capaunit ENUM('kg', 'l') DEFAULT NULL,
|
||||
x SMALLINT(6) NOT NULL DEFAULT 0,
|
||||
y SMALLINT(6) NOT NULL DEFAULT 0,
|
||||
z SMALLINT(6) NOT NULL DEFAULT 0,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
PRIMARY KEY (sid)
|
||||
);
|
||||
|
||||
/* TODO define cabins? CREATE TABLE cabin ... */
|
||||
|
||||
|
||||
CREATE TABLE tag (
|
||||
tagid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
tagname VARCHAR(20) NOT NULL,
|
||||
color CHAR(6) DEFAULT NULL,
|
||||
PRIMARY KEY (tagid),
|
||||
UNIQUE INDEX ix_tagname (tagname)
|
||||
);
|
||||
|
||||
CREATE TABLE tagref (
|
||||
tagid SMALLINT(6) NOT NULL,
|
||||
objid SMALLINT(6) NOT NULL,
|
||||
objtype ENUM('equip','inv','prov','doc') NOT NULL,
|
||||
PRIMARY KEY (tagid, objid, objtype)
|
||||
);
|
||||
|
||||
/* TODO Boxes can be nested via parent
|
||||
TODO boxsize: (LxWxH) in cm? */
|
||||
CREATE TABLE box (
|
||||
boxid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
sid SMALLINT(6) NOT NULL,
|
||||
parent INT(10) DEFAULT NULL,
|
||||
label VARCHAR(20) DEFAULT NULL,
|
||||
color CHAR(6) DEFAULT NULL,
|
||||
content VARCHAR(60) DEFAULT NULL,
|
||||
weight FLOAT(5,2) UNSIGNED DEFAULT NULL,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
PRIMARY KEY (boxid),
|
||||
INDEX ix_label (label)
|
||||
);
|
||||
|
||||
CREATE TABLE equipment (
|
||||
eid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
vid SMALLINT(6) NOT NULL DEFAULT 1,
|
||||
ename VARCHAR(80) NOT NULL,
|
||||
make VARCHAR(40),
|
||||
model VARCHAR(40),
|
||||
ecat TINYINT(3) DEFAULT NULL,
|
||||
serial VARCHAR(30),
|
||||
supplier SMALLINT(6) DEFAULT NULL,
|
||||
manufacturer SMALLINT(6) DEFAULT NULL,
|
||||
purchdate DATE DEFAULT NULL,
|
||||
price DECIMAL(12,2) DEFAULT NULL,
|
||||
weight FLOAT(5,2) UNSIGNED DEFAULT NULL,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
PRIMARY KEY(eid)
|
||||
);
|
||||
|
||||
CREATE TABLE inventory (
|
||||
invid INT(10) NOT NULL AUTO_INCREMENT,
|
||||
invname VARCHAR(80) NOT NULL,
|
||||
boxtype ENUM('storage','box') NOT NULL DEFAULT 'storage',
|
||||
sid SMALLINT(6) NOT NULL DEFAULT 1,
|
||||
boxid SMALLINT(6) NOT NULL DEFAULT 1,
|
||||
number SMALLINT(6) UNSIGNED NOT NULL DEFAULT 1,
|
||||
weight FLOAT(5,2) UNSIGNED DEFAULT NULL,
|
||||
price DECIMAL(12,2) DEFAULT NULL,
|
||||
purchdate DATE DEFAULT NULL,
|
||||
invcond ENUM('unknown','good','normal','bad','repairable','defect') NOT NULL default 'unknown',
|
||||
PRIMARY KEY (invid),
|
||||
INDEX ix_invname (invname)
|
||||
);
|
||||
|
||||
CREATE TABLE measurement (
|
||||
mid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
mname VARCHAR(80) NOT NULL,
|
||||
nval TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,
|
||||
val1 INT(10) NOT NULL,
|
||||
val2 INT(10) NOT NULL,
|
||||
val3 INT(10) NOT NULL,
|
||||
unit TINYINT(3) NOT NULL DEFAULT 1,
|
||||
accuracy ENUM('unknown', 'precise', 'normal', 'rough', 'estimated') NOT NULL DEFAULT 'unknown',
|
||||
mdate DATE DEFAULT NULL,
|
||||
note VARCHAR(80) DEFAULT NULL,
|
||||
eid SMALLINT(6) DEFAULT NULL,
|
||||
PRIMARY KEY (mid)
|
||||
);
|
||||
|
||||
CREATE TABLE provisions (
|
||||
provid INT(10) NOT NULL AUTO_INCREMENT,
|
||||
provname VARCHAR(40) NOT NULL,
|
||||
sid SMALLINT(6) DEFAULT NULL,
|
||||
number SMALLINT(6) UNSIGNED NOT NULL DEFAULT 1,
|
||||
unit TINYINT(3) DEFAULT NULL,
|
||||
storedate DATE DEFAULT CURRENT_DATE,
|
||||
shelflife DATE DEFAULT NULL,
|
||||
PRIMARY KEY (provid)
|
||||
);
|
||||
|
||||
CREATE TABLE document (
|
||||
docid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
doctype ENUM('generic', 'manual', 'invoice', 'drawing', 'picture') NOT NULL DEFAULT 'generic',
|
||||
mimetype VARCHAR(80) NOT NULL DEFAULT 'application/octet-stream',
|
||||
filename VARCHAR(200) NOT NULL,
|
||||
extension CHAR(3) NOT NULL,
|
||||
hash VARCHAR(32) NOT NULL,
|
||||
docsize INT(10) unsigned NOT NULL,
|
||||
doctime DATETIME DEFAULT NULL,
|
||||
title VARCHAR(40) DEFAULT NULL,
|
||||
pages SMALLINT(6) unsigned NOT NULL DEFAULT 1,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
PRIMARY KEY (docid)
|
||||
);
|
||||
|
||||
CREATE TABLE docref (
|
||||
drid INT(10) NOT NULL AUTO_INCREMENT,
|
||||
reftype ENUM('vessel', 'box', 'equipment', 'project', 'task') NOT NULL DEFAULT 'vessel',
|
||||
docid SMALLINT(6) NOT NULL,
|
||||
refid SMALLINT(6) NOT NULL,
|
||||
PRIMARY KEY (drid),
|
||||
UNIQUE INDEX ix_docref (docid, refid)
|
||||
);
|
||||
|
||||
CREATE TABLE company (
|
||||
compid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
compname VARCHAR(40) NOT NULL,
|
||||
comptype TINYINT(3) NOT NULL DEFAULT 1,
|
||||
street VARCHAR(30),
|
||||
zip VARCHAR(10),
|
||||
city VARCHAR(30),
|
||||
country VARCHAR(30),
|
||||
contact VARCHAR(30),
|
||||
phone VARCHAR(30),
|
||||
email VARCHAR(50),
|
||||
web VARCHAR(40),
|
||||
customerno VARCHAR(20),
|
||||
contractno VARCHAR(20),
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
PRIMARY KEY (compid),
|
||||
UNIQUE INDEX ix_compname (compname)
|
||||
);
|
||||
|
||||
|
||||
/* TODO optional field: plan date, target date, completion date */
|
||||
CREATE TABLE maintenance (
|
||||
maintid INT(10) NOT NULL AUTO_INCREMENT,
|
||||
vid SMALLINT(6) NOT NULL DEFAULT 1,
|
||||
eid SMALLINT(6) DEFAULT NULL,
|
||||
series SMALLINT(6) DEFAULT NULL,
|
||||
activities VARCHAR(40) NOT NULL,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
maintstate ENUM('new','planned','ongoing','done') NOT NULL DEFAULT 'new',
|
||||
PRIMARY KEY (maintid)
|
||||
);
|
||||
|
||||
/* TODO? time recording */
|
||||
|
||||
CREATE TABLE project (
|
||||
projid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
projname VARCHAR(40) NOT NULL,
|
||||
vid SMALLINT(6) NOT NULL DEFAULT 1,
|
||||
responsible SMALLINT(6) NOT NULL,
|
||||
startdate date DEFAULT NULL,
|
||||
duration SMALLINT(6) UNSIGNED DEFAULT NULL,
|
||||
costs_plan DECIMAL(12,2) DEFAULT NULL,
|
||||
costs_final DECIMAL(12,2) DEFAULT NULL,
|
||||
remarks VARCHAR(150) DEFAULT NULL,
|
||||
projstate ENUM('new','plan','ongoing','finished') NOT NULL DEFAULT 'new',
|
||||
PRIMARY KEY (projid)
|
||||
);
|
||||
|
||||
CREATE TABLE task (
|
||||
taskid INT(10) NOT NULL AUTO_INCREMENT,
|
||||
projid SMALLINT(6) DEFAULT NULL,
|
||||
taskname VARCHAR(60) NOT NULL,
|
||||
taskstate ENUM('new','finished') NOT NULL DEFAULT 'new',
|
||||
PRIMARY KEY (taskid)
|
||||
);
|
||||
|
||||
CREATE TABLE checklist (
|
||||
clid SMALLINT(6) NOT NULL AUTO_INCREMENT,
|
||||
title VARCHAR(30) NOT NULL,
|
||||
clstate ENUM('new','open','closed') NOT NULL DEFAULT 'new',
|
||||
PRIMARY KEY (clid)
|
||||
);
|
||||
|
||||
CREATE TABLE checkitem (
|
||||
checkid INT(10) NOT NULL AUTO_INCREMENT,
|
||||
checkname VARCHAR(60) NOT NULL,
|
||||
groupid TINYINT(3) DEFAULT NULL,
|
||||
PRIMARY KEY (checkid)
|
||||
);
|
||||
|
||||
CREATE TABLE checkref (
|
||||
clid SMALLINT(6) NOT NULL,
|
||||
checkid INT(10) NOT NULL,
|
||||
sort SMALLINT(6) DEFAULT NULL,
|
||||
PRIMARY KEY (clid, checkid)
|
||||
);
|
||||
Reference in New Issue
Block a user