some additional changes to database schema
This commit is contained in:
44
db/Seed.js
44
db/Seed.js
@@ -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
5
db/readStarterData.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user