Some checks failed
ci/woodpecker/push/integration Pipeline failed
ci/woodpecker/push/main Pipeline failed
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
- Academy, Whistleblower, Incidents frontend pages with API proxies and types - Vendor compliance API proxy route - Go backend handlers and models for all new SDK modules - Investor pitch-deck app with interactive slides - Blog section with DSGVO, AI Act, NIS2, glossary articles - MkDocs documentation site - CI/CD pipelines (Woodpecker, GitHub Actions), security scanning config - Planning and implementation documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { NextResponse } from 'next/server'
|
|
import pool from '@/lib/db'
|
|
|
|
export const dynamic = 'force-dynamic'
|
|
|
|
export async function GET() {
|
|
try {
|
|
const client = await pool.connect()
|
|
|
|
try {
|
|
const [
|
|
companyRes,
|
|
teamRes,
|
|
financialsRes,
|
|
marketRes,
|
|
competitorsRes,
|
|
featuresRes,
|
|
milestonesRes,
|
|
metricsRes,
|
|
fundingRes,
|
|
productsRes,
|
|
] = await Promise.all([
|
|
client.query('SELECT * FROM pitch_company LIMIT 1'),
|
|
client.query('SELECT * FROM pitch_team ORDER BY sort_order'),
|
|
client.query('SELECT * FROM pitch_financials ORDER BY year'),
|
|
client.query('SELECT * FROM pitch_market ORDER BY id'),
|
|
client.query('SELECT * FROM pitch_competitors ORDER BY id'),
|
|
client.query('SELECT * FROM pitch_features ORDER BY sort_order'),
|
|
client.query('SELECT * FROM pitch_milestones ORDER BY sort_order'),
|
|
client.query('SELECT * FROM pitch_metrics ORDER BY id'),
|
|
client.query('SELECT * FROM pitch_funding LIMIT 1'),
|
|
client.query('SELECT * FROM pitch_products ORDER BY sort_order'),
|
|
])
|
|
|
|
return NextResponse.json({
|
|
company: companyRes.rows[0] || null,
|
|
team: teamRes.rows,
|
|
financials: financialsRes.rows,
|
|
market: marketRes.rows,
|
|
competitors: competitorsRes.rows,
|
|
features: featuresRes.rows,
|
|
milestones: milestonesRes.rows,
|
|
metrics: metricsRes.rows,
|
|
funding: fundingRes.rows[0] || null,
|
|
products: productsRes.rows,
|
|
})
|
|
} finally {
|
|
client.release()
|
|
}
|
|
} catch (error) {
|
|
console.error('Database query error:', error)
|
|
return NextResponse.json(
|
|
{ error: 'Failed to load pitch data' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|