Skip to content

Commit e207ad2

Browse files
committed
ack PR comment
1 parent f5640b2 commit e207ad2

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

  • apps/sim/app/api/knowledge/[id]/connectors

apps/sim/app/api/knowledge/[id]/connectors/route.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { db } from '@sim/db'
2-
import { knowledgeConnector } from '@sim/db/schema'
2+
import { knowledgeBaseTagDefinitions, knowledgeConnector } from '@sim/db/schema'
33
import { createLogger } from '@sim/logger'
44
import { and, desc, eq, isNull } from 'drizzle-orm'
55
import { type NextRequest, NextResponse } from 'next/server'
66
import { z } from 'zod'
77
import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid'
88
import { generateRequestId } from '@/lib/core/utils/request'
99
import { dispatchSync } from '@/lib/knowledge/connectors/sync-engine'
10-
import { createTagDefinition, getNextAvailableSlot } from '@/lib/knowledge/tags/service'
10+
import { getSlotsForFieldType } from '@/lib/knowledge/constants'
11+
import { createTagDefinition } from '@/lib/knowledge/tags/service'
1112
import { getCredential } from '@/app/api/auth/oauth/utils'
1213
import { checkKnowledgeBaseAccess, checkKnowledgeBaseWriteAccess } from '@/app/api/knowledge/utils'
1314
import { CONNECTOR_REGISTRY } from '@/connectors/registry'
@@ -123,15 +124,25 @@ export async function POST(request: NextRequest, { params }: { params: Promise<{
123124
const disabledIds = new Set((sourceConfig.disabledTagIds as string[] | undefined) ?? [])
124125
const enabledDefs = connectorConfig.tagDefinitions.filter((td) => !disabledIds.has(td.id))
125126

127+
const existingDefs = await db
128+
.select({ tagSlot: knowledgeBaseTagDefinitions.tagSlot })
129+
.from(knowledgeBaseTagDefinitions)
130+
.where(eq(knowledgeBaseTagDefinitions.knowledgeBaseId, knowledgeBaseId))
131+
132+
const usedSlots = new Set<string>(existingDefs.map((d) => d.tagSlot))
133+
126134
const skippedTags: string[] = []
127135
for (const td of enabledDefs) {
128-
const slot = await getNextAvailableSlot(knowledgeBaseId, td.fieldType)
129-
if (!slot) {
136+
const slots = getSlotsForFieldType(td.fieldType)
137+
const available = slots.find((s) => !usedSlots.has(s))
138+
139+
if (!available) {
130140
skippedTags.push(td.displayName)
131141
logger.warn(`[${requestId}] No available ${td.fieldType} slots for "${td.displayName}"`)
132142
continue
133143
}
134-
tagSlotMapping[td.id] = slot
144+
usedSlots.add(available)
145+
tagSlotMapping[td.id] = available
135146
}
136147

137148
if (skippedTags.length > 0 && Object.keys(tagSlotMapping).length === 0) {

0 commit comments

Comments
 (0)