mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
refactor: clean up WorkspaceBuildLogs types (#4738)
* refactor: clean up types in WorkspaceBuildLogs * feat: add tests for groupLogsByStage * fixup!: formatting
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { ProvisionerJobLog } from "api/typesGenerated"
|
||||
import { groupLogsByStage } from "./WorkspaceBuildLogs"
|
||||
|
||||
describe("groupLogsByStage", () => {
|
||||
it("should group them by stage", () => {
|
||||
const input: ProvisionerJobLog[] = [
|
||||
{
|
||||
id: "1",
|
||||
created_at: "oct 13",
|
||||
log_source: "provisioner",
|
||||
log_level: "debug",
|
||||
stage: "build",
|
||||
output: "test",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
created_at: "oct 13",
|
||||
log_source: "provisioner",
|
||||
log_level: "debug",
|
||||
stage: "cleanup",
|
||||
output: "test",
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
created_at: "oct 13",
|
||||
log_source: "provisioner",
|
||||
log_level: "debug",
|
||||
stage: "cleanup",
|
||||
output: "done",
|
||||
},
|
||||
]
|
||||
|
||||
const actual = groupLogsByStage(input)
|
||||
|
||||
expect(actual["cleanup"].length).toBe(2)
|
||||
})
|
||||
})
|
||||
@@ -10,18 +10,18 @@ const Language = {
|
||||
}
|
||||
|
||||
type Stage = ProvisionerJobLog["stage"]
|
||||
type LogsGroupedByStage = Record<Stage, ProvisionerJobLog[]>
|
||||
type GroupLogsByStageFn = (logs: ProvisionerJobLog[]) => LogsGroupedByStage
|
||||
|
||||
const groupLogsByStage = (logs: ProvisionerJobLog[]) => {
|
||||
const logsByStage: Record<Stage, ProvisionerJobLog[]> = {}
|
||||
export const groupLogsByStage: GroupLogsByStageFn = (logs) => {
|
||||
const logsByStage: LogsGroupedByStage = {}
|
||||
|
||||
for (const log of logs) {
|
||||
// If there is no log in the stage record, add an empty array
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (logsByStage[log.stage] === undefined) {
|
||||
logsByStage[log.stage] = []
|
||||
if (log.stage in logsByStage) {
|
||||
logsByStage[log.stage].push(log)
|
||||
} else {
|
||||
logsByStage[log.stage] = [log]
|
||||
}
|
||||
|
||||
logsByStage[log.stage].push(log)
|
||||
}
|
||||
|
||||
return logsByStage
|
||||
|
||||
Reference in New Issue
Block a user