Kind: Service
Source: atloria-monorepo/apps/api/src/workflow/workflow-storage.service.ts
WorkflowStorageService is a NestJS service responsible for persisting discovered workflow metadata and retrieving it for later use. It provides a small storage abstraction for saving the current workflow set, reading stored DiscoveredWorkflow records, and clearing persisted workflows when they need to be refreshed or removed.
Methods
| Method | Signature | Returns | Description |
|---|---|---|---|
storeWorkflows | storeWorkflows(projectId: string, workflows: DiscoveredWorkflow[]) | Promise<void> | Store discovered workflows in Neo4j |
getWorkflows | getWorkflows(projectId: string) | Promise<DiscoveredWorkflow[]> | Query workflows for a project |
deleteWorkflows | deleteWorkflows(projectId: string) | Promise<void> | Delete workflows for a project |
Dependencies
Neo4jService
When something fails
WorkflowStorageServicehandles failure in 1 place: it lets it reach the caller in all 1.
Diagram
mermaidsequenceDiagram participant Caller as Workflow Consumer participant Service as WorkflowStorageService participant Storage as Persistence Layer Caller->>Service: storeWorkflows() Service->>Storage: Persist discovered workflows Storage-->>Service: Write complete Service-->>Caller: Promise<void> Caller->>Service: getWorkflows() Service->>Storage: Read stored workflows Storage-->>Service: DiscoveredWorkflow[] Service-->>Caller: DiscoveredWorkflow[] Caller->>Service: deleteWorkflows() Service->>Storage: Remove stored workflows Storage-->>Service: Delete complete Service-->>Caller: Promise<void>
Usage
tsimport { Injectable } from '@nestjs/common';
import { WorkflowStorageService } from './workflow-storage.service';
@Injectable()
export class WorkflowRefreshService {
constructor(
private readonly workflowStorageService: WorkflowStorageService,
) {}
async refreshWorkflows(): Promise<void> {
// Clear outdated workflow records before persisting a refreshed set.
await this.workflowStorageService.deleteWorkflows();
// Persist workflows discovered by the workflow subsystem.
await this.workflowStorageService.storeWorkflows();
const workflows = await this.workflowStorageService.getWorkflows();
console.log(`Loaded ${workflows.length} stored workflows.`);
}
}
AI Coding Instructions
- Inject
WorkflowStorageServicethrough NestJS constructor injection; do not instantiate it directly. - Treat
storeWorkflows()anddeleteWorkflows()as asynchronous persistence operations and alwaysawaitthem. - Use
getWorkflows()as the canonical source for persistedDiscoveredWorkflowrecords rather than duplicating storage access in consumers. - When implementing refresh flows, consider clearing stale records with
deleteWorkflows()before callingstoreWorkflows(). - Preserve the
DiscoveredWorkflow[]return contract when changing retrieval or storage integrations.
Relationships
- DEPENDS_ON →
Neo4jService
Referenced By
GraphModule(MODULE_PROVIDES)GraphModule(MODULE_EXPORTS)KgSyncController(DEPENDS_ON)SyncController(DEPENDS_ON)WorkflowModule(MODULE_PROVIDES)WorkflowModule(MODULE_EXPORTS)
Was this page helpful?