State and Workflow Patterns
Event Queue Case
An event queue can be summarized by topic while preserving typed event fields.
Event Queue Case
events.ts
type QueueEvent = {
topic: "build" | "deploy";
priority: number;
};
function topicCount(events: QueueEvent[], topic: QueueEvent["topic"]): number {
let count = 0;
for (const event of events) {
if (event.topic === topic) {
count += 1;
}
}
return count;
}
const selectedTopic: QueueEvent["topic"] = ;
const events: QueueEvent[] = [
{ topic: "build", priority: 2 },
{ topic: "deploy", priority: 1 },
{ topic: "build", priority: 3 }
];
const count: number = topicCount(events, selectedTopic);
console.log(`topic=${selectedTopic};count=${count}`);
type QueueEvent = {
topic: "build" | "deploy";
priority: number;
};
function topicCount(events: QueueEvent[], topic: QueueEvent["topic"]): number {
let count = 0;
for (const event of events) {
if (event.topic === topic) {
count += 1;
}
}
return count;
}
const selectedTopic: QueueEvent["topic"] = ;
const events: QueueEvent[] = [
{ topic: "build", priority: 2 },
{ topic: "deploy", priority: 1 },
{ topic: "build", priority: 3 }
];
const count: number = topicCount(events, selectedTopic);
console.log(`topic=${selectedTopic};count=${count}`);
queue summary
Counting selected events shows how a typed queue can feed a dashboard or worker.