-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Working with Postgres Jsonb #58
Comments
Answering my own question, it seems that the problem is in the
|
Thanks for posting your solution @rlander. I think in the future I want to move to a more idiomatically-Clojure way of doing things, using multimethods instead of the current protocols + non-Clojurey (m/defmodel Integration :integrations)
;; Integration.data should be treated as JSON
(m/defmethod m/types [Integration :data] [_ _]
:json) This would have the benefit of letting you for example define a type for all columns with the same name, e.g. ;; All `data` columns should be treated as JSON
(m/defmethod m/types [Object :data] [_ _]
:json) And ideally allowing you to put the models in a hierarchy of some sort so you could do something like (m/defmodel ModelWithJSONData :abstract? true)
(m/derive Integration ModelWithJSONData)
;; all models that derive from ModelWithJSONData should have their :data column treated as JSON
(m/defmethod m/types [ModelWithJSONData :data] [_ _]
:json) Doing this in a way that is minimally disruptive to existing projects is my biggest concern so I'm letting these ideas marinate for a while |
Thanks for the response! I agree that multi-methods would be easier to easier (and more idiomatic) to extend than the current way, though I'm not sure I like the hierarchy part. I don't see a way around releasing a breaking version though. Anyways, I'd be up to contribute if you don't mind. Should I open a new issue and close this one? |
I've had some really weird problems with PGobjects caching something when I use tools.namespace.repl to reload code. My colleagues think this is due to a bug deep in the Postgres JDBC driver 🤷♂ . As a workaround, I (require '[honeysql.core :as sql])
(defn ->jsonb [data]
(sql/call :cast (json/generate-string data) :jsonb))
(m/add-type! :jsonb
:in ->jsonb
:out #(json/parse-string % keyword)) FWIW, I use |
is it possible to search by jsonb field? |
I'm trying to integrate Toucan into a project that uses Postgres, but I can't insert into a Jsonb column. Here's the model:
And here's the error:
I've followed the docs to the letter, but it doesn't work. Thanks!
@camsaul
The text was updated successfully, but these errors were encountered: