Files
twenty/packages/twenty-website/src/app/api/releases/route.tsx
T
Félix Malfait 033bedde0a Upgrade NX (#13758)
Upgrade from NX18 to NX21
2025-08-08 10:38:12 +02:00

52 lines
1.6 KiB
TypeScript

import { desc } from 'drizzle-orm';
import { getGithubReleaseDateFromReleaseNote } from '@/app/(public)/releases/utils/get-github-release-date-from-release-note';
import { getReleases } from '@/app/(public)/releases/utils/get-releases';
import { getVisibleReleases } from '@/app/(public)/releases/utils/get-visible-releases';
import { findAll } from '@/database/database';
import { type GithubReleases, githubReleasesModel } from '@/database/model';
export const dynamic = 'force-dynamic';
export async function GET() {
try {
const githubReleases = (await findAll(
githubReleasesModel,
desc(githubReleasesModel.publishedAt),
)) as GithubReleases[];
const latestGithubRelease = githubReleases[0];
const releaseNotes = await getReleases();
const visibleReleasesNotes = getVisibleReleases(
releaseNotes,
latestGithubRelease.tagName,
);
const formattedReleasesNotes = visibleReleasesNotes.map((releaseNote) => {
const updatedContent = releaseNote.content.replace(
/!\[(.*?)\]\((\/images\/.*?)\)/g,
(match, altText, imagePath) => {
return `![${altText}](https://twenty.com${imagePath})`;
},
);
return {
...releaseNote,
content: updatedContent,
publishedAt: getGithubReleaseDateFromReleaseNote(
githubReleases,
releaseNote.release,
releaseNote.date,
),
};
});
return Response.json(formattedReleasesNotes);
} catch (error: any) {
return new Response(`Github releases error: ${error?.message}`, {
status: 500,
});
}
}