feat: ditch triplit, move to postgresql + drizzle orm
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import { generations } from '~~/drizzle/schema';
|
||||
import { db } from '~~/server/lib/db';
|
||||
import { cancelPendingGeneration } from '~~/server/utils/generations';
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
await protectRoute(event);
|
||||
|
||||
const { generationId } = event.context.params!;
|
||||
const topicId = getRouterParam(event, 'topicId')!;
|
||||
|
||||
const topic = await db.query.topics.findFirst({
|
||||
where: {
|
||||
id: topicId,
|
||||
userId: event.context.user!.id as string,
|
||||
},
|
||||
with: {
|
||||
messages: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!topic) throw createError({ statusCode: 404, message: 'Topic not found' });
|
||||
|
||||
const success = cancelPendingGeneration(generationId!);
|
||||
|
||||
const generation = await db.query.generations.findFirst({
|
||||
where: {
|
||||
id: generationId,
|
||||
},
|
||||
});
|
||||
|
||||
if (!generation) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'Generation not found',
|
||||
});
|
||||
}
|
||||
|
||||
if (generation.status === 'completed') {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Generation already completed',
|
||||
});
|
||||
}
|
||||
|
||||
const message = await db.query.messages.findFirst({
|
||||
where: {
|
||||
generationId: generation.id,
|
||||
},
|
||||
});
|
||||
|
||||
if (!message) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'Message not found',
|
||||
});
|
||||
}
|
||||
|
||||
await db.update(generations).set({ status: 'cancelled' });
|
||||
await topicEvents.emit(topicId, {
|
||||
type: 'generation-complete',
|
||||
payload: {
|
||||
messageId: message.id,
|
||||
generationId,
|
||||
}
|
||||
})
|
||||
|
||||
if (!success) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Generation not found or already completed',
|
||||
});
|
||||
}
|
||||
|
||||
return 'ok';
|
||||
});
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user