feat(documents): delete document from context menu

This commit is contained in:
Ruslan Bakiev
2026-02-23 14:27:00 +07:00
parent 68cbe7bc64
commit 6ad53e64c5
4 changed files with 160 additions and 1 deletions

View File

@@ -1425,6 +1425,41 @@ async function createWorkspaceDocument(auth: AuthContext | null, input: {
};
}
async function deleteWorkspaceDocument(auth: AuthContext | null, documentIdInput: string) {
const ctx = requireAuth(auth);
const documentId = String(documentIdInput ?? "").trim();
if (!documentId) throw new Error("id is required");
const existing = await prisma.workspaceDocument.findFirst({
where: {
id: documentId,
teamId: ctx.teamId,
},
select: { id: true },
});
if (!existing) throw new Error("document not found");
await prisma.$transaction([
prisma.workspaceDocument.delete({
where: { id: existing.id },
}),
prisma.clientTimelineEntry.deleteMany({
where: {
teamId: ctx.teamId,
contentType: "DOCUMENT",
contentId: existing.id,
},
}),
]);
await fs.rm(datasetRoot({ teamId: ctx.teamId, userId: ctx.userId }), {
recursive: true,
force: true,
}).catch(() => undefined);
return { ok: true, id: existing.id };
}
async function setContactInboxHidden(
auth: AuthContext | null,
input: { inboxId: string; hidden: boolean },
@@ -1829,6 +1864,7 @@ export const crmGraphqlSchema = buildSchema(`
archiveCalendarEvent(input: ArchiveCalendarEventInput!): CalendarEvent!
createCommunication(input: CreateCommunicationInput!): MutationWithIdResult!
createWorkspaceDocument(input: CreateWorkspaceDocumentInput!): WorkspaceDocument!
deleteWorkspaceDocument(id: ID!): MutationWithIdResult!
updateCommunicationTranscript(id: ID!, transcript: [String!]!): MutationWithIdResult!
updateFeedDecision(id: ID!, decision: String!, decisionNote: String): MutationWithIdResult!
setContactInboxHidden(inboxId: ID!, hidden: Boolean!): MutationResult!
@@ -2161,6 +2197,11 @@ export const crmGraphqlRoot = {
context: GraphQLContext,
) => createWorkspaceDocument(context.auth, args.input),
deleteWorkspaceDocument: async (
args: { id: string },
context: GraphQLContext,
) => deleteWorkspaceDocument(context.auth, args.id),
updateCommunicationTranscript: async (
args: { id: string; transcript: string[] },
context: GraphQLContext,