Files
recipe-manager/server/db/seed.ts
2022-11-19 17:37:07 -06:00

122 lines
3.9 KiB
TypeScript

import { Client } from 'pg';
import dotenv from 'dotenv';
import populate from "./examplevals";
import pool from ".";
dotenv.config();
(async function() {
const setRole = `
SET ROLE postgres;
DROP SCHEMA IF EXISTS recipin CASCADE;
CREATE SCHEMA IF NOT EXISTS recipin;
`
const appusers = `
CREATE TABLE IF NOT EXISTS recipin.appusers (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
firstname varchar NOT NULL,
lastname varchar NOT NULL,
handle varchar NOT NULL UNIQUE,
email varchar NOT NULL UNIQUE,
password varchar NOT NULL,
active boolean NOT NULL,
dateregistered varchar NOT NULL,
datelastactive varchar NOT NULL
);
`
const ingredient = `
CREATE TABLE IF NOT EXISTS recipin.ingredient (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar NOT NULL,
description varchar,
datecreated varchar NOT NULL,
createdbyid int REFERENCES recipin.appusers (id)
);
`
const collection = `
CREATE TABLE IF NOT EXISTS recipin.collection (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar NOT NULL,
active boolean NOT NULL,
ismaincollection boolean NOT NULL,
datecreated varchar NOT NULL,
datemodified varchar NOT NULL,
ownerid int REFERENCES recipin.appusers (id)
);
`
const groceryList = `
CREATE TABLE IF NOT EXISTS recipin.grocerylist (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar NOT NULL,
active boolean NOT NULL,
datecreated varchar NOT NULL,
datemodified varchar NOT NULL,
ownerid int REFERENCES recipin.appusers (id)
);
`
const recipe = `
CREATE TABLE IF NOT EXISTS recipin.recipe (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name varchar NOT NULL,
preptime varchar NOT NULL,
datecreated varchar NOT NULL,
datemodified varchar NOT NULL,
description varchar,
authoruserid int REFERENCES recipin.appusers (id) NOT NULL
);
`
const recipeingredient = `
CREATE TABLE IF NOT EXISTS recipin.cmp_recipeingredient (
recipeingredientid INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
quantity decimal NOT NULL,
unit varchar NOT NULL,
ingredientid int REFERENCES recipin.ingredient (id),
recipeid int REFERENCES recipin.recipe (id),
collectionid int REFERENCES recipin.collection (id)
);
`
const userscollections = `
CREATE TABLE IF NOT EXISTS recipin.cmp_userscollections (
userscollectionsid INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
collectionid int REFERENCES recipin.collection (id),
usermemberid int REFERENCES recipin.appusers (id)
);
`;
const userfriendships = `
CREATE TABLE IF NOT EXISTS recipin.cmp_userfriendships (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
datecreated varchar NOT NULL,
active boolean NOT NULL,
dateterminated varchar,
firstuserid int REFERENCES recipin.appusers (id),
seconduserid int REFERENCES recipin.appusers (id)
);
`
const allStatements = [
setRole, appusers, ingredient, collection, recipe,
groceryList, recipeingredient, userscollections, userfriendships
]
try {
for (let s of allStatements) {
await pool.query(s);
}
} catch(e: any) {
throw new Error(e);
}
console.log("Database seed successful. Attempting to populate...");
await populate();
process.exit(1);
})();