From 0b34321bf7ea36dc8cd15a63107e541b70841813 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Fri, 3 Feb 2023 07:58:14 +0100 Subject: [PATCH] :card_file_box: Add updatedAt fields where missing --- .gitignore | 4 +- .../queries/updateCollaboratorQuery.ts | 2 +- .../queries/updateInvitationQuery.ts | 2 +- .../workspace/queries/sendInvitationQuery.ts | 2 +- apps/docs/openapi/builder/_spec_.json | 39 +++++++++++++------ .../migration.sql | 25 ++++++++++++ packages/db/prisma/schema.prisma | 24 +++++++----- packages/models/features/answer.ts | 1 + packages/models/features/webhooks.ts | 2 +- packages/models/features/workspace.ts | 8 ++-- 10 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 packages/db/prisma/migrations/20230203065215_add_missing_updated_at_fields/migration.sql diff --git a/.gitignore b/.gitignore index 8bae0ba48..ed076309e 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,6 @@ dump.tar __env.js typebotsToFix.json -**/scripts/logs \ No newline at end of file +**/scripts/logs + +snapshots \ No newline at end of file diff --git a/apps/builder/src/features/collaboration/queries/updateCollaboratorQuery.ts b/apps/builder/src/features/collaboration/queries/updateCollaboratorQuery.ts index bc36441c9..87be06b1a 100644 --- a/apps/builder/src/features/collaboration/queries/updateCollaboratorQuery.ts +++ b/apps/builder/src/features/collaboration/queries/updateCollaboratorQuery.ts @@ -4,7 +4,7 @@ import { sendRequest } from 'utils' export const updateCollaboratorQuery = ( typebotId: string, userId: string, - collaborator: CollaboratorsOnTypebots + collaborator: Omit ) => sendRequest({ method: 'PATCH', diff --git a/apps/builder/src/features/collaboration/queries/updateInvitationQuery.ts b/apps/builder/src/features/collaboration/queries/updateInvitationQuery.ts index 47b0a8e4c..cbf86cee2 100644 --- a/apps/builder/src/features/collaboration/queries/updateInvitationQuery.ts +++ b/apps/builder/src/features/collaboration/queries/updateInvitationQuery.ts @@ -4,7 +4,7 @@ import { sendRequest } from 'utils' export const updateInvitationQuery = ( typebotId: string, email: string, - invitation: Omit + invitation: Omit ) => sendRequest({ method: 'PATCH', diff --git a/apps/builder/src/features/workspace/queries/sendInvitationQuery.ts b/apps/builder/src/features/workspace/queries/sendInvitationQuery.ts index 15853f396..33b1f7b78 100644 --- a/apps/builder/src/features/workspace/queries/sendInvitationQuery.ts +++ b/apps/builder/src/features/workspace/queries/sendInvitationQuery.ts @@ -3,7 +3,7 @@ import { sendRequest } from 'utils' import { Member } from '../types' export const sendInvitationQuery = ( - invitation: Omit + invitation: Omit ) => sendRequest<{ invitation?: WorkspaceInvitation; member?: Member }>({ url: `/api/workspaces/${invitation.workspaceId}/invitations`, diff --git a/apps/docs/openapi/builder/_spec_.json b/apps/docs/openapi/builder/_spec_.json index dcaf12e96..34c54de03 100644 --- a/apps/docs/openapi/builder/_spec_.json +++ b/apps/docs/openapi/builder/_spec_.json @@ -127,13 +127,17 @@ "id": { "type": "string" }, - "name": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time" }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string" + }, "icon": { "type": "string", "nullable": true @@ -195,8 +199,9 @@ }, "required": [ "id", - "name", "createdAt", + "updatedAt", + "name", "icon", "plan", "stripeId", @@ -263,13 +268,17 @@ "id": { "type": "string" }, - "name": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time" }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string" + }, "icon": { "type": "string", "nullable": true @@ -331,8 +340,9 @@ }, "required": [ "id", - "name", "createdAt", + "updatedAt", + "name", "icon", "plan", "stripeId", @@ -416,13 +426,17 @@ "id": { "type": "string" }, - "name": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time" }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string" + }, "icon": { "type": "string", "nullable": true @@ -484,8 +498,9 @@ }, "required": [ "id", - "name", "createdAt", + "updatedAt", + "name", "icon", "plan", "stripeId", diff --git a/packages/db/prisma/migrations/20230203065215_add_missing_updated_at_fields/migration.sql b/packages/db/prisma/migrations/20230203065215_add_missing_updated_at_fields/migration.sql new file mode 100644 index 000000000..cd4fa6003 --- /dev/null +++ b/packages/db/prisma/migrations/20230203065215_add_missing_updated_at_fields/migration.sql @@ -0,0 +1,25 @@ +/* + Warnings: + + - You are about to drop the column `lastUsedAt` on the `ApiToken` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "ApiToken" DROP COLUMN "lastUsedAt"; + +-- AlterTable +ALTER TABLE "CollaboratorsOnTypebots" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; + +-- AlterTable +ALTER TABLE "Invitation" ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; + +-- AlterTable +ALTER TABLE "MemberInWorkspace" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; + +-- AlterTable +ALTER TABLE "Workspace" ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; + +-- AlterTable +ALTER TABLE "WorkspaceInvitation" ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; diff --git a/packages/db/prisma/schema.prisma b/packages/db/prisma/schema.prisma index c48bccadd..2dbbe1313 100644 --- a/packages/db/prisma/schema.prisma +++ b/packages/db/prisma/schema.prisma @@ -57,20 +57,20 @@ model User { } model ApiToken { - id String @id @default(cuid()) - token String @unique - name String - ownerId String - lastUsedAt DateTime @default(now()) - createdAt DateTime @default(now()) - owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) + id String @id @default(cuid()) + createdAt DateTime @default(now()) + token String @unique + name String + ownerId String + owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) } model Workspace { id String @id @default(cuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt name String icon String? - createdAt DateTime @default(now()) plan Plan @default(FREE) stripeId String? @unique credentials Credentials[] @@ -92,6 +92,8 @@ model Workspace { } model MemberInWorkspace { + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt userId String workspaceId String role WorkspaceRole @@ -104,6 +106,7 @@ model MemberInWorkspace { model WorkspaceInvitation { id String @id @default(cuid()) createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt email String workspaceId String type WorkspaceRole @@ -180,6 +183,7 @@ model Typebot { model Invitation { createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt email String typebotId String type CollaborationType @@ -189,6 +193,8 @@ model Invitation { } model CollaboratorsOnTypebots { + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt userId String typebotId String type CollaborationType @@ -240,7 +246,7 @@ model Log { } model Answer { - createdAt DateTime @default(now()) + createdAt DateTime @default(now()) @updatedAt resultId String blockId String groupId String diff --git a/packages/models/features/answer.ts b/packages/models/features/answer.ts index cca255f98..0a1540c73 100644 --- a/packages/models/features/answer.ts +++ b/packages/models/features/answer.ts @@ -19,6 +19,7 @@ export const answerInputSchema = answerSchema .omit({ createdAt: true, + updatedAt: true, resultId: true, variableId: true, storageUsed: true, diff --git a/packages/models/features/webhooks.ts b/packages/models/features/webhooks.ts index 98c8914a4..2af4f9f37 100644 --- a/packages/models/features/webhooks.ts +++ b/packages/models/features/webhooks.ts @@ -30,7 +30,7 @@ export type WebhookResponse = { export const defaultWebhookAttributes: Omit< Webhook, - 'id' | 'body' | 'url' | 'typebotId' + 'id' | 'body' | 'url' | 'typebotId' | 'createdAt' | 'updatedAt' > = { method: HttpMethod.POST, headers: [], diff --git a/packages/models/features/workspace.ts b/packages/models/features/workspace.ts index 9c32cea7a..0b82cb42d 100644 --- a/packages/models/features/workspace.ts +++ b/packages/models/features/workspace.ts @@ -10,7 +10,7 @@ import { } from 'db' export const workspaceMemberSchema = schemaForType< - Omit & { + Omit & { user: Pick } >()( @@ -29,17 +29,19 @@ export const workspaceInvitationSchema = schemaForType< Omit >()( z.object({ + createdAt: z.date(), + updatedAt: z.date(), email: z.string(), type: z.nativeEnum(WorkspaceRole), - createdAt: z.date(), }) ) export const workspaceSchema = schemaForType()( z.object({ id: z.string(), - name: z.string(), createdAt: z.date(), + updatedAt: z.date(), + name: z.string(), icon: z.string().nullable(), plan: z.nativeEnum(Plan), stripeId: z.string().nullable(),