diff --git a/.github/workflows/quality-metrics.yml b/.github/workflows/quality-metrics.yml
deleted file mode 100644
index aec92c802..000000000
--- a/.github/workflows/quality-metrics.yml
+++ /dev/null
@@ -1,567 +0,0 @@
-name: Comprehensive Quality Metrics
-
-on:
- pull_request:
- branches: [ main, master, develop ]
- push:
- branches: [ main, master ]
- workflow_dispatch:
-
-concurrency:
- group: quality-${{ github.ref }}
- cancel-in-progress: true
-
-jobs:
- # ============================================================================
- # CODE QUALITY METRICS
- # ============================================================================
- code-quality:
- name: Code Quality Analysis
- runs-on: ubuntu-latest
- defaults:
- run:
- working-directory: frontends/nextjs
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
- cache-dependency-path: frontends/nextjs/package-lock.json
-
- - name: Install dependencies
- run: npm ci
-
- - name: Generate Prisma Client
- run: npm run db:generate
- env:
- DATABASE_URL: file:./dev.db
-
- # Cyclomatic Complexity
- - name: Check code complexity
- id: complexity
- run: |
- npm install -D ts-morph @swc/core
- npx tsx scripts/check-code-complexity.ts > complexity-report.json
- cat complexity-report.json
- continue-on-error: true
-
- # Function metrics
- - name: Analyze function metrics
- id: metrics
- run: npx tsx scripts/analyze-function-metrics.ts > function-metrics.json
- continue-on-error: true
-
- # Maintainability Index
- - name: Calculate maintainability index
- id: maintainability
- run: npx tsx scripts/check-maintainability.ts > maintainability-report.json
- continue-on-error: true
-
- - name: Upload quality reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: code-quality-reports
- path: |
- complexity-report.json
- function-metrics.json
- maintainability-report.json
- retention-days: 30
-
- # ============================================================================
- # TEST COVERAGE METRICS
- # ============================================================================
- coverage-metrics:
- name: Test Coverage Analysis
- runs-on: ubuntu-latest
- defaults:
- run:
- working-directory: frontends/nextjs
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
- cache-dependency-path: frontends/nextjs/package-lock.json
-
- - name: Install dependencies
- run: npm ci
-
- - name: Generate Prisma Client
- run: npm run db:generate
- env:
- DATABASE_URL: file:./dev.db
-
- - name: Run tests with coverage
- run: npm run test:unit:coverage
- env:
- DATABASE_URL: file:./dev.db
- continue-on-error: true
-
- - name: Generate coverage report
- run: npm run test:coverage:report
- continue-on-error: true
-
- - name: Check function test coverage
- id: function-coverage
- run: npm run test:check-functions > function-coverage.txt 2>&1
- continue-on-error: true
-
- - name: Extract coverage metrics
- id: coverage-extract
- run: npx tsx scripts/extract-coverage-metrics.ts
- continue-on-error: true
-
- - name: Upload coverage artifacts
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: coverage-reports
- path: |
- coverage/
- FUNCTION_TEST_COVERAGE.md
- function-coverage.txt
- coverage-metrics.json
- retention-days: 30
-
- # ============================================================================
- # SECURITY SCANNING
- # ============================================================================
- security-scan:
- name: Security Vulnerability Scan
- runs-on: ubuntu-latest
- permissions:
- contents: read
- security-events: write
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- # Npm audit for dependencies
- - name: NPM Security Audit
- id: npm-audit
- run: |
- npm audit --json > npm-audit.json || true
- npx tsx scripts/parse-npm-audit.ts
- continue-on-error: true
-
- # Check for security anti-patterns
- - name: Scan for security issues
- id: security-scan
- run: npx tsx scripts/security-scanner.ts > security-report.json
- continue-on-error: true
-
- # OWASP Dependency Check (if configured)
- - name: Run dependency check
- uses: dependency-check/Dependency-Check_Action@main
- with:
- path: '.'
- format: 'JSON'
- args: >
- --scan .
- --exclude node_modules
- --exclude build
- --exclude .git
- --exclude dbal/cpp/build
- continue-on-error: true
-
- - name: Upload security reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: security-reports
- path: |
- npm-audit.json
- security-report.json
- dependency-check-report.json
- retention-days: 30
-
- # ============================================================================
- # DOCUMENTATION QUALITY
- # ============================================================================
- documentation-quality:
- name: Documentation Coverage & Quality
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Check JSDoc coverage
- id: jsdoc
- run: npx tsx scripts/check-jsdoc-coverage.ts > jsdoc-report.json
- continue-on-error: true
-
- - name: Validate README files
- id: readme
- run: npx tsx scripts/validate-readme-quality.ts > readme-report.json
- continue-on-error: true
-
- - name: Validate markdown links
- id: markdown-links
- run: npx tsx scripts/validate-markdown-links.ts > markdown-links-report.json
- continue-on-error: true
-
- - name: Check API documentation
- id: api-docs
- run: npx tsx scripts/validate-api-docs.ts > api-docs-report.json
- continue-on-error: true
-
- - name: Verify code examples
- id: code-examples
- run: npx tsx scripts/validate-code-examples.ts > code-examples-report.json
- continue-on-error: true
-
- - name: Upload documentation reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: documentation-reports
- path: |
- jsdoc-report.json
- readme-report.json
- markdown-links-report.json
- api-docs-report.json
- code-examples-report.json
- retention-days: 30
-
- # ============================================================================
- # PERFORMANCE METRICS
- # ============================================================================
- performance-metrics:
- name: Performance Analysis
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Generate Prisma Client
- run: npm run db:generate
- env:
- DATABASE_URL: file:./dev.db
-
- - name: Build application
- run: npm run build
- env:
- DATABASE_URL: file:./dev.db
-
- - name: Analyze bundle size
- id: bundle
- run: npx tsx scripts/analyze-bundle-size.ts > bundle-analysis.json
- continue-on-error: true
-
- - name: Check performance budget
- id: perf-budget
- run: npx tsx scripts/check-performance-budget.ts > performance-budget.json
- continue-on-error: true
-
- - name: Lighthouse audit
- id: lighthouse
- run: npx tsx scripts/run-lighthouse-audit.ts > lighthouse-report.json
- continue-on-error: true
-
- - name: Analyze render performance
- id: render-perf
- run: npx tsx scripts/analyze-render-performance.ts > render-performance.json
- continue-on-error: true
-
- - name: Upload performance reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: performance-reports
- path: |
- bundle-analysis.json
- performance-budget.json
- lighthouse-report.json
- render-performance.json
- retention-days: 30
-
- # ============================================================================
- # SIZE & STRUCTURE METRICS
- # ============================================================================
- size-metrics:
- name: File Size & Architecture Analysis
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Check source file sizes
- id: file-sizes
- run: npx tsx scripts/check-file-sizes.ts > file-sizes-report.json
- continue-on-error: true
-
- - name: Analyze directory structure
- id: dir-structure
- run: npx tsx scripts/analyze-directory-structure.ts > directory-structure.json
- continue-on-error: true
-
- - name: Check for code duplication
- id: duplication
- run: npx tsx scripts/detect-code-duplication.ts > duplication-report.json
- continue-on-error: true
-
- - name: Analyze import chains
- id: imports
- run: npx tsx scripts/analyze-import-chains.ts > import-analysis.json
- continue-on-error: true
-
- - name: Upload size reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: size-reports
- path: |
- file-sizes-report.json
- directory-structure.json
- duplication-report.json
- import-analysis.json
- retention-days: 30
-
- # ============================================================================
- # DEPENDENCY ANALYSIS
- # ============================================================================
- dependency-analysis:
- name: Dependency Health Check
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Check outdated dependencies
- id: outdated
- run: npm outdated --json > outdated-deps.json || true
- continue-on-error: true
-
- - name: License compliance check
- id: licenses
- run: npx tsx scripts/check-license-compliance.ts > license-report.json
- continue-on-error: true
-
- - name: Analyze dependency tree
- id: tree
- run: npx tsx scripts/analyze-dependency-tree.ts > dependency-tree.json
- continue-on-error: true
-
- - name: Check for circular dependencies
- id: circular
- run: npx tsx scripts/detect-circular-dependencies.ts > circular-deps.json
- continue-on-error: true
-
- - name: Upload dependency reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: dependency-reports
- path: |
- outdated-deps.json
- license-report.json
- dependency-tree.json
- circular-deps.json
- retention-days: 30
-
- # ============================================================================
- # TYPE SAFETY & LINTING
- # ============================================================================
- type-and-lint-metrics:
- name: Type Safety & Code Style Metrics
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Generate Prisma Client
- run: npm run db:generate
- env:
- DATABASE_URL: file:./dev.db
-
- - name: TypeScript strict check
- id: ts-strict
- run: npx tsx scripts/check-typescript-strict.ts > ts-strict-report.json
- continue-on-error: true
-
- - name: ESLint detailed report
- id: eslint
- run: |
- npx eslint . --format json > eslint-report.json || true
- npx tsx scripts/parse-eslint-report.ts
- continue-on-error: true
-
- - name: Check for @ts-ignore usage
- id: ts-ignore
- run: npx tsx scripts/find-ts-ignores.ts > ts-ignore-report.json
- continue-on-error: true
-
- - name: Check for any types
- id: any-types
- run: npx tsx scripts/find-any-types.ts > any-types-report.json
- continue-on-error: true
-
- - name: Upload type reports
- uses: actions/upload-artifact@v4
- if: always()
- with:
- name: type-reports
- path: |
- ts-strict-report.json
- eslint-report.json
- ts-ignore-report.json
- any-types-report.json
- retention-days: 30
-
- # ============================================================================
- # QUALITY SUMMARY & REPORTING
- # ============================================================================
- quality-summary:
- name: Quality Metrics Summary
- runs-on: ubuntu-latest
- needs: [
- code-quality,
- coverage-metrics,
- security-scan,
- documentation-quality,
- performance-metrics,
- size-metrics,
- dependency-analysis,
- type-and-lint-metrics
- ]
- if: always()
- permissions:
- checks: write
- pull-requests: write
- contents: read
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
-
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm ci
-
- - name: Download all reports
- uses: actions/download-artifact@v4
- with:
- path: quality-reports/
-
- - name: Generate quality summary
- id: summary
- run: npx tsx scripts/generate-quality-summary.ts > quality-summary.md
- continue-on-error: true
-
- - name: Post summary as PR comment
- if: github.event_name == 'pull_request'
- uses: actions/github-script@v7
- with:
- script: |
- const fs = require('fs');
- const path = require('path');
-
- let summaryContent = '';
- if (fs.existsSync('quality-summary.md')) {
- summaryContent = fs.readFileSync('quality-summary.md', 'utf8');
- }
-
- const comment = `## 📊 Quality Metrics Report\n\n${summaryContent}\n\n📁 Full Reports (click to expand)
\n\nAll detailed reports are available as build artifacts.\n `;
-
- github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: comment
- });
-
- - name: Create check run with summary
- uses: actions/github-script@v7
- if: github.event_name == 'pull_request'
- with:
- script: |
- const fs = require('fs');
- const summary = fs.existsSync('quality-summary.md')
- ? fs.readFileSync('quality-summary.md', 'utf8')
- : 'Quality metrics report generated.';
-
- github.rest.checks.create({
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'Quality Metrics',
- head_sha: context.payload.pull_request.head.sha,
- status: 'completed',
- conclusion: 'success',
- summary: 'All quality metrics collected',
- text: summary
- });
diff --git a/dbal/cpp/include/dbal/client.hpp b/dbal/cpp/include/dbal/client.hpp
index 6624e5fee..06d716c53 100644
--- a/dbal/cpp/include/dbal/client.hpp
+++ b/dbal/cpp/include/dbal/client.hpp
@@ -4,7 +4,6 @@
#include
#include
#include "types.hpp"
-#include "workflow.hpp"
#include "errors.hpp"
#include "adapters/adapter.hpp"
@@ -47,12 +46,6 @@ public:
Result deleteWorkflow(const std::string& id);
Result> listWorkflows(const ListOptions& options);
- Result createWorkflow(const CreateWorkflowInput& input);
- Result getWorkflow(const std::string& id);
- Result updateWorkflow(const std::string& id, const UpdateWorkflowInput& input);
- Result deleteWorkflow(const std::string& id);
- Result> listWorkflows(const ListOptions& options);
-
void close();
private:
diff --git a/dbal/cpp/include/dbal/workflow.hpp b/dbal/cpp/include/dbal/workflow.hpp
deleted file mode 100644
index bc4858a00..000000000
--- a/dbal/cpp/include/dbal/workflow.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef DBAL_WORKFLOW_HPP
-#define DBAL_WORKFLOW_HPP
-
-#include
-#include
-#include "types.hpp"
-
-namespace dbal {
-
-struct Workflow {
- std::string id;
- std::string name;
- std::optional description;
- std::string trigger;
- Json trigger_config;
- Json steps;
- bool is_active;
- std::string created_by;
- Timestamp created_at;
- Timestamp updated_at;
-};
-
-struct CreateWorkflowInput {
- std::string name;
- std::optional description;
- std::string trigger;
- Json trigger_config;
- Json steps;
- bool is_active = true;
- std::string created_by;
-};
-
-struct UpdateWorkflowInput {
- std::optional name;
- std::optional description;
- std::optional trigger;
- std::optional trigger_config;
- std::optional steps;
- std::optional is_active;
- std::optional created_by;
-};
-
-}
-
-#endif