add references, chart improvement, fix scrollable combobox, fixed funnels

This commit is contained in:
Carl-Gerhard Lindesvärd
2024-03-07 20:23:34 +01:00
parent 6a6ccfdb42
commit 6d5bfa4cbe
21 changed files with 454 additions and 114 deletions

View File

@@ -12,3 +12,4 @@ export * from './src/services/reports.service';
export * from './src/services/salt.service';
export * from './src/services/share.service';
export * from './src/services/user.service';
export * from './src/services/reference.service';

View File

@@ -0,0 +1,14 @@
-- CreateTable
CREATE TABLE "references" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"title" TEXT NOT NULL,
"description" TEXT,
"project_id" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "references_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "references" ADD CONSTRAINT "references_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "projects"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "references" ADD COLUMN "date" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP;

View File

@@ -25,6 +25,7 @@ model Project {
dashboards Dashboard[]
share ShareOverview?
EventMeta EventMeta[]
Reference Reference[]
@@map("projects")
}
@@ -184,3 +185,17 @@ model EventMeta {
@@unique([name, project_id])
@@map("event_meta")
}
model Reference {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
title String
description String?
date DateTime @default(now())
project_id String
project Project @relation(fields: [project_id], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
@@map("references")
}

View File

@@ -0,0 +1,50 @@
import type { Prisma, Reference } from '../prisma-client';
import { db } from '../prisma-client';
// import type { Report as DbReport } from '../prisma-client';
export type IServiceReference = Omit<Reference, 'project_id'> & {
projectId: string;
};
export function transform({
project_id,
...item
}: Reference): IServiceReference {
return {
...item,
projectId: project_id,
};
}
export async function getReferenceById(id: string) {
const reference = await db.reference.findUnique({
where: {
id,
},
});
if (!reference) {
return null;
}
return transform(reference);
}
export async function getReferences({
where,
take,
skip,
}: {
where: Prisma.ReferenceWhereInput;
take?: number;
skip?: number;
}) {
const references = await db.reference.findMany({
where,
take: take ?? 50,
skip,
});
return references.map(transform);
}

View File

@@ -57,6 +57,8 @@ export const zTimeInterval = z.enum(objectToZodEnums(intervals));
export const zMetric = z.enum(objectToZodEnums(metrics));
export const zRange = z.enum(objectToZodEnums(timeRanges));
export const zChartInput = z.object({
name: z.string(),
chartType: zChartType,
@@ -64,7 +66,7 @@ export const zChartInput = z.object({
interval: zTimeInterval,
events: zChartEvents,
breakdowns: zChartBreakdowns,
range: z.enum(objectToZodEnums(timeRanges)),
range: zRange,
previous: z.boolean(),
formula: z.string().optional(),
metric: zMetric,
@@ -87,3 +89,10 @@ export const zShareOverview = z.object({
password: z.string().nullable(),
public: z.boolean(),
});
export const zCreateReference = z.object({
title: z.string(),
description: z.string().nullish(),
projectId: z.string(),
datetime: z.string(),
});