Hi
In the last month I spent my free time on creating a typed ORM library for Go.
The motivation was that the currently most popular ORM library for Go: GORM, lacks type safety, has poor performance and, to my opinion, has unclear API.
Don't get me wrong, GORM is great, but I think that the go community can have something more Go-ish.
So what was I thinking about?... About this: https://github.com/posener/orm
What is it? A command line that generates typed ORM code for a specific struct.
The generated code does not use any interface{}, everything is typed! From function arguments for insert operations, to arguments that are passed to a where statement, and to returned values from a query operation. No more guessing, no more run time failures.
The current implementations supports:
* Two database drivers: mysql (tested with mysql 5.6), and sqlite3
* Relatively simple API.
* Create table, simple migrations (add column, add foreign key column)
* Tables relations: one to one, one to many.
* Query: select columns, filter with where, group by, order by, joins (by primary key(s)), rows count.
* Insert: a row. returned value is typed and has the primary key(s) filled.
* Delete: according to a where statement.
* Update: only to a specific value.
Simple benchmarks are available, showing performance similar to raw SQL queries performance.
This is a big task, and to my opinion, it is an important one.
I would love to get help! and this project is on it's first stages, everything is open!
* Add support for other databases.
* Add functionalities.
* Suggest ideas.
* Suggest better design.
* Suggest better API.
* Wider auto migration options.
* Support migration scripts generation.
* Improve documentation, add examples, improve wiki.
* Add tests.
Please visit https://github.com/posener/orm, star, and contribute.
And please, your opinion about it is appreciated!
Cheers,
Eyal
Have you seen knq/xo ?