diff --git a/db/Seed.js b/db/Seed.js index c45f58d..d93271d 100644 --- a/db/Seed.js +++ b/db/Seed.js @@ -1,58 +1,71 @@ const { Client } = require('pg'); require('dotenv').config({ path: "../.env" }); -(async () => { +async function main() { const client = new Client({ connectionString: process.env.CONNECTION }); await client.connect().then(console.log("Connection successful.")); + // user const createUserTable = ` CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, - username VARCHAR NOT NULL, + email VARCHAR NOT NULL, password VARCHAR NOT NULL, firstname VARCHAR NOT NULL, lastname VARCHAR NOT NULL ); `; + // cart const createCartTable = ` CREATE TABLE IF NOT EXISTS cart ( id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, appUserId INT REFERENCES users(id), - subtotal NUMERIC ); `; + // order const createOrderTable = ` CREATE TABLE IF NOT EXISTS orders ( id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, - cartId INT REFERENCES cart(id), + userId INT REFERENCES users(id), + total NUMERIC NOT NULL, delivered BOOLEAN, processed BOOLEAN, shipped BOOLEAN ); `; + // region + const createRegionTable = ` + CREATE TABLE IF NOT EXISTS region ( + id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, + name VARCHAR NOT NULL + ); + `; + + // category const createCategoryTable = ` CREATE TABLE IF NOT EXISTS category ( id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, name VARCHAR NOT NULL, - description VARCHAR NOT NULL, - is_product_subset BOOLEAN NOT NULL + description VARCHAR NOT NULL ); `; + // product const createProductTable = ` CREATE TABLE IF NOT EXISTS product ( id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, name VARCHAR NOT NULL, description VARCHAR NOT NULL, - category VARCHAR NOT NULL, categoryId INT REFERENCES category(id), + regionId INT REFERENCES region(id), price NUMERIC NOT NULL ); `; + // products_carts const createProductsCarts = ` CREATE TABLE IF NOT EXISTS products_carts ( productId INT REFERENCES product(id), @@ -60,7 +73,17 @@ require('dotenv').config({ path: "../.env" }); ); `; - const allQueries = [createUserTable, createCartTable, createCategoryTable, createProductTable, createOrderTable, createProductsCarts]; + // products_orders + const createProductsOrders = ` + CREATE TABLE IF NOT EXISTS products_orders ( + id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, + quantity INT NOT NULL, + productId INT REFERENCES product(id), + orderId INT REFERENCES orders(id) + ); + `; + + const allQueries = [createUserTable, createCartTable, createCategoryTable, createRegionTable, createProductTable, createOrderTable, createProductsCarts, createProductsOrders]; let status; try { @@ -69,6 +92,7 @@ require('dotenv').config({ path: "../.env" }); for (let q of allQueries) { await client.query(q); } + await client.end(); status = "Database setup successful!"; } catch(e) { @@ -76,4 +100,6 @@ require('dotenv').config({ path: "../.env" }); } console.log(status); -})(); \ No newline at end of file +} + +main(); \ No newline at end of file diff --git a/db/readStarterData.js b/db/readStarterData.js new file mode 100644 index 0000000..81807a0 --- /dev/null +++ b/db/readStarterData.js @@ -0,0 +1,5 @@ + + +async function main() { + return; +} \ No newline at end of file