Ash FrameworkAF
Ash Framework3y ago
3 replies
harry

Querying JSON fields

I have this query,
SELECT *
FROM users
WHERE settings->>'reminder_day' = 'Monday' -- Replace 'Monday' with your specific day
  AND (settings->>'reminder_enabled')::boolean = true
  AND (settings->>'reminder_time')::time BETWEEN '09:00'::time AND ('09:00'::time + INTERVAL '1 hour');

and I'd like to convert it to an Ash query - any suggestions?
# User.ex
    attribute :settings, Proj.Resources.Accounts.UserSettings do
      allow_nil?(false)
       # TODO, can this be improved?!
      default(fn -> %Proj.Resources.Accounts.UserSettings{} end)
    end

# UserSettings.ex
defmodule Proj.Resources.Accounts.UserSettings do
  use Ash.Resource,
    data_layer: :embedded

  attributes do
    attribute :time_zone, :string do
      allow_nil?(false)
      default("Europe/London")
    end

    attribute :reminder_enabled, :boolean do
      allow_nil?(false)
      default(true)
    end

    attribute :reminder_time, :string do
      allow_nil?(false)
      default("09:00")
    end

    attribute :reminder_day, :string do
      allow_nil?(false)
      default("Monday")
    end
  end
end
Was this page helpful?