At the root folder, create a scripts/seed.js file
code ./scripts/seed.js
/* eslint-disable no-console */
const fs = require('fs');
const { Pool } = require('pg');
const pool = new Pool({
connectionString: 'postgresql://postgres@postgres:5432/postgres',
});
if (process.env.NODE_ENV !== 'production') {
const seedQuery = fs.readFileSync('/workspace/scripts/seed.sql', { encoding: 'utf8' });
pool.query(seedQuery, (err, _res) => {
err ? console.error('Error:', err.message) : console.log('Seeding Completed!');
pool.end();
});
}
After, at same folder, create a scripts/seed.sql file to hold all the DB structures & inserts needed
code ./scripts/seed.sql
CREATE SCHEMA IF NOT EXISTS pd;
CREATE SCHEMA IF NOT EXISTS views;
DO $$BEGIN IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'dates_quarter') THEN CREATE TYPE dates_quarter AS ENUM('Q1','Q2','Q3','Q4'); END IF; END$$;
DO $$BEGIN IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'dates_holiday') THEN CREATE TYPE dates_holiday AS ENUM('Holiday','No Holiday'); END IF; END$$;
CREATE TABLE IF NOT EXISTS pd.mytable(
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL UNIQUE,
type VARCHAR(20) NOT NULL,
description VARCHAR(100),
started DATE,
ended DATE
);
at package.json add the following line in scripts attribute:
"seed": "node scripts/seed.js",