( knowledgeBaseId: string )
| 441 | * Get a single knowledge base by ID |
| 442 | */ |
| 443 | export async function getKnowledgeBaseById( |
| 444 | knowledgeBaseId: string |
| 445 | ): Promise<KnowledgeBaseWithCounts | null> { |
| 446 | const result = await db |
| 447 | .select({ |
| 448 | id: knowledgeBase.id, |
| 449 | userId: knowledgeBase.userId, |
| 450 | name: knowledgeBase.name, |
| 451 | description: knowledgeBase.description, |
| 452 | tokenCount: sql<number>`COALESCE(SUM(${document.tokenCount}), 0)`.mapWith(Number), |
| 453 | embeddingModel: knowledgeBase.embeddingModel, |
| 454 | embeddingDimension: knowledgeBase.embeddingDimension, |
| 455 | chunkingConfig: knowledgeBase.chunkingConfig, |
| 456 | createdAt: knowledgeBase.createdAt, |
| 457 | updatedAt: knowledgeBase.updatedAt, |
| 458 | deletedAt: knowledgeBase.deletedAt, |
| 459 | workspaceId: knowledgeBase.workspaceId, |
| 460 | docCount: count(document.id), |
| 461 | }) |
| 462 | .from(knowledgeBase) |
| 463 | .leftJoin( |
| 464 | document, |
| 465 | and( |
| 466 | eq(document.knowledgeBaseId, knowledgeBase.id), |
| 467 | eq(document.userExcluded, false), |
| 468 | isNull(document.archivedAt), |
| 469 | isNull(document.deletedAt) |
| 470 | ) |
| 471 | ) |
| 472 | .where(and(eq(knowledgeBase.id, knowledgeBaseId), isNull(knowledgeBase.deletedAt))) |
| 473 | .groupBy(knowledgeBase.id) |
| 474 | .limit(1) |
| 475 | |
| 476 | if (result.length === 0) { |
| 477 | return null |
| 478 | } |
| 479 | |
| 480 | return { |
| 481 | ...result[0], |
| 482 | chunkingConfig: result[0].chunkingConfig as ChunkingConfig, |
| 483 | docCount: Number(result[0].docCount), |
| 484 | connectorTypes: [], |
| 485 | } |
| 486 | } |
| 487 | |
| 488 | /** |
| 489 | * Delete a knowledge base (soft delete) |
no test coverage detected