From 4738d4a61f0907c00202a5da9deaf40a6f93cc03 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Tue, 13 Aug 2024 15:33:31 +0200 Subject: [PATCH] feat: query archived projects (#7862) --- src/lib/features/project/project-store-type.ts | 1 + src/lib/features/project/project-store.ts | 6 +++++- src/test/fixtures/fake-project-store.ts | 11 +++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/lib/features/project/project-store-type.ts b/src/lib/features/project/project-store-type.ts index f58c51ff1d..243a829b78 100644 --- a/src/lib/features/project/project-store-type.ts +++ b/src/lib/features/project/project-store-type.ts @@ -47,6 +47,7 @@ export interface IProjectHealthUpdate { export interface IProjectQuery { id?: string; + archived?: boolean; } export type ProjectEnvironment = { diff --git a/src/lib/features/project/project-store.ts b/src/lib/features/project/project-store.ts index 3f33e55410..5380d98e32 100644 --- a/src/lib/features/project/project-store.ts +++ b/src/lib/features/project/project-store.ts @@ -133,7 +133,11 @@ class ProjectStore implements IProjectStore { .orderBy('projects.name', 'asc'); if (this.flagResolver.isEnabled('archiveProjects')) { - projects = projects.where(`${TABLE}.archived_at`, null); + if (query?.archived === true) { + projects = projects.whereNot(`${TABLE}.archived_at`, null); + } else { + projects = projects.where(`${TABLE}.archived_at`, null); + } } if (query) { diff --git a/src/test/fixtures/fake-project-store.ts b/src/test/fixtures/fake-project-store.ts index 160a8a69bf..d47679ccfd 100644 --- a/src/test/fixtures/fake-project-store.ts +++ b/src/test/fixtures/fake-project-store.ts @@ -16,6 +16,7 @@ import type { IProjectApplicationsSearchParams, IProjectHealthUpdate, IProjectInsert, + IProjectQuery, ProjectEnvironment, } from '../../lib/features/project/project-store-type'; @@ -48,9 +49,15 @@ export default class FakeProjectStore implements IProjectStore { this.projectEnvironment.set(id, environments); } - async getProjectsWithCounts(): Promise { + async getProjectsWithCounts( + query?: IProjectQuery, + ): Promise { return this.projects - .filter((project) => project.archivedAt === null) + .filter((project) => + query?.archived + ? project.archivedAt !== null + : project.archivedAt === null, + ) .map((project) => { return { ...project,