-
-
Notifications
You must be signed in to change notification settings - Fork 144
Description
You're using Postgres connection strings, which are more than sufficient for the general use-case, however configuring Slonik to play nice with more special sql offerings is a challenge.
For example connecting to an instance in Google Compute Platform requires this string
socket://username:passwort@/cloudsql/projectId:location:instance-name?db=databse-name
And it gets really complex because https://github.com/iceddev/pg-connection-string does not implement the full specification of https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
I also haven't found a way to pass TLS options for a socket configuration at all.
My suggestion is to just allow passing of an object that would be used directly by pg.Pool
as opposed to passing it through https://github.com/iceddev/pg-connection-string first. I could write a PR but I work mostly with Typescript so I hesitate a bit how to implement it correctly in flow.
I know you are planning on reimplementing pg.Pool yourself but it would seem prudent to keep the same config parameters. That would allow for greater backwards compatibility. I presume you would be keeping Postgres uri syntax as well.
The typescript types are a bit misleading maybe, because they state
export type DatabaseConfigurationType =
| string
| {
database?: string;
host?: string;
idleTimeoutMillis?: number;
max?: number;
password?: string;
port?: number;
user?: string;
};
but if you pass an object to createPool, you get an error, even leaving aside the fact that there is no TLS config in the types as well.
Slonik Version
19.2.0