refactor: asegurar created_by y usuarios al asignarlos en TaskService

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
pull/1/head
borja 2 months ago
parent d040356a19
commit 90d78bf195

@ -1,5 +1,5 @@
import type { Database } from 'bun:sqlite';
import { db } from '../db';
import { db, ensureUserExists } from '../db';
type CreateTaskInput = {
description: string;
@ -23,11 +23,16 @@ export class TaskService {
VALUES (?, ?, ?, ?)
`);
const ensuredCreator = ensureUserExists(task.created_by, this.dbInstance);
if (!ensuredCreator) {
throw new Error('No se pudo asegurar created_by');
}
const runResult = insertTask.run(
task.description,
task.due_date ?? null,
task.group_id ?? null,
task.created_by
ensuredCreator
);
const taskId = Number((runResult as any).lastInsertRowid);
@ -37,12 +42,18 @@ export class TaskService {
VALUES (?, ?, ?)
`);
// Evitar duplicados por (task_id, user_id)
// Evitar duplicados por (task_id, user_id) tras asegurar usuarios
const seen = new Set<string>();
for (const a of assignments) {
if (seen.has(a.user_id)) continue;
seen.add(a.user_id);
insertAssignment.run(taskId, a.user_id, a.assigned_by);
const ensuredUser = ensureUserExists(a.user_id, this.dbInstance);
if (!ensuredUser) continue;
if (seen.has(ensuredUser)) continue;
seen.add(ensuredUser);
const ensuredAssigner =
ensureUserExists(a.assigned_by || ensuredCreator, this.dbInstance) || ensuredCreator;
insertAssignment.run(taskId, ensuredUser, ensuredAssigner);
}
}

Loading…
Cancel
Save