feat: add topics creation/adding

This commit is contained in:
2025-01-24 12:15:35 +01:00
parent f82b3373b4
commit e2d3e75311
2 changed files with 78 additions and 27 deletions

View File

@@ -1,10 +1,10 @@
import { db } from "$lib/db"
import { tasks, tasksToTopics } from "$lib/db/schema"
import { eq } from "drizzle-orm"
import { db } from '$lib/db';
import { tasks, tasksToTopics, topics } from '$lib/db/schema';
import { eq, and } from 'drizzle-orm';
export const load = async ({ params }) => {
return {
task: (await db.query.tasks.findFirst({
task: await db.query.tasks.findFirst({
with: {
tasksToTopics: {
with: {
@@ -13,17 +13,50 @@ export const load = async ({ params }) => {
}
},
where: eq(tasks.id, params.id)
})
),
}),
topics: await db.query.topics.findMany()
}
}
};
};
export const actions = {
addTopic: async ({ request, params }) => {
const data = await request.formData()
createTopic: async ({ request, params }) => {
const data = await request.formData();
const task = await db.insert(tasksToTopics).values({ taskId: params.id, topicId: data.get('topic-id') }).returning()
const topic = await db
.insert(topics)
.values({ name: data.get('name') })
.returning();
const existing = await db.query.tasksToTopics.findFirst({
where: and(
eq(tasksToTopics.taskId, Number(params.id)),
eq(tasksToTopics.topicId, topic[0].id)
)
});
if (!existing) {
await db
.insert(tasksToTopics)
.values({ taskId: Number(params.id), topicId: topic[0].id })
.returning();
}
},
addTopic: async ({ request, params }) => {
const data = await request.formData();
const topicId = Number(data.get('topic-id'));
const existing = await db.query.tasksToTopics.findFirst({
where: and(eq(tasksToTopics.taskId, Number(params.id)), eq(tasksToTopics.topicId, topicId))
});
console.log(existing);
if (!existing) {
await db
.insert(tasksToTopics)
.values({ taskId: Number(params.id), topicId })
.returning();
}
}
}
};