import { Client } from 'pg'; import dotenv from 'dotenv'; 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, email varchar NOT NULL, password 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 ); ` 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, 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, 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, description varchar, preptime varchar, datecreated varchar, datemodified 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, unit varchar, 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 allStatements = [ setRole, appusers, ingredient, collection, recipe, groceryList, recipeingredient, userscollections ] const client = new Client({ connectionString: process.env.CONSTRING }); await client.connect().then(() => console.log('connected to pg. seeding...')); try { for (let s of allStatements) { await client.query(s); } await client.end(); } catch(e: any) { await client.end(); throw new Error(e); } console.log("Database seed successful."); })();