db seed, defined a pg schema to allow app db access
This commit is contained in:
88
server/db/seed.ts
Normal file
88
server/db/seed.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
import { Client } from 'pg';
|
||||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
|
||||
(async function() {
|
||||
const setRole = `
|
||||
SET ROLE postgres;
|
||||
CREATE SCHEMA IF NOT EXISTS recipin;
|
||||
`
|
||||
|
||||
const appusers = `
|
||||
CREATE TABLE IF NOT EXISTS recipin.app_users (
|
||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
first_name varchar NOT NULL,
|
||||
last_name 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,
|
||||
owner_id int REFERENCES recipin.app_users (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,
|
||||
date_created varchar,
|
||||
date_modified varchar,
|
||||
author_user_id int REFERENCES recipin.app_users (id) NOT NULL
|
||||
);
|
||||
`
|
||||
|
||||
const recipeingredient = `
|
||||
CREATE TABLE IF NOT EXISTS recipin.cmp_recipe_ingredient (
|
||||
recipe_ingredient_id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
quantity decimal,
|
||||
unit varchar,
|
||||
ingredient_id int REFERENCES recipin.ingredient (id),
|
||||
recipe_id int REFERENCES recipin.recipe (id),
|
||||
collection_id int REFERENCES recipin.collection (id)
|
||||
);
|
||||
`
|
||||
|
||||
const userscollections = `
|
||||
CREATE TABLE IF NOT EXISTS recipin.cmp_users_collections (
|
||||
users_collections_id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
collection_id int REFERENCES recipin.collection (id),
|
||||
owner_id int REFERENCES recipin.collection (owner_id),
|
||||
user_member_id int REFERENCES recipin.app_users (id)
|
||||
);
|
||||
`;
|
||||
|
||||
const allStatements = [
|
||||
setRole, appusers, ingredient, collection, recipe, recipeingredient, userscollections
|
||||
]
|
||||
|
||||
const client = new Client({ connectionString: process.env.CONSTRING });
|
||||
await client.connect().then(() => console.log('connected to pg at ' + process.env.CONSTRING));
|
||||
|
||||
try {
|
||||
for (let s of allStatements) {
|
||||
await client.query(s);
|
||||
}
|
||||
|
||||
await client.end();
|
||||
} catch(e: any) {
|
||||
throw new Error(e);
|
||||
}
|
||||
|
||||
console.log("Database seed successful.");
|
||||
})();
|
||||
Reference in New Issue
Block a user