diff --git a/.env b/.env index 49e154b..cc1cc7d 100644 --- a/.env +++ b/.env @@ -9,7 +9,7 @@ LOG_PATH=logs.log DATABASE_HOST=localhost DATABASE_PORT=5432 -DATABASE_DB=LegoLog -DATABASE_DB_DEV=LegoLogDev +DATABASE_DB=legolog +DATABASE_DB_DEV=legologdev DATABASE_USER=postgres DATABASE_PASSWORD=postgres diff --git a/db/.sql b/db/.sql new file mode 100644 index 0000000..e3dece1 --- /dev/null +++ b/db/.sql @@ -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 ); + diff --git a/db/ERD.png b/db/ERD.png new file mode 100644 index 0000000..4dcd38c Binary files /dev/null and b/db/ERD.png differ diff --git a/db/schema.sql b/db/schema.sql index 5ea0566..6e5dd07 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -1,91 +1,92 @@ -CREATE TABLE IF NOT EXISTS LegoBrickPriceHistory ( - 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 ( +CREATE TABLE IF NOT EXISTS catagory ( id INT NOT NULL PRIMARY KEY, name VARCHAR (100) ); -CREATE TABLE IF NOT EXISTS ColourType ( +CREATE TABLE IF NOT EXISTS colour_type ( id INT NOT NULL PRIMARY KEY, name VARCHAR (64) ); -CREATE TABLE IF NOT EXISTS LegoBrickColour ( +CREATE TABLE IF NOT EXISTS lego_brick_colour ( id INT NOT NULL PRIMARY KEY, name VARCHAR (100), hexrgb VARCHAR (6) NOT NULL, 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, catagory INT, name VARCHAR (100), - date_released DATETIME, + date_released TIMESTAMP WITHOUT TIME ZONE, dimensions_x DECIMAL, dimensions_y DECIMAL, dimensions_z DECIMAL, - FOREIGN KEY ( catagory ) REFERENCES Catagory( id ), - FOREIGN KEY ( id ) REFERENCES LegoSetInventory( id ) + FOREIGN KEY ( catagory ) REFERENCES catagory( id ) ); -CREATE TABLE IF NOT EXISTS LegoBrick ( +CREATE TABLE IF NOT EXISTS lego_brick ( id VARCHAR (50) NOT NULL PRIMARY KEY, - name TEXT(100) NOT NULL, + name VARCHAR NOT NULL, colour INT, catagory INT, weight DECIMAL, dimensions_x INT, dimensions_y INT, dimensions_z INT, - date_from DATETIME, - date_to DATETIME, - FOREIGN KEY ( colour ) REFERENCES LegoBrickColour( id ), - FOREIGN KEY ( catagory ) REFERENCES Catagory( id ) + date_from TIMESTAMP WITHOUT TIME ZONE, + date_to TIMESTAMP WITHOUT TIME ZONE, + FOREIGN KEY ( colour ) REFERENCES lego_brick_colour( 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, set_id VARCHAR (50) NOT NULL, brick_id VARCHAR (50) NOT NULL, amount INT, - FOREIGN KEY ( set_id ) REFERENCES LegoSet( id ), - FOREIGN KEY ( brick_id ) REFERENCES LegoBrick( id ) + FOREIGN KEY ( set_id ) REFERENCES lego_set( id ), + FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id ) ); diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index 3010b51..f45b167 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -1,5 +1,8 @@ # DotEnv +Items suffixed with `_DEV` will automatically replace the non-dev +version of the same item internally + ```config NODE_ENV=dev/prod diff --git a/src/index.js b/src/index.js index 2a1cc3d..c71d0bb 100644 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,6 @@ async function main() { Logger.init(); Config.load(); - Server.load(); Server.listen(process.env.PORT); } diff --git a/src/routes/server.js b/src/routes/server.js index e903ac3..55013af 100644 --- a/src/routes/server.js +++ b/src/routes/server.js @@ -21,6 +21,5 @@ function listen(port) { module.exports = { app, - load, listen };