Skip to content

Commit c380baf

Browse files
committed
Add functionality on filtering environments by creation date
1 parent a8cb492 commit c380baf

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

lib/domain/dtos/GetAllEnvironmentsDto.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
const Joi = require('joi');
1515
const PaginationDto = require('./PaginationDto');
16+
const { FromToFilterDto } = require('./filters/FromToFilterDto');
1617

1718
/**
1819
* Separate filter DTO for get all environments, because EnvironmentsFilterDto
@@ -23,6 +24,7 @@ const FilterDto = Joi.object({
2324
currentStatus: Joi.string().trim().optional(),
2425
statusHistory: Joi.string().trim().optional(),
2526
runNumbers: Joi.string().trim().optional(),
27+
created: FromToFilterDto,
2628
});
2729

2830
const QueryDto = Joi.object({

lib/usecases/environment/GetAllEnvironmentsUseCase.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,17 @@ class GetAllEnvironmentsUseCase {
8585
currentStatus: currentStatusExpression,
8686
statusHistory,
8787
runNumbers: runNumbersExpression,
88+
created,
8889
} = filter;
8990

9091
const filterQueryBuilder = prepareQueryBuilder();
9192

93+
if (created) {
94+
const from = created.from != null ? created.from : 0;
95+
const to = created.to != null ? created.to : Date.now();
96+
filterQueryBuilder.where('createdAt').between(from, to);
97+
}
98+
9299
if (idsExpression) {
93100
const filters = idsExpression.split(',').map((id) => id.trim());
94101

@@ -167,12 +174,18 @@ class GetAllEnvironmentsUseCase {
167174
}
168175

169176
const filteredEnvironmentsIds = (await EnvironmentRepository.findAll(filterQueryBuilder)).map(({ id }) => id);
177+
// If no environments match the filter, return an empty result
178+
if (filteredEnvironmentsIds.length === 0) {
179+
return {
180+
count: 0,
181+
environments: [],
182+
};
183+
}
170184
fetchQueryBuilder.where('id').oneOf(filteredEnvironmentsIds);
171185
}
172186

173187
fetchQueryBuilder.include({ association: 'runs' });
174188
fetchQueryBuilder.include({ association: 'historyItems' });
175-
176189
const { count, rows } = await EnvironmentRepository.findAndCountAll(fetchQueryBuilder);
177190
return {
178191
count,

0 commit comments

Comments
 (0)