Spaces:
Build error
Build error
| /** | |
| * Dataset API Routes | |
| * | |
| * GET /v1/dataset/stats — Dataset statistics | |
| * GET /v1/dataset/export — Export full dataset as JSON (JSONL-compatible) | |
| * DELETE /v1/dataset/:id — Delete a specific entry (for GDPR-style right to delete) | |
| */ | |
| import { Router } from 'express' | |
| import { getDataset, getDatasetStats, deleteEntry } from '../lib/dataset' | |
| export const datasetRoutes = Router() | |
| datasetRoutes.get('/stats', (_req, res) => { | |
| res.json(getDatasetStats()) | |
| }) | |
| datasetRoutes.get('/export', (req, res) => { | |
| const format = req.query.format || 'json' | |
| const dataset = getDataset() | |
| if (format === 'jsonl') { | |
| // JSONL format — one JSON object per line, ideal for HF Datasets | |
| res.setHeader('Content-Type', 'application/x-ndjson') | |
| res.setHeader('Content-Disposition', 'attachment; filename="g0dm0d3-dataset.jsonl"') | |
| const lines = dataset.map(entry => JSON.stringify(entry)) | |
| res.send(lines.join('\n') + '\n') | |
| } else { | |
| // Standard JSON array | |
| res.setHeader('Content-Type', 'application/json') | |
| res.setHeader('Content-Disposition', 'attachment; filename="g0dm0d3-dataset.json"') | |
| res.json({ | |
| metadata: { | |
| name: 'G0DM0D3 Research Dataset', | |
| description: 'Opt-in collection of LLM interactions with AutoTune, Parseltongue, and ULTRAPLINIAN pipeline metadata.', | |
| license: 'AGPL-3.0', | |
| source: 'https://github.com/LYS10S/G0DM0D3', | |
| exported_at: new Date().toISOString(), | |
| total_entries: dataset.length, | |
| }, | |
| data: dataset, | |
| }) | |
| } | |
| }) | |
| datasetRoutes.delete('/:id', (req, res) => { | |
| const { id } = req.params | |
| const deleted = deleteEntry(id) | |
| if (deleted) { | |
| res.json({ deleted: true, id }) | |
| } else { | |
| res.status(404).json({ error: 'Entry not found', id }) | |
| } | |
| }) | |