save, create and view reports in dashboard

This commit is contained in:
Carl-Gerhard Lindesvärd
2023-10-19 11:56:52 +02:00
parent 2cb6bbfdd3
commit 4576453aef
28 changed files with 686 additions and 403 deletions

View File

@@ -0,0 +1,41 @@
-- CreateEnum
CREATE TYPE "Interval" AS ENUM ('hour', 'day', 'month');
-- CreateEnum
CREATE TYPE "ChartType" AS ENUM ('linear', 'bar', 'pie', 'metric', 'area');
-- CreateTable
CREATE TABLE "dashboards" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"name" TEXT NOT NULL,
"project_id" UUID NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "dashboards_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "reports" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"interval" "Interval" NOT NULL,
"range" INTEGER NOT NULL,
"chart_type" "ChartType" NOT NULL,
"breakdowns" JSONB NOT NULL,
"events" JSONB NOT NULL,
"project_id" UUID NOT NULL,
"dashboard_id" UUID NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "reports_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "dashboards" ADD CONSTRAINT "dashboards_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "projects"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "reports" ADD CONSTRAINT "reports_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "projects"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "reports" ADD CONSTRAINT "reports_dashboard_id_fkey" FOREIGN KEY ("dashboard_id") REFERENCES "dashboards"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -0,0 +1,8 @@
/*
Warnings:
- Added the required column `name` to the `reports` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "reports" ADD COLUMN "name" TEXT NOT NULL;

View File

@@ -31,8 +31,10 @@ model Project {
profiles Profile[]
clients Client[]
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
reports Report[]
dashboards Dashboard[]
@@map("projects")
}
@@ -97,3 +99,50 @@ model Client {
@@map("clients")
}
enum Interval {
hour
day
month
}
enum ChartType {
linear
bar
pie
metric
area
}
model Dashboard {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String
project_id String @db.Uuid
project Project @relation(fields: [project_id], references: [id])
reports Report[]
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
@@map("dashboards")
}
model Report {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
name String
interval Interval
range Int
chart_type ChartType
breakdowns Json
events Json
project_id String @db.Uuid
project Project @relation(fields: [project_id], references: [id])
dashboard_id String @db.Uuid
dashboard Dashboard @relation(fields: [dashboard_id], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
@@map("reports")
}