diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx index 1ad3d382b..6d9ac219f 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx @@ -172,6 +172,7 @@ export const EditDocumentForm = ({ teamId: team?.id, data: { title: data.title, + externalId: data.externalId || null, globalAccessAuth: data.globalAccessAuth ?? null, globalActionAuth: data.globalActionAuth ?? null, }, diff --git a/apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx b/apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx index b95bb9a73..cf137152e 100644 --- a/apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx +++ b/apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx @@ -132,6 +132,7 @@ export const EditTemplateForm = ({ teamId: team?.id, data: { title: data.title, + externalId: data.externalId || null, globalAccessAuth: data.globalAccessAuth ?? null, globalActionAuth: data.globalActionAuth ?? null, }, diff --git a/apps/web/src/components/document/document-history-sheet.tsx b/apps/web/src/components/document/document-history-sheet.tsx index feaae1f77..25fd798d5 100644 --- a/apps/web/src/components/document/document-history-sheet.tsx +++ b/apps/web/src/components/document/document-history-sheet.tsx @@ -271,6 +271,23 @@ export const DocumentHistorySheet = ({ ]} /> )) + .with( + { type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_EXTERNAL_ID_UPDATED }, + ({ data }) => ( + + ), + ) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED }, ({ data }) => ( ({ + anonymous: 'Document external ID updated', + identified: 'updated the document external ID', + })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT }, () => ({ anonymous: 'Document sent', identified: 'sent the document', diff --git a/packages/prisma/migrations/20240712031001_add_external_id_column/migration.sql b/packages/prisma/migrations/20240712031001_add_external_id_column/migration.sql new file mode 100644 index 000000000..07f381ff1 --- /dev/null +++ b/packages/prisma/migrations/20240712031001_add_external_id_column/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "Document" ADD COLUMN "externalId" TEXT; + +-- AlterTable +ALTER TABLE "Template" ADD COLUMN "externalId" TEXT; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 1cc8b77ea..3cb341a52 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -283,6 +283,7 @@ enum DocumentSource { model Document { id Int @id @default(autoincrement()) + externalId String? userId Int User User @relation(fields: [userId], references: [id], onDelete: Cascade) authOptions Json? @@ -589,6 +590,7 @@ model TemplateMeta { model Template { id Int @id @default(autoincrement()) + externalId String? type TemplateType @default(PRIVATE) title String userId Int diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts index 33b2a92c5..ac278b1d8 100644 --- a/packages/trpc/server/document-router/schema.ts +++ b/packages/trpc/server/document-router/schema.ts @@ -55,6 +55,7 @@ export const ZSetSettingsForDocumentMutationSchema = z.object({ teamId: z.number().min(1).optional(), data: z.object({ title: z.string().min(1).optional(), + externalId: z.string().nullish(), globalAccessAuth: ZDocumentAccessAuthTypesSchema.nullable().optional(), globalActionAuth: ZDocumentActionAuthTypesSchema.nullable().optional(), }), diff --git a/packages/trpc/server/template-router/schema.ts b/packages/trpc/server/template-router/schema.ts index 80280b406..e3d38044a 100644 --- a/packages/trpc/server/template-router/schema.ts +++ b/packages/trpc/server/template-router/schema.ts @@ -74,6 +74,7 @@ export const ZUpdateTemplateSettingsMutationSchema = z.object({ teamId: z.number().min(1).optional(), data: z.object({ title: z.string().min(1).optional(), + externalId: z.string().nullish(), globalAccessAuth: ZDocumentAccessAuthTypesSchema.nullable().optional(), globalActionAuth: ZDocumentActionAuthTypesSchema.nullable().optional(), publicTitle: z.string().trim().min(1).max(MAX_TEMPLATE_PUBLIC_TITLE_LENGTH).optional(), diff --git a/packages/ui/primitives/document-flow/add-settings.tsx b/packages/ui/primitives/document-flow/add-settings.tsx index 5289ec483..dddba289c 100644 --- a/packages/ui/primitives/document-flow/add-settings.tsx +++ b/packages/ui/primitives/document-flow/add-settings.tsx @@ -78,6 +78,7 @@ export const AddSettingsFormPartial = ({ resolver: zodResolver(ZAddSettingsFormSchema), defaultValues: { title: document.title, + externalId: document.externalId || '', globalAccessAuth: documentAuthOption?.globalAccessAuth || undefined, globalActionAuth: documentAuthOption?.globalActionAuth || undefined, meta: { @@ -183,6 +184,34 @@ export const AddSettingsFormPartial = ({
+ ( + + + External ID{' '} + + + + + + + Add an external ID to the document. This can be used to identify the + document in external systems. + + + + + + + + + + + )} + /> +
+ ( + + + External ID{' '} + + + + + + + Add an external ID to the template. This can be used to identify in + external systems. + + + + + + + + + + + )} + /> +