1
1
import { defineCachedCorsEventHandler } from '~~/server/utils/cached-cors'
2
- import { getStoredMetadataForIssue , storageKeyForIssue , type IssueMetadata } from '~~/server/utils/embeddings'
2
+ import { storageKeyForIssue } from '~~/server/utils/embeddings'
3
+ import type { IssueMetadata } from '~~/server/utils/embeddings'
3
4
4
5
export default defineCachedCorsEventHandler ( async ( event ) => {
5
6
const { owner, repo, number } = getRouterParams ( event )
@@ -17,36 +18,30 @@ export default defineCachedCorsEventHandler(async (event) => {
17
18
const issueVector = await vectorize ?. getByIds ( [ storageKeyForIssue ( owner , repo , number ) ] )
18
19
const results = issueVector ?. [ 0 ]
19
20
? await vectorize ?. query ( issueVector [ 0 ] . values , {
21
+ returnMetadata : 'all' ,
22
+ topK : 10 ,
20
23
filter : {
21
24
owner,
22
25
} ,
23
26
} )
24
27
: undefined
25
28
26
- return await Promise . all ( results ?. matches . map ( async ( m ) => {
29
+ return results ?. matches . map ( ( m ) => {
27
30
const issueMetadata = m . metadata as IssueMetadata
28
- const groups = m . id . match ( / ^ i s s u e : (?< owner > [ ^ : ] + ) : (?< repo > [ ^ : ] + ) : (?< number > \d + ) $ / ) ?. groups
29
- if ( ! groups ) {
30
- console . error ( 'Invalid match' , m . id )
31
- return
32
- }
33
-
34
- const issue = await getStoredMetadataForIssue ( groups . owner ! , groups . repo ! , parseInt ( groups . number ! ) )
35
31
36
32
return {
37
- ...issue ,
38
- labels : issue ?. labels ?. map ( ( l ) => {
33
+ ...issueMetadata ,
34
+ labels : issueMetadata ?. labels ?. map ( ( l ) => {
39
35
try {
40
36
return l . startsWith ( '{' ) ? JSON . parse ( l ) as { name : string , color ?: string } : l
41
37
}
42
38
catch {
43
39
return l
44
40
}
45
41
} ) ,
46
- ...issueMetadata ,
47
42
score : m . score ,
48
43
}
49
- } ) || [ ] )
44
+ } ) || [ ]
50
45
} , {
51
46
swr : true ,
52
47
getKey ( event ) {
0 commit comments