42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import * as z from 'zod';
|
|
import { httpClient } from '~~/server/lib/triplit';
|
|
import { cancelPendingRename } from '~~/server/utils/renames';
|
|
import { assert } from '~~/utils/assert';
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
await protectRoute(event);
|
|
|
|
const body = await readValidatedBody(event, (body) =>
|
|
z
|
|
.object({
|
|
renameId: z.string(),
|
|
})
|
|
.safeParse(body),
|
|
);
|
|
if (!body.success) {
|
|
throw createError({
|
|
statusCode: 400,
|
|
message: 'Invalid rename ID',
|
|
});
|
|
}
|
|
const { renameId } = body.data;
|
|
assert(renameId);
|
|
|
|
const [success, pendingRename] = cancelPendingRename(renameId);
|
|
if (success) {
|
|
const topic = await httpClient.fetchOne(httpClient.query('topics').Where('id', '=', pendingRename!.topicId));
|
|
if (topic !== null && topic.renaming) {
|
|
await httpClient.update('topics', topic.id, {
|
|
renaming: false,
|
|
});
|
|
}
|
|
|
|
return {
|
|
ok: true,
|
|
};
|
|
}
|
|
|
|
return {
|
|
ok: false,
|
|
};
|
|
}); |