active-group / sqlosure

SQL & DB access with Clojure
7 stars 0 forks source link

Extensibility/Flexibility #8

Open dfrese opened 2 years ago

dfrese commented 2 years ago

Currently, there are many SQL statements that a user might want to use, that are not expressible in Sclojure (e.g. CTEs in Postgres https://www.postgresql.org/docs/9.1/queries-with.html). Of course the library cannot support everything, esp. if it is outside of relational algebra, but when writing an application and one has already written many parts of the queries in sqlosure, then if one reaches a point where a (small) part needs something special, then nothing of the previous parts can be reused. Therefore, I think that an extension mechanism would be very helpful.

As quick scratch, a way to embed a raw sql query could be added for that:

(embed-sql sql-string columns) ;; + query args maybe

What might be equally flexible would be a way to add new Sqlosure expressions as a user, by having an api to define their translation to SQL.

neshtea commented 2 years ago

You are right. I think we should aim for a way for the user to define custom SQL expressions/queries. I do think, however, that we should reach for SQL strings if we do not absolutely need it.

This would mean considerable changes to SQLosures internal stucture, which means it is going to take a while until we get that included.