009090b381
- dashboard: ActiveTimers widget — live h:mm:ss for any in-progress timed event (breastfeed, nap, sleep, walk…), Terminer button patches endedAt
- dashboard: reorganised quick-log groups; Santé group (Température, Traitement, Symptôme)
- events: SYMPTOM type — tag chips (Fièvre, Reflux, Colique, Éruption, Toux, Congestion, Diarrhée, Vomissement, Irritabilité, Pleurs excessifs), stored in metadata.tags
- prisma: migration adding SYMPTOM to EventType enum
- search: GET /api/search (events by notes ILIKE, journal by content ILIKE), /search page with debounced input + keyword highlight
- nav: Recherche link added to LINKS + More drawer
- growth: PDF export button — generates formatted table with all measurements, zebra rows, downloads croissance-{name}.pdf
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
157 lines
4.9 KiB
SQL
157 lines
4.9 KiB
SQL
-- AlterEnum
|
|
-- This migration adds more than one value to an enum.
|
|
-- With PostgreSQL versions 11 and earlier, this is not possible
|
|
-- in a single migration. This can be worked around by creating
|
|
-- multiple migrations, each migration adding only one value to
|
|
-- the enum.
|
|
|
|
|
|
ALTER TYPE "EventType" ADD VALUE 'PUMP';
|
|
ALTER TYPE "EventType" ADD VALUE 'BATH';
|
|
ALTER TYPE "EventType" ADD VALUE 'WALK';
|
|
ALTER TYPE "EventType" ADD VALUE 'TUMMY_TIME';
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "Family" ADD COLUMN "pinnedNote" TEXT,
|
|
ADD COLUMN "pinnedNoteAuthor" TEXT,
|
|
ADD COLUMN "pinnedNoteUpdatedAt" TIMESTAMP(3);
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "User" ADD COLUMN "forcedLogoutAt" TIMESTAMP(3);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "EventTemplate" (
|
|
"id" TEXT NOT NULL,
|
|
"familyId" TEXT NOT NULL,
|
|
"label" TEXT NOT NULL,
|
|
"type" "EventType" NOT NULL,
|
|
"metadata" JSONB,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "EventTemplate_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "JournalNote" (
|
|
"id" TEXT NOT NULL,
|
|
"babyId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"date" TIMESTAMP(3) NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "JournalNote_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Milestone" (
|
|
"id" TEXT NOT NULL,
|
|
"babyId" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"date" TIMESTAMP(3) NOT NULL,
|
|
"notes" TEXT,
|
|
"icon" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Milestone_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Vaccination" (
|
|
"id" TEXT NOT NULL,
|
|
"babyId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"date" TIMESTAMP(3),
|
|
"dueDate" TIMESTAMP(3),
|
|
"notes" TEXT,
|
|
"done" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Vaccination_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AuditLog" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"userName" TEXT NOT NULL,
|
|
"action" TEXT NOT NULL,
|
|
"targetId" TEXT,
|
|
"familyId" TEXT,
|
|
"detail" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MedicationProfile" (
|
|
"id" TEXT NOT NULL,
|
|
"familyId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"molecule" TEXT,
|
|
"defaultDose" TEXT,
|
|
"unit" TEXT NOT NULL DEFAULT 'mL',
|
|
"intervalHours" DOUBLE PRECISION NOT NULL DEFAULT 6,
|
|
"minIntervalHours" DOUBLE PRECISION,
|
|
"isPreset" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MedicationProfile_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MilkStock" (
|
|
"id" TEXT NOT NULL,
|
|
"babyId" TEXT NOT NULL,
|
|
"volume" DOUBLE PRECISION NOT NULL,
|
|
"storedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
"location" TEXT NOT NULL DEFAULT 'fridge',
|
|
"notes" TEXT,
|
|
"used" BOOLEAN NOT NULL DEFAULT false,
|
|
"usedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MilkStock_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MedicationReminder" (
|
|
"id" TEXT NOT NULL,
|
|
"babyId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"dose" TEXT,
|
|
"unit" TEXT,
|
|
"intervalHours" DOUBLE PRECISION NOT NULL,
|
|
"startAt" TIMESTAMP(3) NOT NULL,
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"lastSentAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MedicationReminder_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "EventTemplate" ADD CONSTRAINT "EventTemplate_familyId_fkey" FOREIGN KEY ("familyId") REFERENCES "Family"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "JournalNote" ADD CONSTRAINT "JournalNote_babyId_fkey" FOREIGN KEY ("babyId") REFERENCES "Baby"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "JournalNote" ADD CONSTRAINT "JournalNote_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Milestone" ADD CONSTRAINT "Milestone_babyId_fkey" FOREIGN KEY ("babyId") REFERENCES "Baby"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Vaccination" ADD CONSTRAINT "Vaccination_babyId_fkey" FOREIGN KEY ("babyId") REFERENCES "Baby"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MilkStock" ADD CONSTRAINT "MilkStock_babyId_fkey" FOREIGN KEY ("babyId") REFERENCES "Baby"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MedicationReminder" ADD CONSTRAINT "MedicationReminder_babyId_fkey" FOREIGN KEY ("babyId") REFERENCES "Baby"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|