While the focus was to make
tql work on the stable version of the compiler, I also added some new features.
The most notable new feature is the support for SQLite:
tql supports SQLite as well as PostgreSQL.
The support for SQLite is almost as complete as the one for PostgreSQL:
the only missing function is not implemented because the backend (SQLite) does not support it.
I might implement it some day since I have a few ideas about how to workaround this issue.
Now, it is possible to specify the connection when using the
That was possible before to switch to procedural macros and was removed by lack of time, but now it is back.
Remember that by default,
sql!() will use the identifier
connection and try to execute the SQL query on the connection it represents.
Now, it’s possible to specify it as a first argument:
sql!(cx, TodoItem.get(id).update(done = true))
cx is the connection.
I also improved the error handling of the generated code:
now instead of using
expect(), all the errors will get to the caller of the
I also fixed a design issue, which took me a while to fix.
There was a bug with
Option values and now it is fixed.
This resulted in a change a syntax.
While it was possible before to call
sql!(TableInsertExpr.insert(optional_field = 12));
now, it is required:
sql!(TableInsertExpr.insert(optional_field = Some(12)));
While I could have kept the same syntax, it would have made the message in case of error less understandable. I might be able to support the former syntax in the future.
tql was relying on a bug in the Rust compiler to make it work on stable and this bug is fixed in beta, I had to stop using this in order to have
tql working on the next stable version of the compiler.
That was quite difficult to workaround and resulted in yet another change:
Now, when using
tql on stable, you are required to specify the connection in the
Now it’s time for you to test
tql, report bugs, suggest enhancements and start contributing!
The library is still in very early stage, but I already use it in one of my projects, titanium.
Please comment on Reddit.