planetscale/database-js

Automatically handle seeing a port 3306 in a connection string

mattrobenolt opened this issue · 4 comments

port 3306 can never work for us, and it's common that a DATABASE_URL that you've used in another environemnt that was a traditional mysql driver looks something like: mysql://user:pass@aws.connect.psdb.cloud:3306/dbname

We already ignore the mysql:// protocol and rewrite it to https://, so we should similarly drop the 3306 if a connection is overly explicit.

Refs #142

We can use RegEx to recognize port number in the connection string. Can I take up this issue?

I don't think we need a regular expression here, we already fully parse the URL, it should have the port already I'd suspect, I haven't looked much.

I checked the part where we parse the connection string and it is transformed into an URL object (here). We can use the port property in this URL object to check if it is allowed or not. We can simply create a list of not-allowed ports in a constants file and check if the port that we got from the URL object lies there or not, based on which we can proceed with the connection or throw and error.

That's more what I'd expect for implementation. I don't think we need to even go that complex though, and I feel we only need to special case 3306 and coerce it to https/443. I don't think there's any reason to maintain anything else.