@@ -14,6 +14,7 @@ import { z } from "zod";
1414import { env } from "./env.server" ;
1515import { logger } from "./services/logger.server" ;
1616import { isValidDatabaseUrl } from "./utils/db" ;
17+ import { buildPrismaConnectionUrl } from "./utils/prismaConnectionUrl" ;
1718import {
1819 captureInfrastructureErrors ,
1920 infraErrorAlreadyLogged ,
@@ -395,11 +396,11 @@ export function buildWriterClient({
395396 url : string ;
396397 clientType : string ;
397398} ) : PrismaClient {
398- const databaseUrl = extendQueryParams ( url , {
399- connection_limit : env . DATABASE_CONNECTION_LIMIT . toString ( ) ,
400- pool_timeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
401- connection_timeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
402- application_name : env . SERVICE_NAME ,
399+ const databaseUrl = buildPrismaConnectionUrl ( url , {
400+ connectionLimit : env . DATABASE_CONNECTION_LIMIT . toString ( ) ,
401+ poolTimeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
402+ connectTimeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
403+ applicationName : env . SERVICE_NAME ,
403404 } ) ;
404405
405406 console . log ( `🔌 setting up prisma client to ${ redactUrlSecrets ( databaseUrl ) } ` ) ;
@@ -542,11 +543,11 @@ export function buildReplicaClient({
542543 url : string ;
543544 clientType : string ;
544545} ) : PrismaClient {
545- const replicaUrl = extendQueryParams ( url , {
546- connection_limit : env . DATABASE_CONNECTION_LIMIT . toString ( ) ,
547- pool_timeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
548- connection_timeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
549- application_name : env . SERVICE_NAME ,
546+ const replicaUrl = buildPrismaConnectionUrl ( url , {
547+ connectionLimit : env . DATABASE_CONNECTION_LIMIT . toString ( ) ,
548+ poolTimeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
549+ connectTimeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
550+ applicationName : env . SERVICE_NAME ,
550551 } ) ;
551552
552553 console . log ( `🔌 setting up read replica connection to ${ redactUrlSecrets ( replicaUrl ) } ` ) ;
@@ -672,11 +673,11 @@ function buildRunOpsWriterClient({
672673 url : string ;
673674 clientType : string ;
674675} ) : RunOpsPrismaClient {
675- const databaseUrl = extendQueryParams ( url , {
676- connection_limit : env . DATABASE_CONNECTION_LIMIT . toString ( ) ,
677- pool_timeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
678- connection_timeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
679- application_name : env . SERVICE_NAME ,
676+ const databaseUrl = buildPrismaConnectionUrl ( url , {
677+ connectionLimit : env . DATABASE_CONNECTION_LIMIT . toString ( ) ,
678+ poolTimeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
679+ connectTimeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
680+ applicationName : env . SERVICE_NAME ,
680681 } ) ;
681682
682683 console . log ( `🔌 setting up run-ops prisma client to ${ redactUrlSecrets ( databaseUrl ) } ` ) ;
@@ -723,14 +724,13 @@ function buildRunOpsReplicaClient({
723724 url : string ;
724725 clientType : string ;
725726} ) : RunOpsPrismaClient {
726- const replicaUrl = extendQueryParams ( url , {
727- // The new run-ops replica connects unpooled, so allow capping it independently of the writer.
728- connection_limit : (
727+ const replicaUrl = buildPrismaConnectionUrl ( url , {
728+ connectionLimit : (
729729 env . RUN_OPS_DATABASE_READ_REPLICA_CONNECTION_LIMIT ?? env . DATABASE_CONNECTION_LIMIT
730730 ) . toString ( ) ,
731- pool_timeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
732- connection_timeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
733- application_name : env . SERVICE_NAME ,
731+ poolTimeout : env . DATABASE_POOL_TIMEOUT . toString ( ) ,
732+ connectTimeout : env . DATABASE_CONNECTION_TIMEOUT . toString ( ) ,
733+ applicationName : env . SERVICE_NAME ,
734734 } ) ;
735735
736736 console . log ( `🔌 setting up run-ops read replica connection to ${ redactUrlSecrets ( replicaUrl ) } ` ) ;
@@ -789,19 +789,6 @@ export function sameDatabaseTarget(a: string | undefined, b: string | undefined)
789789 }
790790}
791791
792- function extendQueryParams ( hrefOrUrl : string | URL , queryParams : Record < string , string > ) {
793- const url = new URL ( hrefOrUrl ) ;
794- const query = url . searchParams ;
795-
796- for ( const [ key , val ] of Object . entries ( queryParams ) ) {
797- query . set ( key , val ) ;
798- }
799-
800- url . search = query . toString ( ) ;
801-
802- return url ;
803- }
804-
805792function redactUrlSecrets ( hrefOrUrl : string | URL ) {
806793 const url = new URL ( hrefOrUrl ) ;
807794 url . password = "" ;
0 commit comments