Merge pull request #35 from aaronpo97/database-updates

bug fix - Fixed error in cleanDatabase that would cause drift
This commit is contained in:
Aaron Po
2023-05-07 23:40:33 -04:00
committed by GitHub
3 changed files with 16 additions and 5 deletions

View File

@@ -26,6 +26,7 @@ const envSchema = z.object({
POSTGRES_PASSWORD: z.string(), POSTGRES_PASSWORD: z.string(),
POSTGRES_DATABASE: z.string(), POSTGRES_DATABASE: z.string(),
POSTGRES_HOST: z.string(), POSTGRES_HOST: z.string(),
SHADOW_DATABASE_URL: z.string().url(),
NODE_ENV: z.enum(['development', 'production', 'test']), NODE_ENV: z.enum(['development', 'production', 'test']),
SPARKPOST_API_KEY: z.string(), SPARKPOST_API_KEY: z.string(),
@@ -187,6 +188,14 @@ export const POSTGRES_DATABASE = parsed.data.POSTGRES_DATABASE;
*/ */
export const POSTGRES_HOST = parsed.data.POSTGRES_HOST; export const POSTGRES_HOST = parsed.data.POSTGRES_HOST;
/**
* The URL of another PostgreSQL database to shadow.
*
* @example
* 'postgresql://user:password@host:5432/database';
*/
export const SHADOW_DATABASE_URL = parsed.data.SHADOW_DATABASE_URL;
/** /**
* Node environment. * Node environment.
* *

View File

@@ -6,9 +6,10 @@ generator client {
} }
datasource db { datasource db {
provider = "postgresql" provider = "postgresql"
url = env("POSTGRES_PRISMA_URL") // uses connection pooling url = env("POSTGRES_PRISMA_URL") // uses connection pooling
directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
} }
model User { model User {

View File

@@ -13,8 +13,9 @@ const cleanDatabase = async () => {
DO $$ DO $$
DECLARE DECLARE
statements CURSOR FOR statements CURSOR FOR
SELECT tablename FROM pg_tables SELECT tablename FROM pg_tables
WHERE schemaname = 'public'; WHERE schemaname = 'public'
AND tablename != '_prisma_migrations';
BEGIN BEGIN
FOR statement IN statements LOOP FOR statement IN statements LOOP
EXECUTE 'TRUNCATE TABLE ' || quote_ident(statement.tablename) || ' CASCADE;'; EXECUTE 'TRUNCATE TABLE ' || quote_ident(statement.tablename) || ' CASCADE;';