(
defenterprise-schema
cache-strategy
:-
[
:maybe
::cache-strategy
]
"Returns the granular cache strategy for a card."
:feature
:cache-granular-controls
[
card
dashboard-id
]
(
let
[
qs
(
for
[
[
i
model
model-id
]
[
[
1
"question"
(
:id
card
)
]
[
2
"dashboard"
dashboard-id
]
[
3
"database"
(
:database_id
card
)
]
[
4
"root"
0
]
]
:when
model-id
]
{
:from
[
:cache_config
]
:select
[
:id
[
[
:inline
i
]
:ordering
]
]
:where
[
:and
[
:=
:model
[
:inline
model
]
]
[
:=
:model_id
model-id
]
]
}
)
q
{
:from
[
[
{
:union-all
qs
}
:unused_alias
]
]
:select
[
:id
]
:order-by
:ordering
:limit
[
:inline
1
]
}
item
(
t2/select-one
:model/CacheConfig
:id
q
)
]
(
cache-config/card-strategy
item
card
)
)
)