server and ERD

Former-commit-id: b069d94d494a1eeaa180e237608b466004cfb158
This commit is contained in:
Ben
2022-02-05 15:54:58 +00:00
parent 2e717cac1f
commit db1bc79534
7 changed files with 172 additions and 59 deletions

4
.env
View File

@@ -9,7 +9,7 @@ LOG_PATH=logs.log
DATABASE_HOST=localhost DATABASE_HOST=localhost
DATABASE_PORT=5432 DATABASE_PORT=5432
DATABASE_DB=LegoLog DATABASE_DB=legolog
DATABASE_DB_DEV=LegoLogDev DATABASE_DB_DEV=legologdev
DATABASE_USER=postgres DATABASE_USER=postgres
DATABASE_PASSWORD=postgres DATABASE_PASSWORD=postgres

111
db/.sql Normal file
View File

@@ -0,0 +1,111 @@
CREATE TABLE "public".catagory (
id integer NOT NULL ,
name varchar(100) ,
CONSTRAINT catagory_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".colour_type (
id integer NOT NULL ,
name varchar(64) ,
CONSTRAINT colour_type_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_brick_colour (
id integer NOT NULL ,
name varchar(100) ,
hexrgb varchar(6) NOT NULL ,
col_type integer ,
CONSTRAINT lego_brick_colour_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_set (
id varchar(50) NOT NULL ,
catagory integer ,
name varchar(100) ,
date_released timestamp ,
dimensions_x numeric ,
dimensions_y numeric ,
dimensions_z numeric ,
CONSTRAINT lego_set_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_set_inventory (
id varchar(50) NOT NULL ,
stock integer NOT NULL ,
price numeric NOT NULL ,
demand_factor numeric NOT NULL ,
backorder boolean ,
backorder_stock integer ,
last_updated timestamp NOT NULL ,
CONSTRAINT lego_set_inventory_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_set_price_history (
id integer NOT NULL ,
set_id varchar(50) NOT NULL ,
price_point numeric NOT NULL ,
date_point timestamp NOT NULL ,
CONSTRAINT lego_set_price_history_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_brick (
id varchar(50) NOT NULL ,
name varchar NOT NULL ,
colour integer ,
catagory integer ,
weight numeric ,
dimensions_x integer ,
dimensions_y integer ,
dimensions_z integer ,
date_from timestamp ,
date_to timestamp ,
CONSTRAINT lego_brick_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_brick_inventory (
id varchar(50) NOT NULL ,
stock integer NOT NULL ,
price numeric NOT NULL ,
demand_factor numeric NOT NULL ,
backorder boolean ,
backorder_stock integer ,
last_updated timestamp NOT NULL ,
CONSTRAINT lego_brick_inventory_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".lego_brick_price_history (
id integer NOT NULL ,
brick_id varchar(50) NOT NULL ,
price_point numeric NOT NULL ,
date_point timestamp NOT NULL ,
CONSTRAINT lego_brick_price_history_pkey PRIMARY KEY ( id )
);
CREATE TABLE "public".set_descriptor (
id varchar(50) NOT NULL ,
set_id varchar(50) NOT NULL ,
brick_id varchar(50) NOT NULL ,
amount integer ,
CONSTRAINT set_descriptor_pkey PRIMARY KEY ( id )
);
ALTER TABLE "public".lego_brick ADD CONSTRAINT lego_brick_catagory_fkey FOREIGN KEY ( catagory ) REFERENCES "public".catagory( id );
ALTER TABLE "public".lego_brick ADD CONSTRAINT lego_brick_colour_fkey FOREIGN KEY ( colour ) REFERENCES "public".lego_brick_colour( id );
ALTER TABLE "public".lego_brick_colour ADD CONSTRAINT lego_brick_colour_col_type_fkey FOREIGN KEY ( col_type ) REFERENCES "public".colour_type( id );
ALTER TABLE "public".lego_brick_inventory ADD CONSTRAINT lego_brick_inventory_id_fkey FOREIGN KEY ( id ) REFERENCES "public".lego_brick( id );
ALTER TABLE "public".lego_brick_price_history ADD CONSTRAINT lego_brick_price_history_brick_id_fkey FOREIGN KEY ( brick_id ) REFERENCES "public".lego_brick( id );
ALTER TABLE "public".lego_set ADD CONSTRAINT lego_set_catagory_fkey FOREIGN KEY ( catagory ) REFERENCES "public".catagory( id );
ALTER TABLE "public".lego_set_inventory ADD CONSTRAINT lego_set_inventory_id_fkey FOREIGN KEY ( id ) REFERENCES "public".lego_set( id );
ALTER TABLE "public".lego_set_price_history ADD CONSTRAINT lego_set_price_history_set_id_fkey FOREIGN KEY ( set_id ) REFERENCES "public".lego_set( id );
ALTER TABLE "public".set_descriptor ADD CONSTRAINT set_descriptor_brick_id_fkey FOREIGN KEY ( brick_id ) REFERENCES "public".lego_brick( id );
ALTER TABLE "public".set_descriptor ADD CONSTRAINT set_descriptor_set_id_fkey FOREIGN KEY ( set_id ) REFERENCES "public".lego_set( id );

BIN
db/ERD.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -1,91 +1,92 @@
CREATE TABLE IF NOT EXISTS LegoBrickPriceHistory ( CREATE TABLE IF NOT EXISTS catagory (
id INT NOT NULL PRIMARY KEY AUTOINCREMENT,
brick_id INT NOT NULL,
price_point DECIMAL NOT NULL,
date_point DATETIME NOT NULL,
FOREIGN KEY ( id ) REFERENCES LegoBrick( id )
);
CREATE TABLE IF NOT EXISTS LegoSetPriceHistory (
id INT NOT NULL PRIMARY KEY AUTOINCREMENT,
set_id INT NOT NULL,
price_point DECIMAL NOT NULL,
date_point DATETIME NOT NULL,
FOREIGN KEY ( id ) REFERENCES LegoSet( id )
);
CREATE TABLE IF NOT EXISTS LegoBrickInventory (
id VARCHAR (50) NOT NULL PRIMARY KEY,
stock INT NOT NULL,
price DECIMAL NOT NULL,
demand_factor DECIMAL NOT NULL,
backorder BOOLEAN,
backorder_stock INT,
last_updated DATETIME NOT NULL
FOREIGN KEY ( id ) REFERENCES LegoBrick( id )
);
CREATE TABLE IF NOT EXISTS LegoSetInventory (
id VARCHAR (50) NOT NULL PRIMARY KEY,
stock INT NOT NULL,
price DECIMAL NOT NULL,
demand_factor DECIMAL NOT NULL,
backorder BOOLEAN,
backorder_stock INT,
last_updated DATETIME NOT NULL
FOREIGN KEY ( id ) REFERENCES LegoSet( id )
);
CREATE TABLE IF NOT EXISTS Catagory (
id INT NOT NULL PRIMARY KEY, id INT NOT NULL PRIMARY KEY,
name VARCHAR (100) name VARCHAR (100)
); );
CREATE TABLE IF NOT EXISTS ColourType ( CREATE TABLE IF NOT EXISTS colour_type (
id INT NOT NULL PRIMARY KEY, id INT NOT NULL PRIMARY KEY,
name VARCHAR (64) name VARCHAR (64)
); );
CREATE TABLE IF NOT EXISTS LegoBrickColour ( CREATE TABLE IF NOT EXISTS lego_brick_colour (
id INT NOT NULL PRIMARY KEY, id INT NOT NULL PRIMARY KEY,
name VARCHAR (100), name VARCHAR (100),
hexrgb VARCHAR (6) NOT NULL, hexrgb VARCHAR (6) NOT NULL,
col_type INT, col_type INT,
FOREIGN KEY ( col_type ) REFERENCES ColourType( id ) FOREIGN KEY ( col_type ) REFERENCES colour_type( id )
); );
CREATE TABLE IF NOT EXISTS LegoSet ( CREATE TABLE IF NOT EXISTS lego_set (
id VARCHAR (50) NOT NULL PRIMARY KEY, id VARCHAR (50) NOT NULL PRIMARY KEY,
catagory INT, catagory INT,
name VARCHAR (100), name VARCHAR (100),
date_released DATETIME, date_released TIMESTAMP WITHOUT TIME ZONE,
dimensions_x DECIMAL, dimensions_x DECIMAL,
dimensions_y DECIMAL, dimensions_y DECIMAL,
dimensions_z DECIMAL, dimensions_z DECIMAL,
FOREIGN KEY ( catagory ) REFERENCES Catagory( id ), FOREIGN KEY ( catagory ) REFERENCES catagory( id )
FOREIGN KEY ( id ) REFERENCES LegoSetInventory( id )
); );
CREATE TABLE IF NOT EXISTS LegoBrick ( CREATE TABLE IF NOT EXISTS lego_brick (
id VARCHAR (50) NOT NULL PRIMARY KEY, id VARCHAR (50) NOT NULL PRIMARY KEY,
name TEXT(100) NOT NULL, name VARCHAR NOT NULL,
colour INT, colour INT,
catagory INT, catagory INT,
weight DECIMAL, weight DECIMAL,
dimensions_x INT, dimensions_x INT,
dimensions_y INT, dimensions_y INT,
dimensions_z INT, dimensions_z INT,
date_from DATETIME, date_from TIMESTAMP WITHOUT TIME ZONE,
date_to DATETIME, date_to TIMESTAMP WITHOUT TIME ZONE,
FOREIGN KEY ( colour ) REFERENCES LegoBrickColour( id ), FOREIGN KEY ( colour ) REFERENCES lego_brick_colour( id ),
FOREIGN KEY ( catagory ) REFERENCES Catagory( id ) FOREIGN KEY ( catagory ) REFERENCES catagory( id )
); );
CREATE TABLE IF NOT EXISTS SetDescriptor ( CREATE TABLE IF NOT EXISTS lego_brick_price_history (
id INT NOT NULL PRIMARY KEY,
brick_id VARCHAR (50) NOT NULL,
price_point DECIMAL NOT NULL,
date_point TIMESTAMP WITHOUT TIME ZONE NOT NULL,
FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id )
);
CREATE TABLE IF NOT EXISTS lego_set_price_history (
id INT NOT NULL PRIMARY KEY,
set_id VARCHAR (50) NOT NULL,
price_point DECIMAL NOT NULL,
date_point TIMESTAMP WITHOUT TIME ZONE NOT NULL,
FOREIGN KEY ( set_id ) REFERENCES lego_set( id )
);
CREATE TABLE IF NOT EXISTS lego_brick_inventory (
id VARCHAR (50) NOT NULL,
stock INT NOT NULL,
price DECIMAL NOT NULL,
demand_factor DECIMAL NOT NULL,
backorder BOOLEAN,
backorder_stock INT,
last_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL,
PRIMARY KEY ( id ),
FOREIGN KEY ( id ) REFERENCES lego_brick( id )
);
CREATE TABLE IF NOT EXISTS lego_set_inventory (
id VARCHAR (50) NOT NULL,
stock INT NOT NULL,
price DECIMAL NOT NULL,
demand_factor DECIMAL NOT NULL,
backorder BOOLEAN,
backorder_stock INT,
last_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL,
PRIMARY KEY ( id ),
FOREIGN KEY ( id ) REFERENCES lego_set( id )
);
CREATE TABLE IF NOT EXISTS set_descriptor (
id VARCHAR (50) NOT NULL PRIMARY KEY, id VARCHAR (50) NOT NULL PRIMARY KEY,
set_id VARCHAR (50) NOT NULL, set_id VARCHAR (50) NOT NULL,
brick_id VARCHAR (50) NOT NULL, brick_id VARCHAR (50) NOT NULL,
amount INT, amount INT,
FOREIGN KEY ( set_id ) REFERENCES LegoSet( id ), FOREIGN KEY ( set_id ) REFERENCES lego_set( id ),
FOREIGN KEY ( brick_id ) REFERENCES LegoBrick( id ) FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id )
); );

View File

@@ -1,5 +1,8 @@
# DotEnv # DotEnv
Items suffixed with `_DEV` will automatically replace the non-dev
version of the same item internally
```config ```config
NODE_ENV=dev/prod NODE_ENV=dev/prod

View File

@@ -7,7 +7,6 @@ async function main() {
Logger.init(); Logger.init();
Config.load(); Config.load();
Server.load();
Server.listen(process.env.PORT); Server.listen(process.env.PORT);
} }

View File

@@ -21,6 +21,5 @@ function listen(port) {
module.exports = { module.exports = {
app, app,
load,
listen listen
}; };