/
ncit
/
c4panelmodel
Обзор
Документация
Войти
/
ncit
/
c4panelmodel
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/lib/server/services/csvExport.ts
64 строки
2 KB
ncit
feat: implement full IcePanel feature clone (Phases 1-8)
09 июн 2026, 11:13
09 июн 2026, 11:13
858c15a
Код
Авторство
О чём код?
import { db } from '$lib/server/db'; /** * Export model objects as CSV. */ export async function exportObjectsCsv(projectId: string): Promise<string> { const objects = await db.modelObject.findMany({ where: { projectId }, include: { technologies: { include: { technology: { select: { name: true } } } }, tags: { include: { tag: { select: { name: true } } } } }, orderBy: { name: 'asc' } }); const headers = ['id', 'name', 'type', 'status', 'isExternal', 'description', 'parentId', 'technologies', 'tags', 'createdAt']; const rows = objects.map((o) => [ o.id, csvEscape(o.name), o.type, o.status, o.isExternal ? 'true' : 'false', csvEscape(o.displayDescription ?? ''), o.parentId ?? '', csvEscape(o.technologies.map((t) => t.technology.name).join('; ')), csvEscape(o.tags.map((t) => t.tag.name).join('; ')), o.createdAt.toISOString() ]); return [headers.join(','), ...rows.map((r) => r.join(','))].join('\n'); } export async function exportConnectionsCsv(projectId: string): Promise<string> { const connections = await db.connection.findMany({ where: { projectId }, include: { source: { select: { name: true } }, target: { select: { name: true } } }, orderBy: { createdAt: 'asc' } }); const headers = ['id', 'source', 'target', 'label', 'technology', 'direction', 'lineStyle', 'createdAt']; const rows = connections.map((c) => [ c.id, csvEscape(c.source.name), csvEscape(c.target.name), csvEscape(c.label ?? ''), csvEscape(c.technology ?? ''), c.direction, c.lineStyle, c.createdAt.toISOString() ]); return [headers.join(','), ...rows.map((r) => r.join(','))].join('\n'); } function csvEscape(value: string): string { if (value.includes(',') || value.includes('"') || value.includes('\n')) { return `"${value.replace(/"/g, '""')}"`; } return value; }