Checkpoint: Boîte à idées : table BDD, API tRPC (créer, lister, répondre, changer statut), page avec liste filtrée par statut et recherche, bouton Nouvelle demande, réponse admin avec statut colorisé, menu dans la sidebar
This commit is contained in:
44
server/db.ts
44
server/db.ts
@@ -9,6 +9,8 @@ import {
|
||||
appSettings,
|
||||
importLogs,
|
||||
InsertLocalUser,
|
||||
ideas,
|
||||
InsertIdea,
|
||||
} from "../drizzle/schema";
|
||||
import { ENV } from "./_core/env";
|
||||
|
||||
@@ -315,3 +317,45 @@ export async function getImportStats() {
|
||||
totalNewRows,
|
||||
};
|
||||
}
|
||||
|
||||
// ─── Boîte à idées ────────────────────────────────────────────────────────────
|
||||
|
||||
export async function createIdea(data: InsertIdea) {
|
||||
const db = await getDb();
|
||||
if (!db) throw new Error("Database not available");
|
||||
await db.insert(ideas).values(data);
|
||||
}
|
||||
|
||||
export async function getAllIdeas() {
|
||||
const db = await getDb();
|
||||
if (!db) return [];
|
||||
return db.select().from(ideas).orderBy(desc(ideas.createdAt));
|
||||
}
|
||||
|
||||
export async function getIdeasByUser(userId: number) {
|
||||
const db = await getDb();
|
||||
if (!db) return [];
|
||||
return db.select().from(ideas).where(eq(ideas.userId, userId)).orderBy(desc(ideas.createdAt));
|
||||
}
|
||||
|
||||
export async function repondreIdea(
|
||||
id: number,
|
||||
reponseAdmin: string,
|
||||
reponduPar: string,
|
||||
statut: "ouvert" | "en_cours" | "resolu" | "ferme"
|
||||
) {
|
||||
const db = await getDb();
|
||||
if (!db) throw new Error("Database not available");
|
||||
await db.update(ideas).set({
|
||||
reponseAdmin,
|
||||
reponduPar,
|
||||
reponduAt: new Date(),
|
||||
statut,
|
||||
}).where(eq(ideas.id, id));
|
||||
}
|
||||
|
||||
export async function updateIdeaStatut(id: number, statut: "ouvert" | "en_cours" | "resolu" | "ferme") {
|
||||
const db = await getDb();
|
||||
if (!db) throw new Error("Database not available");
|
||||
await db.update(ideas).set({ statut }).where(eq(ideas.id, id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user