From 9e29265a6178ef5f38ccd8fd7bf4a00824f2dc2b Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Mon, 2 Feb 2026 16:30:03 +0530 Subject: [PATCH] feat: add connector deletion type and metadata schema to inbox types --- surfsense_web/contracts/types/inbox.types.ts | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/surfsense_web/contracts/types/inbox.types.ts b/surfsense_web/contracts/types/inbox.types.ts index 3570f2850..8e4b9ae86 100644 --- a/surfsense_web/contracts/types/inbox.types.ts +++ b/surfsense_web/contracts/types/inbox.types.ts @@ -7,6 +7,7 @@ import { documentTypeEnum } from "./document.types"; */ export const inboxItemTypeEnum = z.enum([ "connector_indexing", + "connector_deletion", "document_processing", "new_mention", "page_limit_exceeded", @@ -60,6 +61,17 @@ export const connectorIndexingMetadata = baseInboxItemMetadata.extend({ file_names: z.array(z.string()).optional(), }); +/** + * Connector deletion metadata schema + */ +export const connectorDeletionMetadata = baseInboxItemMetadata.extend({ + connector_id: z.number(), + connector_name: z.string(), + connector_type: z.string(), + documents_deleted: z.number(), + error: z.string().optional(), +}); + /** * Document processing metadata schema */ @@ -110,6 +122,7 @@ export const pageLimitExceededMetadata = baseInboxItemMetadata.extend({ */ export const inboxItemMetadata = z.union([ connectorIndexingMetadata, + connectorDeletionMetadata, documentProcessingMetadata, newMentionMetadata, pageLimitExceededMetadata, @@ -140,6 +153,11 @@ export const connectorIndexingInboxItem = inboxItem.extend({ metadata: connectorIndexingMetadata, }); +export const connectorDeletionInboxItem = inboxItem.extend({ + type: z.literal("connector_deletion"), + metadata: connectorDeletionMetadata, +}); + export const documentProcessingInboxItem = inboxItem.extend({ type: z.literal("document_processing"), metadata: documentProcessingMetadata, @@ -235,6 +253,15 @@ export function isConnectorIndexingMetadata( return connectorIndexingMetadata.safeParse(metadata).success; } +/** + * Type guard for ConnectorDeletionMetadata + */ +export function isConnectorDeletionMetadata( + metadata: unknown +): metadata is ConnectorDeletionMetadata { + return connectorDeletionMetadata.safeParse(metadata).success; +} + /** * Type guard for DocumentProcessingMetadata */ @@ -268,6 +295,7 @@ export function parseInboxItemMetadata( metadata: unknown ): | ConnectorIndexingMetadata + | ConnectorDeletionMetadata | DocumentProcessingMetadata | NewMentionMetadata | PageLimitExceededMetadata @@ -277,6 +305,10 @@ export function parseInboxItemMetadata( const result = connectorIndexingMetadata.safeParse(metadata); return result.success ? result.data : null; } + case "connector_deletion": { + const result = connectorDeletionMetadata.safeParse(metadata); + return result.success ? result.data : null; + } case "document_processing": { const result = documentProcessingMetadata.safeParse(metadata); return result.success ? result.data : null; @@ -303,12 +335,14 @@ export type InboxItemStatusEnum = z.infer; export type DocumentProcessingStageEnum = z.infer; export type BaseInboxItemMetadata = z.infer; export type ConnectorIndexingMetadata = z.infer; +export type ConnectorDeletionMetadata = z.infer; export type DocumentProcessingMetadata = z.infer; export type NewMentionMetadata = z.infer; export type PageLimitExceededMetadata = z.infer; export type InboxItemMetadata = z.infer; export type InboxItem = z.infer; export type ConnectorIndexingInboxItem = z.infer; +export type ConnectorDeletionInboxItem = z.infer; export type DocumentProcessingInboxItem = z.infer; export type NewMentionInboxItem = z.infer; export type PageLimitExceededInboxItem = z.infer;