{@thread.name}

harryet
2023-06-05

harryet:

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

zachdaniel:

settings[:reminder_day] == "Monday"

zachdaniel:

for example

harryet:

Thanks Zach šŸ™ŒšŸ¼