Checkpoint: Ajout de l'onglet "Signatures" dans la page Paramètres : table DB signatures (firstName, lastName, imageKey, imageUrl), migration appliquée, routes tRPC (list, upload, create, delete), composant SignaturesSection avec formulaire d'ajout (prénom+nom+upload image), grille d'affichage des signatures avec aperçu, bouton de suppression au survol

This commit is contained in:
Manus
2026-03-14 18:52:47 -04:00
parent 9868a1afda
commit 33a82e2ad2
8 changed files with 1764 additions and 3 deletions

View File

@@ -32,7 +32,10 @@ import {
AutomationRule,
llmFieldsConfig,
InsertLlmFieldConfig,
LlmFieldConfig
LlmFieldConfig,
signatures,
InsertSignature,
Signature
} from "../drizzle/schema";
import { ENV } from './_core/env';
@@ -667,3 +670,34 @@ export async function initializeDefaultLlmFields(userId: number): Promise<void>
}
}
}
// ============= SIGNATURES HELPERS =============
export async function getSignaturesByUser(userId: number): Promise<Signature[]> {
const db = await getDb();
if (!db) return [];
return db.select().from(signatures).where(eq(signatures.userId, userId));
}
export async function getSignatureById(id: number): Promise<Signature | undefined> {
const db = await getDb();
if (!db) return undefined;
const results = await db.select().from(signatures).where(eq(signatures.id, id));
return results[0];
}
export async function createSignature(data: InsertSignature): Promise<Signature> {
const db = await getDb();
if (!db) throw new Error("Database not available");
const result = await db.insert(signatures).values(data);
const insertId = (result[0] as any).insertId;
const created = await getSignatureById(insertId);
if (!created) throw new Error("Failed to retrieve created signature");
return created;
}
export async function deleteSignature(id: number): Promise<void> {
const db = await getDb();
if (!db) return;
await db.delete(signatures).where(eq(signatures.id, id));
}