core: type operation timestamps

This commit is contained in:
a.tolmachev
2026-04-19 07:27:12 +00:00
parent 8d1f5284ba
commit 179165838a
15 changed files with 229 additions and 212 deletions
+25 -19
View File
@@ -1726,9 +1726,9 @@ impl AdminService {
status: summary.status,
current_draft_version: summary.current_draft_version,
latest_published_version: summary.latest_published_version,
created_at: summary.created_at,
updated_at: summary.updated_at,
published_at: summary.published_at,
created_at: format_timestamp(summary.created_at),
updated_at: format_timestamp(summary.updated_at),
published_at: summary.published_at.map(format_timestamp),
draft_version_ref: VersionRef {
version: summary.current_draft_version,
status: summary.status,
@@ -1779,7 +1779,7 @@ impl AdminService {
)));
}
let now = now_string()?;
let now = OffsetDateTime::now_utc();
let operation_id = OperationId::new(new_prefixed_id("op"));
let snapshot = RegistryOperation {
id: operation_id.clone(),
@@ -1802,7 +1802,7 @@ impl AdminService {
format_version: "1".to_owned(),
export_mode: ExportMode::Portable,
}),
created_at: now.clone(),
created_at: now,
updated_at: now,
published_at: None,
};
@@ -1817,7 +1817,7 @@ impl AdminService {
workspace_id: workspace_id.as_str().to_owned(),
version: 1,
status: OperationStatus::Draft,
updated_at: snapshot.updated_at,
updated_at: format_timestamp(snapshot.updated_at),
})
}
@@ -1830,8 +1830,14 @@ impl AdminService {
) -> Result<CreatedOperationResponse, ApiError> {
self.validate_operation_payload(&payload.operation)?;
let summary = self.get_operation(workspace_id, operation_id).await?;
let now = now_string()?;
let summary = self
.registry
.get_operation_summary(workspace_id, operation_id)
.await?
.ok_or_else(|| {
ApiError::not_found(format!("operation {} was not found", operation_id.as_str()))
})?;
let now = OffsetDateTime::now_utc();
let version = summary.current_draft_version + 1;
let snapshot = RegistryOperation {
id: operation_id.clone(),
@@ -1874,7 +1880,7 @@ impl AdminService {
workspace_id: workspace_id.as_str().to_owned(),
version,
status: OperationStatus::Draft,
updated_at: snapshot.updated_at,
updated_at: format_timestamp(snapshot.updated_at),
})
}
@@ -1895,7 +1901,7 @@ impl AdminService {
)
.await?;
let updated_at = now_string()?;
let updated_at = OffsetDateTime::now_utc();
let snapshot = RegistryOperation {
id: operation_id.clone(),
name: existing.snapshot.name,
@@ -1915,7 +1921,7 @@ impl AdminService {
generated_draft: existing.snapshot.generated_draft,
config_export: existing.snapshot.config_export,
created_at: existing.snapshot.created_at,
updated_at: updated_at.clone(),
updated_at,
published_at: existing.snapshot.published_at,
};
@@ -1929,7 +1935,7 @@ impl AdminService {
workspace_id: workspace_id.as_str().to_owned(),
version: snapshot.version,
status: snapshot.status,
updated_at,
updated_at: format_timestamp(updated_at),
})
}
@@ -1940,7 +1946,7 @@ impl AdminService {
operation_id: &OperationId,
version: u32,
) -> Result<PublishResponse, ApiError> {
let published_at = now_string()?;
let published_at = OffsetDateTime::now_utc();
self.registry
.publish_operation(PublishRequest {
workspace_id,
@@ -1956,7 +1962,7 @@ impl AdminService {
operation_id: operation_id.as_str().to_owned(),
workspace_id: workspace_id.as_str().to_owned(),
published_version: version,
published_at,
published_at: format_timestamp(published_at),
})
}
@@ -1967,7 +1973,7 @@ impl AdminService {
operation_id: &OperationId,
) -> Result<OperationMutationResult, ApiError> {
let summary = self.get_operation(workspace_id, operation_id).await?;
let updated_at = now_string()?;
let updated_at = OffsetDateTime::now_utc();
self.registry
.archive_operation(workspace_id, operation_id, &updated_at)
.await?;
@@ -1977,7 +1983,7 @@ impl AdminService {
workspace_id: workspace_id.as_str().to_owned(),
version: summary.current_draft_version,
status: OperationStatus::Archived,
updated_at,
updated_at: format_timestamp(updated_at),
})
}
@@ -4978,9 +4984,9 @@ fn enrich_operation_summary(
status: summary.status,
current_draft_version: summary.current_draft_version,
latest_published_version: summary.latest_published_version,
created_at: summary.created_at,
updated_at: summary.updated_at,
published_at: summary.published_at,
created_at: format_timestamp(summary.created_at),
updated_at: format_timestamp(summary.updated_at),
published_at: summary.published_at.map(format_timestamp),
usage_summary,
agent_refs,
}