import "../../../../../../../dialect-helpers-DRI5pyY3.mjs";
import "../../../../../../../after-B1IIdH3Y.mjs";
import "../../../../../../../object-cache-Bok5j2ae.mjs";
import "../../../../../../../base64-CmWvODNW.mjs";
import "../../../../../../../types-CuW0zWDA.mjs";
import "../../../../../../../taxonomy-BxGxZZdu.mjs";
import "../../../../../../../request-cache-KCNHp_RJ.mjs";
import "../../../../../../../loader-CB6YHeul.mjs";
import "../../../../../../../resolve-DR3wqMTy.mjs";
import "../../../../../../../taxonomies-Cnb4F-Pb.mjs";
import { a as handleTermGet, r as handleTermCreate, s as handleTermTranslations } from "../../../../../../../taxonomies-BGBd16Eu.mjs";
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../../error-CkAseSqZ.mjs";
import { i as parseQuery, n as parseBody, t as isParseError } from "../../../../../../../parse-GmjecGct.mjs";
import { Fn as localeFilterQuery } from "../../../../../../../redirects-DXEXBAII.mjs";
import "../../../../../../../byline-fields-2Lp5Hbgf.mjs";
import "../../../../../../../status-CqJQX1QN.mjs";
import "../../../../../../../api/schemas/index.mjs";
import { n as requirePerm } from "../../../../../../../authorize-Dz88F_Fw.mjs";
import { z } from "zod";

//#region src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts
const prerender = false;
const createTermTranslationBody = z.object({
	locale: z.string().min(1),
	label: z.string().min(1).optional(),
	slug: z.string().min(1).optional()
}).meta({ id: "CreateTermTranslationBody" });
const GET = async ({ params, request, locals }) => {
	const { emdash, user } = locals;
	const { name, slug } = params;
	if (!name || !slug) return apiError("VALIDATION_ERROR", "Taxonomy name and slug required", 400);
	const dbErr = requireDb(emdash?.db);
	if (dbErr) return dbErr;
	const denied = requirePerm(user, "taxonomies:read");
	if (denied) return denied;
	const query = parseQuery(new URL(request.url), localeFilterQuery);
	if (isParseError(query)) return query;
	try {
		const anchor = await handleTermGet(emdash.db, name, slug, { locale: query.locale });
		if (!anchor.success) return unwrapResult(anchor);
		return unwrapResult(await handleTermTranslations(emdash.db, anchor.data.term.id));
	} catch (error) {
		return handleError(error, "Failed to list term translations", "TERM_TRANSLATIONS_ERROR");
	}
};
const POST = async ({ params, request, locals }) => {
	const { emdash, user } = locals;
	const { name, slug } = params;
	if (!name || !slug) return apiError("VALIDATION_ERROR", "Taxonomy name and slug required", 400);
	const dbErr = requireDb(emdash?.db);
	if (dbErr) return dbErr;
	const denied = requirePerm(user, "taxonomies:manage");
	if (denied) return denied;
	const query = parseQuery(new URL(request.url), localeFilterQuery);
	if (isParseError(query)) return query;
	try {
		const body = await parseBody(request, createTermTranslationBody);
		if (isParseError(body)) return body;
		const source = await handleTermGet(emdash.db, name, slug, { locale: query.locale });
		if (!source.success) return unwrapResult(source);
		return unwrapResult(await handleTermCreate(emdash.db, name, {
			slug: body.slug ?? source.data.term.slug,
			label: body.label ?? source.data.term.label,
			parentId: source.data.term.parentId,
			description: source.data.term.description,
			locale: body.locale,
			translationOf: source.data.term.id
		}), 201);
	} catch (error) {
		return handleError(error, "Failed to create term translation", "TERM_TRANSLATION_CREATE_ERROR");
	}
};

//#endregion
export { GET, POST, prerender };
//# sourceMappingURL=translations.mjs.map