database-js icon indicating copy to clipboard operation
database-js copied to clipboard

Automatically handle seeing a port 3306 in a connection string

Open mattrobenolt opened this issue 1 year ago • 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:[email protected]: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

mattrobenolt avatar Oct 18 '23 22:10 mattrobenolt

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

kailash360 avatar Dec 20 '23 19:12 kailash360

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.

mattrobenolt avatar Dec 20 '23 20:12 mattrobenolt

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.

kailash360 avatar Dec 27 '23 05:12 kailash360

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.

mattrobenolt avatar Dec 27 '23 05:12 mattrobenolt