From 9c3ad70ab87c40aa9f71bc0b5664e71673cf0705 Mon Sep 17 00:00:00 2001 From: DukeManh Date: Fri, 22 Apr 2022 12:56:49 -0400 Subject: [PATCH] Upsert seed data, change script name --- .github/workflows/e2e-tests-ci.yml | 2 +- config/env.development | 2 +- package.json | 5 +- src/db/seed/index.js | 46 +++++++++++++------ .../docs/tools-and-technologies/prisma.md | 6 +-- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/.github/workflows/e2e-tests-ci.yml b/.github/workflows/e2e-tests-ci.yml index c8ddf1e5ed..d59fb0e8cf 100644 --- a/.github/workflows/e2e-tests-ci.yml +++ b/.github/workflows/e2e-tests-ci.yml @@ -40,5 +40,5 @@ jobs: - name: Pull/Build Docker Containers Necessary for Running E2E Tests run: docker compose --env-file ./config/env.development up -d ${{ env.DOCKER_CONTAINERS }} - name: Apply database migrations - run: pnpm migrate + run: pnpm db:migrate - run: pnpm jest:e2e diff --git a/config/env.development b/config/env.development index 32d2aea18d..840a0ce499 100644 --- a/config/env.development +++ b/config/env.development @@ -331,4 +331,4 @@ KONG_HTTPS_PORT=8912 POSTGRES_PORT=8913 ## DB connection string -DATABASE_URL="postgresql://postgres:your-super-secret-and-long-postgres-password@localhost/postgres" +DATABASE_URL=postgresql://postgres:your-super-secret-and-long-postgres-password@localhost/postgres diff --git a/package.json b/package.json index 5308e61246..aa0a99396d 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,9 @@ "clean": "pnpm turbo run clean && pnpm -r exec rm -rf node_modules", "prettier": "prettier --write \"./**/*.{md,jsx,json,html,css,js,yml,ts,tsx}\"", "prettier-check": "prettier --check \"./**/*.{md,jsx,json,html,css,js,yml,ts,tsx}\"", - "migrate": "prisma migrate dev --schema=src/db/prisma/schema.prisma && prisma generate --schema=src/db/prisma/schema.prisma", - "seed": "prisma db seed", + "db:migrate": "prisma migrate dev --schema=src/db/prisma/schema.prisma && prisma generate --schema=src/db/prisma/schema.prisma", + "db:seed": "prisma db seed", + "db:init": "run-s db:migrate db:seed", "test": "pnpm turbo run test", "jest": "jest -c jest.config.js --", "jest:e2e": "jest -c jest.config.e2e.js --forceExit --", diff --git a/src/db/seed/index.js b/src/db/seed/index.js index c789c26a06..1be7bd021b 100644 --- a/src/db/seed/index.js +++ b/src/db/seed/index.js @@ -2,24 +2,44 @@ const { PrismaClient } = require('@prisma/client'); const feeds = require('./feeds.json'); const quotes = require('./quotes.json'); -(async function seedFeeds() { +(function seedFeeds() { const prisma = new PrismaClient(); - await Promise.all( + Promise.all( feeds.map((feed) => { - return prisma.feeds.createMany({ data: feed }); + return prisma.feeds.upsert({ + where: { + id: feed.id, + }, + update: {}, + create: feed, + }); }) - ).catch((error) => { - console.error('Erorr seeding feeds'); - console.error(error); - }); + ) + .then((records) => { + console.log(`Seeded ${records.length} feeds`); + return records.length; + }) + .catch((error) => { + console.error(error); + console.error('Erorr seeding feeds\n\n'); + }); - await Promise.all( + Promise.all( quotes.map((quote) => { - return prisma.quotes.createMany({ data: quote }); + return prisma.quotes.upsert({ + where: { quote_id: quote.quote_id }, + update: {}, + create: quote, + }); + }) + ) + .then((records) => { + console.log(`Seeded ${records.length} quotes`); + return records; }) - ).catch((error) => { - console.error('Erorr seeding quotes'); - console.error(error); - }); + .catch((error) => { + console.error(error); + console.error('Erorr seeding quotes'); + }); })(); diff --git a/src/web/docusaurus/docs/tools-and-technologies/prisma.md b/src/web/docusaurus/docs/tools-and-technologies/prisma.md index ec7f9cc1b7..31cd09966a 100644 --- a/src/web/docusaurus/docs/tools-and-technologies/prisma.md +++ b/src/web/docusaurus/docs/tools-and-technologies/prisma.md @@ -23,7 +23,7 @@ Whenever we start up the DB container or after updating our schema, we should ru ## Running migration ```bash - pnpm migrate + pnpm db:migrate ``` See also [DB maintenance on staging and production](../contributing/database-maintenance.md). @@ -37,7 +37,7 @@ For a migration that has a "narrowing" nature such as dropping a table, dropping Simply edit the schema in [schema.prisma](https://github.com/Seneca-CDOT/telescope/blob/master/src/db/prisma/schema.prisma) and apply the migration. ```bash - pnpm migrate + pnpm db:migrate ``` ### Custom migration @@ -53,7 +53,7 @@ Sometimes, we want to make changes other than the modifying the schema, for exam After creating the empty migration file, you can write SQL queries inside the newly created `migration.sql`. After writing the desired statements, you can apply the migration: ```bash - pnpm migrate + pnpm db:migrate ``` ### Seeding the database