409e92d6ae
Build and Push Docker Images / Build Docker Image (push) Has been cancelled
Build and Push Docker Images / Build Railway Docker Image (push) Has been cancelled
Build and Publish n8n Docker Image / test-image (push) Has been cancelled
Dependency Compatibility Check / Fresh Install Dependency Check (push) Has been cancelled
Build and Publish n8n Docker Image / build-and-push (push) Has been cancelled
Build and Publish n8n Docker Image / create-release (push) Has been cancelled
Automated Release / Detect Version Change (push) Has been cancelled
Automated Release / Generate Release Notes (push) Has been cancelled
Automated Release / Create GitHub Release (push) Has been cancelled
Automated Release / Package MCPB Bundle (push) Has been cancelled
Automated Release / Build and Verify (push) Has been cancelled
Automated Release / Publish to NPM (push) Has been cancelled
Automated Release / Build and Push Docker Images (push) Has been cancelled
Automated Release / Update Documentation (push) Has been cancelled
Automated Release / Notify Release Completion (push) Has been cancelled
Secret Scan / secretlint (push) Has been cancelled
Test Suite / test (push) Has been cancelled
Test Suite / cjs-runtime (push) Has been cancelled
Test Suite / publish-results (push) Has been cancelled
66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
/**
|
|
* Node Repository Utility for Integration Tests
|
|
*
|
|
* Provides a singleton NodeRepository instance for integration tests
|
|
* that require validation or autofix functionality.
|
|
*/
|
|
|
|
import path from 'path';
|
|
import { createDatabaseAdapter, DatabaseAdapter } from '../../../../src/database/database-adapter';
|
|
import { NodeRepository } from '../../../../src/database/node-repository';
|
|
|
|
let repositoryInstance: NodeRepository | null = null;
|
|
let dbInstance: DatabaseAdapter | null = null;
|
|
|
|
/**
|
|
* Get or create NodeRepository instance
|
|
*
|
|
* Uses the production nodes.db database (data/nodes.db).
|
|
*
|
|
* @returns Singleton NodeRepository instance
|
|
* @throws {Error} If database file cannot be found or opened
|
|
*
|
|
* @example
|
|
* const repository = await getNodeRepository();
|
|
* const nodeInfo = await repository.getNodeByType('n8n-nodes-base.webhook');
|
|
*/
|
|
export async function getNodeRepository(): Promise<NodeRepository> {
|
|
if (repositoryInstance) {
|
|
return repositoryInstance;
|
|
}
|
|
|
|
const dbPath = path.join(process.cwd(), 'data/nodes.db');
|
|
dbInstance = await createDatabaseAdapter(dbPath);
|
|
repositoryInstance = new NodeRepository(dbInstance);
|
|
|
|
return repositoryInstance;
|
|
}
|
|
|
|
/**
|
|
* Close database and reset repository instance
|
|
*
|
|
* Should be called in test cleanup (afterAll) to prevent resource leaks.
|
|
* Properly closes the database connection and resets the singleton.
|
|
*
|
|
* @example
|
|
* afterAll(async () => {
|
|
* await closeNodeRepository();
|
|
* });
|
|
*/
|
|
export async function closeNodeRepository(): Promise<void> {
|
|
if (dbInstance && typeof dbInstance.close === 'function') {
|
|
await dbInstance.close();
|
|
}
|
|
dbInstance = null;
|
|
repositoryInstance = null;
|
|
}
|
|
|
|
/**
|
|
* Reset repository instance (useful for test cleanup)
|
|
*
|
|
* @deprecated Use closeNodeRepository() instead to properly close database connections
|
|
*/
|
|
export function resetNodeRepository(): void {
|
|
repositoryInstance = null;
|
|
}
|