-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathokr_preloader.ex
More file actions
77 lines (66 loc) · 2.13 KB
/
okr_preloader.ex
File metadata and controls
77 lines (66 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
defmodule OkrApp.Objectives.OkrPreloader do
alias OkrApp.Repo
import Ecto.Query
def preload(okrs, :current_objectives_key_results_full) do
key_results_preload =
from(
kr in OkrApp.Objectives.KeyResult,
where: is_nil(kr.deleted_at),
order_by: [asc: :id]
)
assessment_preload =
from(
assessment in OkrApp.Objectives.ObjectiveAssessment,
where: is_nil(assessment.deleted_at)
)
reflection_preload =
from(
reflection in OkrApp.Objectives.OkrReflection,
where: is_nil(reflection.deleted_at)
)
contributed_by_objective_links_preload =
from(
l in OkrApp.Objectives.ObjectiveLink,
where: is_nil(l.deleted_at)
)
contributed_objectives_preload =
from(
o in OkrApp.Objectives.Objective,
where: is_nil(o.deleted_at),
preload: [:user, :group]
)
objectives_preload =
from(
o in OkrApp.Objectives.Objective,
where: is_nil(o.deleted_at),
order_by: [desc: :cancelled_at, asc: :id],
preload: [
contributed_by_objective_links: ^contributed_by_objective_links_preload,
contributes_to_objective_links: ^contributed_by_objective_links_preload,
contributes_to_objectives: ^contributed_objectives_preload,
contributed_by_objectives: ^contributed_objectives_preload,
key_results: ^key_results_preload,
objective_assessment: ^assessment_preload
]
)
Repo.preload(okrs, [:group, :user, :cycle, okr_reflection: reflection_preload, objectives: objectives_preload])
end
def preload(okrs, :current_objectives_key_results_simple) do
key_results_preload =
from(
kr in OkrApp.Objectives.KeyResult,
where: is_nil(kr.deleted_at),
order_by: [asc: :id]
)
objectives_preload =
from(
o in OkrApp.Objectives.Objective,
where: is_nil(o.deleted_at),
order_by: [desc: :cancelled_at, asc: :id],
preload: [
key_results: ^key_results_preload,
]
)
Repo.preload(okrs, objectives: objectives_preload)
end
end