lpil / pgo

🐘 Use PostgreSQL databases with PGO
https://hexdocs.pm/gleam_pgo/
Apache License 2.0
136 stars 12 forks source link

Support for h_store #18

Open ghivert opened 6 months ago

ghivert commented 6 months ago

Postgres supports the h_store type, to manage a hash map directly in PG columns. While it's probably easier to use jsonb nowadays, it could be useful to add support for older DB.

After diving in pg_types, used internally by pgo, I figured out that pushing a native gleam Dict is enough. Right now, using the ugly dynamic trick (from |> unsafe_coerce) is working, but we could think to add a function like hstore: fn (Dict(String, a)) -> Value in the future.

I'm not sure we should add such a function to the package, but I think it's useful enough to keep this info somewhere, at least to let people interested to know there's a solution to their problem, and wait before someone really needs it before implementing a solution? To make sure we have a correct API.

lpil commented 6 months ago

I was under the impression that jsonb is superior to hstore in every way. Do you have a use case?

ghivert commented 6 months ago

I'm using jsonb personally, so no. Outside of legacy support for old versions of postgres, I see no usage. I just wanted to keep some trace that pushing a Dict in pgo is working with pg_types.

lpil commented 6 months ago

Fab, thanks. Let's hold off until we have a use case