chore: include id in workflow log entries

This commit is contained in:
Ben Beckford
2026-07-13 04:25:42 -07:00
parent 792c8f2691
commit ba848dcd99
7 changed files with 23 additions and 2 deletions
+10 -1
View File
@@ -14,6 +14,7 @@ class WorkflowLogEntryDto {
/// Returns a new [WorkflowLogEntryDto] instance.
WorkflowLogEntryDto({
required this.at,
required this.id,
this.lastStep = const Optional.absent(),
required this.result,
this.triggerDataId = const Optional.absent(),
@@ -22,6 +23,9 @@ class WorkflowLogEntryDto {
/// Workflow run date/time
String at;
/// Workflow log entry ID
String id;
///
/// Please note: This property should have been non-nullable! Since the specification file
/// does not include a default value (using the "default:" property), however, the generated
@@ -44,6 +48,7 @@ class WorkflowLogEntryDto {
@override
bool operator ==(Object other) => identical(this, other) || other is WorkflowLogEntryDto &&
other.at == at &&
other.id == id &&
other.lastStep == lastStep &&
other.result == result &&
other.triggerDataId == triggerDataId;
@@ -52,16 +57,18 @@ class WorkflowLogEntryDto {
int get hashCode =>
// ignore: unnecessary_parenthesis
(at.hashCode) +
(id.hashCode) +
(lastStep == null ? 0 : lastStep!.hashCode) +
(result.hashCode) +
(triggerDataId == null ? 0 : triggerDataId!.hashCode);
@override
String toString() => 'WorkflowLogEntryDto[at=$at, lastStep=$lastStep, result=$result, triggerDataId=$triggerDataId]';
String toString() => 'WorkflowLogEntryDto[at=$at, id=$id, lastStep=$lastStep, result=$result, triggerDataId=$triggerDataId]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json[r'at'] = this.at;
json[r'id'] = this.id;
if (this.lastStep.isPresent) {
final value = this.lastStep.value;
json[r'lastStep'] = value;
@@ -84,6 +91,7 @@ class WorkflowLogEntryDto {
return WorkflowLogEntryDto(
at: mapValueOfType<String>(json, r'at')!,
id: mapValueOfType<String>(json, r'id')!,
lastStep: json.containsKey(r'lastStep') ? Optional.present(WorkflowLogEntryDtoLastStep.fromJson(json[r'lastStep'])) : const Optional.absent(),
result: WorkflowResult.fromJson(json[r'result'])!,
triggerDataId: json.containsKey(r'triggerDataId') ? Optional.present(mapValueOfType<String>(json, r'triggerDataId')) : const Optional.absent(),
@@ -135,6 +143,7 @@ class WorkflowLogEntryDto {
/// The list of required keys that must be present in a JSON.
static const requiredKeys = <String>{
'at',
'id',
'result',
};
}
+7
View File
@@ -27985,6 +27985,12 @@
"description": "Workflow run date/time",
"type": "string"
},
"id": {
"description": "Workflow log entry ID",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
},
"lastStep": {
"description": "Last step ran, if the workflow ended early",
"properties": {
@@ -28018,6 +28024,7 @@
},
"required": [
"at",
"id",
"result"
],
"type": "object"
+2
View File
@@ -2837,6 +2837,8 @@ export type WorkflowUpdateDto = {
export type WorkflowLogEntryDto = {
/** Workflow run date/time */
at: string;
/** Workflow log entry ID */
id: string;
/** Last step ran, if the workflow ended early */
lastStep?: {
/** Index of the step in the workflow */
+1
View File
@@ -85,6 +85,7 @@ const WorkflowShareResponseSchema = z
const WorkflowLogEntrySchema = z
.object({
id: z.uuidv4().describe('Workflow log entry ID'),
at: z.string().describe('Workflow run date/time'),
result: WorkflowResultSchema.describe('Workflow run result'),
triggerDataId: z.uuid().optional().describe('Workflow trigger data ID'),
@@ -115,6 +115,7 @@ export class WorkflowRepository {
return this.db
.selectFrom('workflow_log')
.select([
'workflow_log.id',
'workflow_log.createdAt',
'workflow_log.halted',
'workflow_log.error',
+1
View File
@@ -88,6 +88,7 @@ export class WorkflowService extends BaseService {
await this.requireAccess({ auth, permission: Permission.WorkflowLogs, ids: [id] });
const logs = await this.workflowRepository.getLogs(id, dto);
return logs.map((entry) => ({
id: entry.id,
at: entry.createdAt.toISOString(),
result: entry.error ? WorkflowResult.Error : entry.halted ? WorkflowResult.Halted : WorkflowResult.Completed,
triggerDataId: entry.triggerDataId ?? undefined,
+1 -1
View File
@@ -98,7 +98,7 @@
<TableHeading>{$t('result')}</TableHeading>
</TableHeader>
<TableBody class="max-h-100">
{#each entries as entry}
{#each entries as entry (entry.id)}
<TableRow>
<TableCell>
<HStack class="justify-center">