MCPcopy
hub / github.com/chartbrew/chartbrew / updateDashboards

Function updateDashboards

server/crons/updateDashboards.js:137–221  ·  view source on GitHub ↗
(queue)

Source from the content-addressed store, hash-verified

135}
136
137async function updateDashboards(queue) {
138 const conditions = {
139 where: {
140 updateSchedule: { [Op.ne]: "" }
141 },
142 attributes: ["id", "team_id", "lastUpdatedAt", "updateSchedule", "timezone"],
143 };
144
145 try {
146 const dashboards = await db.Project.findAll(conditions);
147 if (!dashboards || dashboards.length === 0) {
148 return;
149 }
150
151 const skippedDashboardIds = [];
152
153 const jobs = dashboards.map(async (dashboard) => {
154 const {
155 frequency,
156 dayOfWeek,
157 daysOfWeek,
158 time,
159 frequencyNumber,
160 } = dashboard.updateSchedule || {};
161 const timezone = getProjectUpdateTimezone(dashboard);
162
163 const now = DateTime.now().setZone(timezone);
164 const lastUpdated = dashboard.lastUpdatedAt
165 ? DateTime.fromJSDate(dashboard.lastUpdatedAt, { zone: timezone })
166 : null;
167
168 let shouldUpdate = false;
169
170 if (!lastUpdated) {
171 shouldUpdate = frequency !== "daily" || shouldRunOnWeekday(daysOfWeek, now);
172 } else if (frequency === "daily") {
173 const updateTime = DateTime.now()
174 .setZone(timezone)
175 .set({
176 hour: time.hour,
177 minute: time.minute,
178 second: 0,
179 millisecond: 0
180 });
181 shouldUpdate = shouldRunOnWeekday(daysOfWeek, now)
182 && now > updateTime
183 && now.diff(lastUpdated, "days").as("days") >= 1;
184 } else if (frequency === "weekly" && dayOfWeek) {
185 const weekdayNumber = getWeekdayNumber(dayOfWeek);
186
187 if (weekdayNumber) {
188 const updateTime = DateTime.now()
189 .setZone(timezone)
190 .set({
191 hour: time.hour,
192 minute: time.minute,
193 second: 0,
194 millisecond: 0,

Callers 2

setUpQueuesFunction · 0.85
runTickFunction · 0.85

Calls 6

getProjectUpdateTimezoneFunction · 0.85
shouldRunOnWeekdayFunction · 0.85
getWeekdayNumberFunction · 0.85
addDashboardToQueueFunction · 0.85
findAllMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected