Skip to content

Commit

Permalink
feat: more filters for deploymentsByFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
shreddedbacon committed Feb 11, 2025
1 parent d593e38 commit b17d3d5
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
20 changes: 18 additions & 2 deletions services/api/src/resources/deployment/resolvers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ export const getDeploymentsByFilter: ResolverFn = async (
{ sqlClientPool, hasPermission, models, keycloakGrant, keycloakUsersGroups, adminScopes }
) => {

const { openshifts, deploymentStatus = ["NEW", "PENDING", "RUNNING", "QUEUED"] } = input;
const { openshifts, deploymentStatus = ["NEW", "PENDING", "RUNNING", "QUEUED"], month, includeDeleted } = input;

/*
use the same mechanism for viewing all projects
Expand Down Expand Up @@ -181,13 +181,29 @@ export const getDeploymentsByFilter: ResolverFn = async (
queryBuilder = queryBuilder.whereIn('environment.project', userProjectIds);
}

// collect builds for a specific year/month
if (month) {
queryBuilder = queryBuilder.andWhere(
knex.raw(`YEAR(deployment.created) = YEAR(STR_TO_DATE(?, '%Y-%m'))`, month),
)
.andWhere(
knex.raw(`MONTH(deployment.created) = MONTH(STR_TO_DATE(?, '%Y-%m'))`, month),
);
}

if(openshifts) {
queryBuilder = queryBuilder.whereIn('environment.openshift', openshifts);
}

queryBuilder = queryBuilder.whereIn('deployment.status', deploymentStatus);

queryBuilder = queryBuilder.where('environment.deleted', '=', '0000-00-00 00:00:00');
// if includeDeleted is false, exclude deleted environments in the results (default)
if (!includeDeleted) {
queryBuilder = queryBuilder.where('environment.deleted', '=', '0000-00-00 00:00:00');
}

// exclude results where a project doesn't exist
queryBuilder = queryBuilder.whereRaw('environment.project IN (SELECT id FROM project)')

const queryBuilderString = queryBuilder.toString();

Expand Down
2 changes: 1 addition & 1 deletion services/api/src/typeDefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -1350,7 +1350,7 @@ const typeDefs = gql`
deploymentByRemoteId(id: String): Deployment
deploymentByName(input: DeploymentByNameInput): Deployment
deploymentsByBulkId(bulkId: String): [Deployment]
deploymentsByFilter(openshifts: [Int], deploymentStatus: [DeploymentStatusType]): [Deployment]
deploymentsByFilter(openshifts: [Int], deploymentStatus: [DeploymentStatusType], month: Date, includeDeleted: Boolean): [Deployment]
taskByTaskName(taskName: String): Task
taskByRemoteId(id: String): Task
taskById(id: Int): Task
Expand Down

0 comments on commit b17d3d5

Please sign in to comment.