| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- type ConnectionStrings = {
- psql: string
- uri: string
- golang: string
- jdbc: string
- dotnet: string
- nodejs: string
- php: string
- python: string
- sqlalchemy: string
- }
- export const getConnectionStrings = ({
- connectionInfo,
- poolingInfo,
- metadata,
- }: {
- connectionInfo: {
- db_user: string
- db_port: number
- db_host: string
- db_name: string
- }
- poolingInfo?: {
- connectionString: string
- db_user: string
- db_port: number
- db_host: string
- db_name: string
- }
- metadata: {
- projectRef?: string
- pgVersion?: string
- }
- }): {
- direct: ConnectionStrings
- pooler: ConnectionStrings
- } => {
- const isMd5 = poolingInfo?.connectionString.includes('options=reference')
- const { projectRef } = metadata
- const password = '[YOUR-PASSWORD]'
- // Direct connection variables
- const directUser = connectionInfo.db_user
- const directPort = connectionInfo.db_port
- const directHost = connectionInfo.db_host
- const directName = connectionInfo.db_name
- // Pooler connection variables
- const poolerUser = poolingInfo?.db_user
- const poolerPort = poolingInfo?.db_port
- const poolerHost = poolingInfo?.db_host
- const poolerName = poolingInfo?.db_name
- // Direct connection strings
- const directPsqlString = isMd5
- ? `psql "postgresql://${directUser}:${password}@${directHost}:${directPort}/${directName}"`
- : `psql -h ${directHost} -p ${directPort} -d ${directName} -U ${directUser}`
- const directUriString = `postgresql://${directUser}:${password}@${directHost}:${directPort}/${directName}`
- const directGolangString = `DATABASE_URL=${directUriString}`
- const directJdbcString = `jdbc:postgresql://${directHost}:${directPort}/${directName}?user=${directUser}&password=${password}`
- // User Id=${directUser};Password=${password};Server=${directHost};Port=${directPort};Database=${directName}`
- const directDotNetString = `{
- "ConnectionStrings": {
- "DefaultConnection": "Host=${directHost};Database=${directName};Username=${directUser};Password=${password};SSL Mode=Require;Trust Server Certificate=true"
- }
- }`
- // `User Id=${poolerUser};Password=${password};Server=${poolerHost};Port=${poolerPort};Database=${poolerName}${isMd5 ? `;Options='reference=${projectRef}'` : ''}`
- const poolerDotNetString = `{
- "ConnectionStrings": {
- "DefaultConnection": "User Id=${poolerUser};Password=${password};Server=${poolerHost};Port=${poolerPort};Database=${poolerName}${isMd5 ? `;Options='reference=${projectRef}'` : ''}"
- }
- }`
- const directNodejsString = `DATABASE_URL=${directUriString}`
- // Pooler connection strings
- const poolerPsqlString = isMd5
- ? `psql "postgresql://${poolerUser}:${password}@${poolerHost}:${poolerPort}/${poolerName}?options=reference%3D${projectRef}"`
- : `psql -h ${poolerHost} -p ${poolerPort} -d ${poolerName} -U ${poolerUser}`
- const poolerUriString = poolingInfo?.connectionString ?? ''
- const nodejsPoolerUriString = `DATABASE_URL=${poolingInfo?.connectionString ?? ''}`
- const poolerGolangString = `user=${poolerUser}
- password=${password}
- host=${poolerHost}
- port=${poolerPort}
- dbname=${poolerName}${isMd5 ? `options=reference=${projectRef}` : ''}`
- const poolerJdbcString = `jdbc:postgresql://${poolerHost}:${poolerPort}/${poolerName}?user=${poolerUser}${isMd5 ? `&options=reference%3D${projectRef}` : ''}&password=${password}`
- const sqlalchemyString = `user=${directUser}
- password=${password}
- host=${directHost}
- port=${directPort}
- dbname=${directName}`
- const poolerSqlalchemyString = `user=${poolerUser}
- password=${password}
- host=${poolerHost}
- port=${poolerPort}
- dbname=${poolerName}`
- return {
- direct: {
- psql: directPsqlString,
- uri: directUriString,
- golang: directGolangString,
- jdbc: directJdbcString,
- dotnet: directDotNetString,
- nodejs: directNodejsString,
- php: directGolangString,
- python: directGolangString,
- sqlalchemy: sqlalchemyString,
- },
- pooler: {
- psql: poolerPsqlString,
- uri: poolerUriString,
- golang: poolerGolangString,
- jdbc: poolerJdbcString,
- dotnet: poolerDotNetString,
- nodejs: nodejsPoolerUriString,
- php: poolerGolangString,
- python: poolerGolangString,
- sqlalchemy: poolerSqlalchemyString,
- },
- }
- }
|