From 08270beb7c9de4de2cd2a045cbf570a13b36eed5 Mon Sep 17 00:00:00 2001 From: reubensammut Date: Wed, 7 Sep 2022 14:06:50 +0200 Subject: [PATCH 1/2] Added adr list by tag in cli --- packages/cli/src/cli.ts | 1 + packages/cli/src/commands/ListCommand.ts | 4 ++++ .../src/adr/application/queries/SearchAdrsQuery.ts | 1 + .../query-handlers/SearchAdrsQueryHandler.ts | 10 ++++++++++ packages/core/src/infrastructure/api/Log4brains.ts | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 9b7269f6..ba00fbd1 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -112,6 +112,7 @@ export function createCli({ appConsole }: Deps): commander.Command { "Filter on the given statuses, comma-separated" ) // TODO: list available statuses .option("-r, --raw", "Use a raw format instead of a table", false) + .option("-t, --tags ", "Filter on the given tags, comma-separated") .description("List ADRs") .action( (opts: ListCommandOpts): Promise => { diff --git a/packages/cli/src/commands/ListCommand.ts b/packages/cli/src/commands/ListCommand.ts index 7c7a62cf..66483254 100644 --- a/packages/cli/src/commands/ListCommand.ts +++ b/packages/cli/src/commands/ListCommand.ts @@ -8,6 +8,7 @@ type Deps = { export type ListCommandOpts = { statuses: string; + tags: string; raw: boolean; }; @@ -26,6 +27,9 @@ export class ListCommand { if (opts.statuses) { filters.statuses = opts.statuses.split(",") as AdrDtoStatus[]; } + if (opts.tags) { + filters.tags = opts.tags.split(","); + } const adrs = await this.l4bInstance.searchAdrs(filters); const table = this.console.createTable({ head: ["Slug", "Status", "Package", "Title"] diff --git a/packages/core/src/adr/application/queries/SearchAdrsQuery.ts b/packages/core/src/adr/application/queries/SearchAdrsQuery.ts index 272a2ae0..2f5f79c1 100644 --- a/packages/core/src/adr/application/queries/SearchAdrsQuery.ts +++ b/packages/core/src/adr/application/queries/SearchAdrsQuery.ts @@ -3,6 +3,7 @@ import { Query } from "@src/application"; export type SearchAdrsFilters = { statuses?: AdrStatus[]; + tags?: string[]; }; export class SearchAdrsQuery extends Query { diff --git a/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts b/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts index 41ab60c0..f920f33e 100644 --- a/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts +++ b/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts @@ -25,6 +25,16 @@ export class SearchAdrsQueryHandler implements QueryHandler { ) { return false; } + else if ( query.filters.tags ) + { + for (var i in query.filters.tags){ + var tag = query.filters.tags[i]; + if (adr.tags.includes(tag)) { + return true; + } + } + return false; + } return true; }); } diff --git a/packages/core/src/infrastructure/api/Log4brains.ts b/packages/core/src/infrastructure/api/Log4brains.ts index 295c96d7..5d86b8f1 100644 --- a/packages/core/src/infrastructure/api/Log4brains.ts +++ b/packages/core/src/infrastructure/api/Log4brains.ts @@ -23,6 +23,7 @@ import { FileWatcher } from "../file-watcher"; export type SearchAdrsFilters = { statuses?: AdrDtoStatus[]; + tags?: string[]; }; /** @@ -71,6 +72,9 @@ export class Log4brains { AdrStatus.createFromName(status) ); } + if (filters?.tags) { + appFilters.tags = filters.tags; + } const adrs = await this.queryBus.dispatch( new SearchAdrsQuery(appFilters) ); From 3fcc84c1ac290c8f4caa4f11c61f314d2b532c8a Mon Sep 17 00:00:00 2001 From: reubensammut Date: Wed, 7 Sep 2022 14:53:42 +0200 Subject: [PATCH 2/2] feat: changes after lint and format fix as per contributes requirements --- .../query-handlers/SearchAdrsQueryHandler.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts b/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts index f920f33e..7e89bea3 100644 --- a/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts +++ b/packages/core/src/adr/application/query-handlers/SearchAdrsQueryHandler.ts @@ -25,15 +25,10 @@ export class SearchAdrsQueryHandler implements QueryHandler { ) { return false; } - else if ( query.filters.tags ) - { - for (var i in query.filters.tags){ - var tag = query.filters.tags[i]; - if (adr.tags.includes(tag)) { - return true; - } - } - return false; + if (query.filters.tags) { + return query.filters.tags.some((tag) => { + return adr.tags.includes(tag); + }); } return true; });