From 883f755ab1cd4bd0986977d6631e0baf0b6a7e17 Mon Sep 17 00:00:00 2001 From: Jorge Vargas Date: Sat, 15 Mar 2025 11:17:39 -0600 Subject: [PATCH] Remove WIP work --- src/pages/api/album/update.ts | 93 -------------------------------- src/pages/api/platform/create.ts | 90 ------------------------------- src/pages/api/platform/update.ts | 93 -------------------------------- 3 files changed, 276 deletions(-) delete mode 100644 src/pages/api/album/update.ts delete mode 100644 src/pages/api/platform/create.ts delete mode 100644 src/pages/api/platform/update.ts diff --git a/src/pages/api/album/update.ts b/src/pages/api/album/update.ts deleted file mode 100644 index 5d3797f..0000000 --- a/src/pages/api/album/update.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { APIRoute } from 'astro' -import * as s from 'superstruct' - -import { AlbumStatus } from '@prisma/client' -import prismaClient from 'utils/prisma-client' - -import { Status, parseForm, slug } from 'utils/form' -import { writeImg, getImgColor } from 'utils/img' -import { handleComplete } from 'integrations/requestCat' -import { AlbumSchema } from 'schemas/album' - -const UpdateAlbum = s.assign(s.partial(AlbumSchema), s.object({ albumId: s.number() })) - -export const POST: APIRoute = async ({ request, locals }) => { - const { session, permissions, user } = locals - - if (!session || !user) return Status(401) - if (!permissions.includes('UPDATE')) return Status(403) - - let body - try { - const formData = await parseForm(request) - body = s.create(formData, UpdateAlbum) - } catch (err) { - return Status(422, (err as Error).message) - } - - try { - const albumRow = await prismaClient.$transaction(async (tx) => { - const artistRows = body.artists.map((name: string) => ({ slug: slug(name), name })) - - const albumRow = await tx.albums.update({ - where: {id: body.albumId} - data: { - title: body.title, - subTitle: body.subTitle, - releaseDate: body.releaseDate, - label: body.label, - vgmdb: body.vgmdb, - description: body.description, - createdBy: user.name, - status: body.status, - animations: { create: body.animations.map((id) => ({ animation: { connect: { id } } })) }, - artists: { - set: artistRows.map((a) => ({ - artist: { - connectOrCreate: { - create: a, - where: { slug: a.slug } - } - } - })) - }, - categories: { create: body.categories.map((c) => ({ category: { connect: { name: c } } })) }, - classifications: { create: body.classifications.map((name) => ({ classification: { connect: { name } } })) }, - games: { create: body.games.map((slug) => ({ game: { connect: { slug } } })) }, - platforms: { create: body.platforms.map((id) => ({ platform: { connect: { id } } })) }, - // albumHistories - discs: { createMany: { data: body.discs } }, - relatedAlbums: { create: body.related.map((id) => ({ relatedAlbum: { connect: { id } } })) } - }, - include: { artists: { include: { artist: { select: { name: true } } } } } - }) - - const handleCover = async () => { - const coverPath = await writeImg(body.cover, 'album', albumRow.id) - const headerColor = await getImgColor(coverPath) - await tx.albums.update({ where: { id: albumRow.id }, data: { headerColor } }) - albumRow.headerColor = headerColor - } - - await Promise.all([ - handleCover(), - tx.downloads.createMany({ - data: body.downloads.map((d) => ({ - title: d.title, - small: d.small, - albumId: albumRow.id, - links: { create: d.links } - })) - }) - ]) - - return albumRow - }) - - if (albumRow.status === AlbumStatus.SHOW) await handleComplete(albumRow, body.request) - - return Status(200, albumRow.id.toString()) - } catch (err) { - return Status(500, (err as Error).message) - } -} diff --git a/src/pages/api/platform/create.ts b/src/pages/api/platform/create.ts deleted file mode 100644 index ad60f79..0000000 --- a/src/pages/api/platform/create.ts +++ /dev/null @@ -1,90 +0,0 @@ -import type { APIRoute } from 'astro' -import * as s from 'superstruct' - -import prismaClient from 'utils/prisma-client' -import { AlbumStatus } from '@prisma/client' - -import { Status, formToObject, slug } from 'utils/form' -import { writeImg, getImgColor } from 'utils/img' -import { handleComplete } from 'integrations/requestCat' -import { AlbumSchema } from 'schemas/album' - -export const POST: APIRoute = async ({ request, locals }) => { - const { session, permissions, user } = locals - - if (!session || !user) return Status(401) - if (!permissions.includes('UPDATE')) return Status(403) - - let body - try { - const formData = await request.formData() - body = s.create(formToObject(formData), AlbumSchema) - } catch (err) { - return Status(422, (err as Error).message) - } - - try { - const albumRow = await prismaClient.$transaction(async (tx) => { - const artistRows = body.artists.map((name: string) => ({ slug: slug(name), name })) - - const albumRow = await tx.albums.create({ - data: { - title: body.title, - subTitle: body.subTitle, - releaseDate: body.releaseDate, - label: body.label, - vgmdb: body.vgmdb, - description: body.description, - createdBy: user.name, - status: body.status, - animations: { create: body.animations.map((id) => ({ animation: { connect: { id } } })) }, - artists: { - create: artistRows.map((a) => ({ - artist: { - connectOrCreate: { - create: a, - where: { slug: a.slug } - } - } - })) - }, - categories: { create: body.categories.map((c) => ({ category: { connect: { name: c } } })) }, - classifications: { create: body.classifications.map((name) => ({ classification: { connect: { name } } })) }, - games: { create: body.games.map((slug) => ({ game: { connect: { slug } } })) }, - platforms: { create: body.platforms.map((id) => ({ platform: { connect: { id } } })) }, - // albumHistories - discs: { createMany: { data: body.discs } }, - relatedAlbums: { create: body.related.map((id) => ({ relatedAlbum: { connect: { id } } })) } - }, - include: { artists: { include: { artist: { select: { name: true } } } } } - }) - - const handleCover = async () => { - const coverPath = await writeImg(body.cover, 'album', albumRow.id) - const headerColor = await getImgColor(coverPath) - await tx.albums.update({ where: { id: albumRow.id }, data: { headerColor } }) - albumRow.headerColor = headerColor - } - - await Promise.all([ - handleCover(), - tx.downloads.createMany({ - data: body.downloads.map((d) => ({ - title: d.title, - small: d.small, - albumId: albumRow.id, - links: { create: d.links } - })) - }) - ]) - - return albumRow - }) - - if (albumRow.status === AlbumStatus.SHOW) await handleComplete(albumRow, body.request) - - return Status(200, albumRow.id.toString()) - } catch (err) { - return Status(500, (err as Error).message) - } -} diff --git a/src/pages/api/platform/update.ts b/src/pages/api/platform/update.ts deleted file mode 100644 index 6edf0a3..0000000 --- a/src/pages/api/platform/update.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { APIRoute } from 'astro' -import * as s from 'superstruct' - -import { AlbumStatus } from '@prisma/client' -import prismaClient from 'utils/prisma-client' - -import { Status, formToObject, slug } from 'utils/form' -import { writeImg, getImgColor } from 'utils/img' -import { handleComplete } from 'integrations/requestCat' -import { AlbumSchema } from 'schemas/album' - -const UpdateAlbum = s.assign(s.partial(AlbumSchema), s.object({ albumId: s.number() })) - -export const POST: APIRoute = async ({ request, locals }) => { - const { session, permissions, user } = locals - - if (!session || !user) return Status(401) - if (!permissions.includes('UPDATE')) return Status(403) - - let body - try { - const formData = await request.formData() - body = s.create(formToObject(formData), UpdateAlbum) - } catch (err) { - return Status(422, (err as Error).message) - } - - try { - const albumRow = await prismaClient.$transaction(async (tx) => { - const artistRows = body.artists.map((name: string) => ({ slug: slug(name), name })) - - const albumRow = await tx.albums.update({ - where: {id: body.albumId} - data: { - title: body.title, - subTitle: body.subTitle, - releaseDate: body.releaseDate, - label: body.label, - vgmdb: body.vgmdb, - description: body.description, - createdBy: user.name, - status: body.status, - animations: { create: body.animations.map((id) => ({ animation: { connect: { id } } })) }, - artists: { - set: artistRows.map((a) => ({ - artist: { - connectOrCreate: { - create: a, - where: { slug: a.slug } - } - } - })) - }, - categories: { create: body.categories.map((c) => ({ category: { connect: { name: c } } })) }, - classifications: { create: body.classifications.map((name) => ({ classification: { connect: { name } } })) }, - games: { create: body.games.map((slug) => ({ game: { connect: { slug } } })) }, - platforms: { create: body.platforms.map((id) => ({ platform: { connect: { id } } })) }, - // albumHistories - discs: { createMany: { data: body.discs } }, - relatedAlbums: { create: body.related.map((id) => ({ relatedAlbum: { connect: { id } } })) } - }, - include: { artists: { include: { artist: { select: { name: true } } } } } - }) - - const handleCover = async () => { - const coverPath = await writeImg(body.cover, 'album', albumRow.id) - const headerColor = await getImgColor(coverPath) - await tx.albums.update({ where: { id: albumRow.id }, data: { headerColor } }) - albumRow.headerColor = headerColor - } - - await Promise.all([ - handleCover(), - tx.downloads.createMany({ - data: body.downloads.map((d) => ({ - title: d.title, - small: d.small, - albumId: albumRow.id, - links: { create: d.links } - })) - }) - ]) - - return albumRow - }) - - if (albumRow.status === AlbumStatus.SHOW) await handleComplete(albumRow, body.request) - - return Status(200, albumRow.id.toString()) - } catch (err) { - return Status(500, (err as Error).message) - } -}