Skip to content
5 changes: 2 additions & 3 deletions lib/usecases/environment/GetAllEnvironmentsUseCase.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ const { dataSource } = require('../../database/DataSource.js');
const { statusAcronyms } = require('../../domain/enums/StatusAcronyms.js');
const { unpackNumberRange } = require('../../utilities/rangeUtils.js');
const { splitStringToStringsTrimmed } = require('../../utilities/stringUtils.js');
const { setTimeRangeQuery } = require('../../utilities/setTimeRangeQuery.js');

/**
* Subquery to select the latest history item for each environment.
Expand Down Expand Up @@ -84,9 +85,7 @@ class GetAllEnvironmentsUseCase {
} = filter;

if (created) {
const from = created.from !== undefined ? created.from : 0;
const to = created.to !== undefined ? created.to : Date.now();
queryBuilder.where('createdAt').between(from, to);
setTimeRangeQuery(created, 'createdAt', queryBuilder);
}

if (idsExpression) {
Expand Down
9 changes: 3 additions & 6 deletions lib/usecases/lhcFill/GetAllLhcFillsUseCase.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const { ApiConfig } = require('../../config/index.js');
const { RunDefinition } = require('../../domain/enums/RunDefinition.js');
const { unpackNumberRange } = require('../../utilities/rangeUtils.js');
const { splitStringToStringsTrimmed } = require('../../utilities/stringUtils.js');
const { setTimeRangeQuery } = require('../../utilities/setTimeRangeQuery.js');

/**
* GetAllLhcFillsUseCase
Expand Down Expand Up @@ -54,15 +55,11 @@ class GetAllLhcFillsUseCase {
}

if (stableBeamsStart) {
const from = stableBeamsStart.from !== undefined ? stableBeamsStart.from : 0;
const to = stableBeamsStart.to !== undefined ? stableBeamsStart.to : new Date().getTime();
queryBuilder.where('stableBeamsStart').between(from, to);
setTimeRangeQuery(stableBeamsStart, 'stableBeamsStart', queryBuilder);
}

if (stableBeamsEnd) {
const from = stableBeamsEnd.from !== undefined ? stableBeamsEnd.from : 0;
const to = stableBeamsEnd.to !== undefined ? stableBeamsEnd.to : new Date().getTime();
queryBuilder.where('stableBeamsEnd').between(from, to);
setTimeRangeQuery(stableBeamsEnd, 'stableBeamsEnd', queryBuilder);
}

if (fillNumbers) {
Expand Down
5 changes: 2 additions & 3 deletions lib/usecases/log/GetAllLogsUseCase.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const { ApiConfig } = require('../../config/index.js');
const { Op } = require('sequelize');
const { dataSource } = require('../../database/DataSource.js');
const { checkForFilterExclusion } = require('../common/checkForFilterExclusion.js');
const { setTimeRangeQuery } = require('../../utilities/setTimeRangeQuery.js');

/**
* Apply the given filter on the given query builder
Expand Down Expand Up @@ -73,9 +74,7 @@ const applyFilter = async (dataSource, queryBuilder, filter) => {
}

if (created) {
const from = created.from !== undefined ? created.from : 0;
const to = created.to !== undefined ? created.to : new Date().getTime();
queryBuilder.where('createdAt').between(from, to);
setTimeRangeQuery(created, 'createdAt', queryBuilder);
}

if (origin) {
Expand Down
13 changes: 4 additions & 9 deletions lib/usecases/run/GetAllRunsUseCase.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const { qcFlagSummaryService } = require('../../server/services/qualityControlFl
const { DetectorType } = require('../../domain/enums/DetectorTypes.js');
const { unpackNumberRange } = require('../../utilities/rangeUtils.js');
const { splitStringToStringsTrimmed } = require('../../utilities/stringUtils.js');
const { setTimeRangeQuery } = require('../../utilities/setTimeRangeQuery.js');

/**
* GetAllRunsUseCase
Expand Down Expand Up @@ -151,21 +152,15 @@ class GetAllRunsUseCase {
}

if (o2start) {
const from = o2start.from !== undefined ? o2start.from : 0;
const to = o2start.to !== undefined ? o2start.to : new Date().getTime();
filteringQueryBuilder.where('timeO2Start').between(from, to);
setTimeRangeQuery(o2start, 'timeO2Start', filteringQueryBuilder);
}

if (o2end) {
const from = o2end.from !== undefined ? o2end.from : 0;
const to = o2end.to !== undefined ? o2end.to : new Date().getTime();
filteringQueryBuilder.where('timeO2End').between(from, to);
setTimeRangeQuery(o2end, 'timeO2End', filteringQueryBuilder);
}

if (updatedAt) {
const from = updatedAt.from ?? 0;
const to = updatedAt.to ?? new Date().getTime();
filteringQueryBuilder.where('updatedAt').between(from, to);
setTimeRangeQuery(updatedAt, 'updatedAt', filteringQueryBuilder);
}

if (triggerValues) {
Expand Down
25 changes: 25 additions & 0 deletions lib/utilities/setTimeRangeQuery.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* @license
* Copyright CERN and copyright holders of ALICE O2. This software is
* distributed under the terms of the GNU General Public License v3 (GPL
* Version 3), copied verbatim in the file "COPYING".
*
* See http://alice-o2.web.cern.ch/license for full licensing information.
*
* In applying this license CERN does not waive the privileges and immunities
* granted to it by virtue of its status as an Intergovernmental Organization
* or submit itself to any jurisdiction.
*/

/**
* Function that sets a time range in a QueryBuilder.
*
* @param {object} timerange an object that defines a time range to add to the query
* @param {number} timerange.from the lower bound of the time range
* @param {number} timerange.to the upper bound of the time range
* @param {string} attribute the model attribute for which the range will be set
* @param {QueryBuilder} queryBuilder queryBuider instance in which the time range will be set.
* @returns {void}
*/
exports.setTimeRangeQuery = ({ from = 0, to = Date.now() }, attribute, queryBuilder) =>
queryBuilder.where(attribute).between(from, to);
Loading