diff --git a/packages/web/src/lib/db/schema.ts b/packages/web/src/lib/db/schema.ts index aa7270e..10445bc 100755 --- a/packages/web/src/lib/db/schema.ts +++ b/packages/web/src/lib/db/schema.ts @@ -1,20 +1,21 @@ import { relations } from 'drizzle-orm'; import { integer, pgSchema, serial, timestamp, varchar } from 'drizzle-orm/pg-core'; -export const personalWebsiteSchema = pgSchema('personal_website') +export const personalWebsiteSchema = pgSchema('personal_website'); export const tasks = personalWebsiteSchema.table('tasks', { id: serial('id').primaryKey(), name: varchar('name', { length: 256 }), currentPoints: integer('current_points').default(0), totalPoints: integer('total_points').default(1), + notes: varchar('notes', { length: 8192 }), createdAt: timestamp('created_at').defaultNow(), updatedAt: timestamp('updated_at').defaultNow() }); export const tasksRelations = relations(tasks, ({ many }) => ({ tasksToTopics: many(tasksToTopics) -})) +})); export const topics = personalWebsiteSchema.table('topics', { id: serial('id').primaryKey(), @@ -35,7 +36,7 @@ export const tasksToTopics = personalWebsiteSchema.table('tasks_to_topics', { topicId: integer('topic_id') .notNull() .references(() => topics.id) -}) +}); export const taskToTopicsRelations = relations(tasksToTopics, ({ one }) => ({ task: one(tasks, { @@ -70,4 +71,3 @@ export const publications = personalWebsiteSchema.table('publications', { createdAt: timestamp('created_at').defaultNow(), updatedAt: timestamp('updated_at').defaultNow() }); - diff --git a/packages/web/src/routes/progress/[id]/+page.server.ts b/packages/web/src/routes/progress/[id]/+page.server.ts index b0c7790..6c02850 100755 --- a/packages/web/src/routes/progress/[id]/+page.server.ts +++ b/packages/web/src/routes/progress/[id]/+page.server.ts @@ -25,8 +25,6 @@ export const actions = { return { status: 401 }; } - - const data = await request.formData(); const topic = await db @@ -98,13 +96,33 @@ export const actions = { const data = await request.formData(); + const currentPoints = + Number(data.get('currentPoints')) <= Number(data.get('totalPoints')) + ? Number(data.get('currentPoints')) + : Number(data.get('totalPoints')); + await db .update(tasks) .set({ - currentPoints: Number(data.get('currentPoints')), + currentPoints, totalPoints: Number(data.get('totalPoints')), updatedAt: new Date() }) .where(eq(tasks.id, Number(params.id))); + }, + updateNotes: async ({ cookies, request, params }) => { + if (!cookies.get('token')) { + return { status: 401 }; + } + + const data = await request.formData(); + + await db + .update(tasks) + .set({ + notes: data.get('notes') as string, + updatedAt: new Date() + }) + .where(eq(tasks.id, Number(params.id))); } }; diff --git a/packages/web/src/routes/progress/[id]/+page.svelte b/packages/web/src/routes/progress/[id]/+page.svelte index a1e8b2d..1eb9dd6 100755 --- a/packages/web/src/routes/progress/[id]/+page.svelte +++ b/packages/web/src/routes/progress/[id]/+page.svelte @@ -152,3 +152,23 @@ + +
+

Notes

+ +
+ + + {#if data.editable} +
+ +
+ {/if} +
+