Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
JavaScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// Get Tape by Code, 25.10.17// Query MongoDB for tape by code
import { connect } from "../../backend/database.mjs";import { respond } from "../../backend/http.mjs";
export async function handler(event, context) { if (event.httpMethod !== "GET") { return respond(405, { message: "Method Not Allowed" }); }
const code = event.queryStringParameters?.code; const slug = event.queryStringParameters?.slug;
if (!code && !slug) { return respond(400, { message: "Missing required parameter: code or slug" }); }
try { const database = await connect(); const tapes = database.db.collection("tapes");
// Query by code or slug const query = code ? { code } : { slug }; const tape = await tapes.findOne(query);
// Don't disconnect - let the connection be reused across serverless invocations // await database.disconnect();
if (!tape) { return respond(404, { message: "Tape not found" }); }
// Return tape info. `kind` distinguishes the backing store: // "zip" = frame-based recording (default for legacy tapes), // "mp4" = video-based tape (e.g. a posted camera-roll clip). return respond(200, { slug: tape.slug, code: tape.code, when: tape.when, bucket: tape.bucket, user: tape.user, nuked: tape.nuked || false, kind: tape.kind || "zip", mp4Status: tape.mp4Status, });
} catch (error) { console.error(`❌ Get tape error:`, error); return respond(500, { message: error.message || String(error) }); }}