Skip to content

Commit c3c9f08

Browse files
authored
chore: some functions (#13)
1 parent 21a68b6 commit c3c9f08

4 files changed

Lines changed: 28 additions & 8 deletions

File tree

apps/web-app/server/api/agent/index.post.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Buffer } from 'node:buffer'
22
import { timingSafeEqual } from 'node:crypto'
33
import { Agent, OpenAIChatCompletionsModel, run } from '@openai/agents'
44
import OpenAI from 'openai'
5-
import { getPartnersByCityTool, getPartnersTool } from '~~/server/services/tools'
5+
import { getPartnersByCityTool, getPartnersBySurnameTool, getPartnersCountTool } from '~~/server/services/tools'
66

77
export default defineEventHandler(async (event) => {
88
try {
@@ -43,8 +43,9 @@ export default defineEventHandler(async (event) => {
4343
instructions: 'У тебя есть доступ к данным партнеров сети. Отвечай всегда на русском в мужском роде.',
4444
model: new OpenAIChatCompletionsModel(client, ai.model),
4545
tools: [
46-
getPartnersTool,
4746
getPartnersByCityTool,
47+
getPartnersBySurnameTool,
48+
getPartnersCountTool,
4849
],
4950
})
5051

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { repository } from '@roll-stack/database'
22

33
export default defineEventHandler(async () => {
4-
return repository.partner.list()
4+
return repository.partner.listWithData()
55
})

apps/web-app/server/services/tools.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import { tool } from '@openai/agents'
22
import { repository } from '@roll-stack/database'
33
import { z } from 'zod'
44

5-
export const getPartnersTool = tool({
6-
name: 'get_all_partners',
7-
description: 'Get all partners',
5+
export const getPartnersCountTool = tool({
6+
name: 'get_partners_count',
7+
description: 'Get the number of partners',
88
needsApproval: false,
99
parameters: z.object({}),
1010
execute: async () => {
11-
return repository.partner.list()
11+
const partners = await repository.partner.list()
12+
return partners.length
1213
},
1314
})
1415

@@ -21,7 +22,19 @@ export const getPartnersByCityTool = tool({
2122
}),
2223
execute: async ({ city }) => {
2324
const partners = await repository.partner.list()
24-
2525
return partners.filter((partner) => partner.city?.toLowerCase().includes(city.toLowerCase()))
2626
},
2727
})
28+
29+
export const getPartnersBySurnameTool = tool({
30+
name: 'get_partners_by_surname',
31+
description: 'Get partners filtered by surname using case-insensitive partial matching',
32+
needsApproval: false,
33+
parameters: z.object({
34+
surname: z.string(),
35+
}),
36+
execute: async ({ surname }) => {
37+
const partners = await repository.partner.list()
38+
return partners.filter((partner) => partner.surname?.toLowerCase().includes(surname.toLowerCase()))
39+
},
40+
})

packages/database/src/repository/partner.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ export class Partner {
1414
}
1515

1616
static async list() {
17+
return useDatabase().query.partners.findMany({
18+
where: (partners, { eq }) => eq(partners.isActive, true),
19+
})
20+
}
21+
22+
static async listWithData() {
1723
return useDatabase().query.partners.findMany({
1824
where: (partners, { eq }) => eq(partners.isActive, true),
1925
with: {

0 commit comments

Comments
 (0)