volatiletech / sqlboiler

Generate a Go ORM tailored to your database schema.
BSD 3-Clause "New" or "Revised" License
6.74k stars 545 forks source link

Mysql/MariaDB driver #33

Closed jordic closed 8 years ago

jordic commented 8 years ago

What is needed to create the adapter?

nullbio commented 8 years ago

Hi @jordic. A MySQL/MariaDB specific implementation of this interface is the starting point: https://github.com/vattle/sqlboiler/blob/master/bdb/interface.go#L8

The PSQL driver implementation is here for reference: https://github.com/vattle/sqlboiler/blob/master/bdb/drivers/postgres.go

For the compatibility tests, a main_test/mysql_main.tpl would be required as well. The postgres version is here: https://github.com/vattle/sqlboiler/blob/master/templates_test/main_test/postgres_main.tpl -- this code basically creates a test database, imports your schema into it, disables triggers (so there are no foreign key constraint complaints), runs the tests, then drops the test database. There may be a simpler way to disable foreign key constraints in MySQL, but in PSQL this was the best solution short of stripping them all from the schema dump using parsing.

Past this, there would be small changes required to the query builder (i.e. some conditionals to tell it not to convert ? to $1), and maybe some other small modifications here and there. Nothing major though, I do not imagine.

If you or someone else would like to work on this we're happy to give guidance wherever needed, but the interface implementation would be the best place to start (and the most difficult component -- the rest should be relatively straight forward).

nullbio commented 8 years ago

@arden @jordic we've decided to start the implementation of MySQL support. We might even get to SQLite as well. If anyone has already started this and made any progress could you please let us know so we can merge?

As for other databases, I doubt we'll get to those any time soon, so anything else will remain up for grabs.

nullbio commented 8 years ago

Hi @jordic -- we've released V2 which includes MySQL support. See here for release notes: https://github.com/vattle/sqlboiler/releases/tag/v2.0.0

Thanks.

jordic commented 8 years ago

Hey! Thats cool! I will give it a try as soon as I have time!

Great job, and great tool!