Runtime values in Filter

I'm trying to achieve the following ecto query in filters
def inserted_today(query, user) do
query
|> where([c], c.inserted_at >= ^App.DateTime.beginning_of_day_utc(user.timezone))
end
def inserted_today(query, user) do
query
|> where([c], c.inserted_at >= ^App.DateTime.beginning_of_day_utc(user.timezone))
end
I've been trying, expression, lazy, and MFA without success
4 Replies
ZachDaniel
ZachDaniel4mo ago
how did you fail when trying lazy? What does your current code look like? Are you trying to modify a read action to have this filter?
Marco Dell'Olio
Marco Dell'OlioOP4mo ago
something similar to this
read :for_daily_digest do
filter expr(status == :active)
filter expr(organization.status in [:active, :trialing])
filter expr(user.daily_enabled == true)

filter expr(
notifications.type == :daily_dossier and
lazy(Filter, :filter, [notifications.inserted_at, user.timezone])
)
end
read :for_daily_digest do
filter expr(status == :active)
filter expr(organization.status in [:active, :trialing])
filter expr(user.daily_enabled == true)

filter expr(
notifications.type == :daily_dossier and
lazy(Filter, :filter, [notifications.inserted_at, user.timezone])
)
end
maybe I didn't understand how lazy works
ZachDaniel
ZachDaniel4mo ago
lazy({m, f, a}) oh What is Filter.filter(...)? So, there are two ways to do it
filter expr(inserted_at >= lazy({App.DateTime, :beginning_of_day_utc, [^actor(:timezone)]})
filter expr(inserted_at >= lazy({App.DateTime, :beginning_of_day_utc, [^actor(:timezone)]})
or (and this is often the simpler approach)
prepare fn query, context ->
beginning_of_day = App.DateTime.beginning_of_day_utc(context.actor.timezone)
Ash.Query.filter(query, inserted_at >= ^beginning_of_day)
end
prepare fn query, context ->
beginning_of_day = App.DateTime.beginning_of_day_utc(context.actor.timezone)
Ash.Query.filter(query, inserted_at >= ^beginning_of_day)
end
Marco Dell'Olio
Marco Dell'OlioOP4mo ago
the prepare statement is way less complicated than I expected thanks

Did you find this page helpful?