some additional changes to database schema

This commit is contained in:
Mikayla Dobson
2022-09-22 15:33:59 -05:00
parent 4a0ef72736
commit bf15b8871d
2 changed files with 40 additions and 9 deletions

View File

@@ -1,58 +1,71 @@
const { Client } = require('pg'); const { Client } = require('pg');
require('dotenv').config({ path: "../.env" }); require('dotenv').config({ path: "../.env" });
(async () => { async function main() {
const client = new Client({ connectionString: process.env.CONNECTION }); const client = new Client({ connectionString: process.env.CONNECTION });
await client.connect().then(console.log("Connection successful.")); await client.connect().then(console.log("Connection successful."));
// user
const createUserTable = ` const createUserTable = `
CREATE TABLE IF NOT EXISTS users ( CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL,
username VARCHAR NOT NULL, email VARCHAR NOT NULL,
password VARCHAR NOT NULL, password VARCHAR NOT NULL,
firstname VARCHAR NOT NULL, firstname VARCHAR NOT NULL,
lastname VARCHAR NOT NULL lastname VARCHAR NOT NULL
); );
`; `;
// cart
const createCartTable = ` const createCartTable = `
CREATE TABLE IF NOT EXISTS cart ( CREATE TABLE IF NOT EXISTS cart (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL,
appUserId INT REFERENCES users(id), appUserId INT REFERENCES users(id),
subtotal NUMERIC
); );
`; `;
// order
const createOrderTable = ` const createOrderTable = `
CREATE TABLE IF NOT EXISTS orders ( CREATE TABLE IF NOT EXISTS orders (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, 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, delivered BOOLEAN,
processed BOOLEAN, processed BOOLEAN,
shipped 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 = ` const createCategoryTable = `
CREATE TABLE IF NOT EXISTS category ( CREATE TABLE IF NOT EXISTS category (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
description VARCHAR NOT NULL, description VARCHAR NOT NULL
is_product_subset BOOLEAN NOT NULL
); );
`; `;
// product
const createProductTable = ` const createProductTable = `
CREATE TABLE IF NOT EXISTS product ( CREATE TABLE IF NOT EXISTS product (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL, id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY NOT NULL,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
description VARCHAR NOT NULL, description VARCHAR NOT NULL,
category VARCHAR NOT NULL,
categoryId INT REFERENCES category(id), categoryId INT REFERENCES category(id),
regionId INT REFERENCES region(id),
price NUMERIC NOT NULL price NUMERIC NOT NULL
); );
`; `;
// products_carts
const createProductsCarts = ` const createProductsCarts = `
CREATE TABLE IF NOT EXISTS products_carts ( CREATE TABLE IF NOT EXISTS products_carts (
productId INT REFERENCES product(id), 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; let status;
try { try {
@@ -69,6 +92,7 @@ require('dotenv').config({ path: "../.env" });
for (let q of allQueries) { for (let q of allQueries) {
await client.query(q); await client.query(q);
} }
await client.end(); await client.end();
status = "Database setup successful!"; status = "Database setup successful!";
} catch(e) { } catch(e) {
@@ -76,4 +100,6 @@ require('dotenv').config({ path: "../.env" });
} }
console.log(status); console.log(status);
})(); }
main();

5
db/readStarterData.js Normal file
View File

@@ -0,0 +1,5 @@
async function main() {
return;
}