Hi Stefan.
I have been using scalaquery for almost an year now in my master
thesis and now in a software product.
First I would like to say that this is a great library, for which I
have found no bugs bothering me and it allows me to focus on my code
rather than on database storing stuff. Also, your feedback to question
here is quite hasteful.
For this I thank you and hope you keep this good work.
To a future version of this library (or in Slick for that matter), I
have a number of points I would like to discuss:
1) Database configuration/meta-information/automated management
One thing that highly annoys me is having to focus on whether a table
is created or not and only knowing this at runtime.
To the best of my knowledge scalaquery does not have information (or
meta information) of the database. Having a way to know whether a
given table is created or not (or more information like users,
privileges, table listing, etc) would be very good.
I understand that scalaquery is supposed to be database agnostic, i.e.
abstract over the concrete database implementation, which can make
this task harder since it ultimately depends on a specific DB.
However, I think we would greatly benefit from at least having meta
information from a set of DB vendors, even if for more unorthodox DBs
we had to implemented ourselves.
Now, ideally, what I really wish was not to have to think about this.
When I refer a table which was not created, the library could
automagically create it so I didn't have to do it myself. Automatic
management of the DB can be quite hard but is already done in some
places (MVC3 of ASP .Net fame) and I am quite envious of them.
If this cannot be done, at least provide the meta information so we
could do it ourselves.
2) Scala Integrated Query
I dont know if this is already planned in Slick, but SIQ posed
interesting question on avalanche querying.
Perhaps joined efforts? I'm stating this not knowing if you are
already working together.
Ideally, scalaquery (or Slick) could be to DB interface as ScalaCL
(
http://code.google.com/p/scalacl/) is to scala loops.
3) Learn from LINQ and Rails
We are already in our niche since our queries rely on scala constructs
(fors) instead of having to learn a querying language, like LINQ.
However, they have great ideas and we should learn from them.
The ones I can think of right now (related to LINQ) are Deferred
Execution, Continuous LINQ and the Entity Framework (very very cool),
etc. But there are perhaps more interesting projects that I dont know
about.
I'm not saying we should implement them all, but they pose
improvements and I think we should be on the bleeding edge with them.
Also, Migrations from Rails (
http://guides.rubyonrails.org/
migrations.html) looks like a very cool way of dealing with table and
schema changes.
This was not supposed to be a rant but more of a brainstorm of
possible ideas for the future Slick.
I will continue to use scalaquery since I think this is the way to go
for DB access in Scala.
Thanks
> Typesafe <
http://typesafe.com> - Enterprise-Grade Scala from the Experts
> Twitter: @StefanZeiger <
http://twitter.com/#%21/StefanZeiger>