| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { tool } from 'ai'
- import { z } from 'zod'
- import { getDatabasePolicies } from '@/data/database-policies/database-policies-query'
- export const getSchemaTools = ({
- projectRef,
- connectionString,
- authorization,
- }: {
- projectRef: string
- connectionString: string
- authorization?: string
- }) => ({
- list_policies: tool({
- description: 'Get existing RLS policies for a given schema',
- inputSchema: z.object({
- schemas: z.array(z.string()).describe('The schema names to get the policies for'),
- }),
- execute: async ({ schemas }) => {
- const data = await getDatabasePolicies(
- {
- projectRef,
- connectionString,
- schema: schemas?.join(','),
- },
- undefined,
- {
- 'Content-Type': 'application/json',
- ...(authorization && { Authorization: authorization }),
- }
- )
- const formattedPolicies = data
- .map(
- (policy) => `
- Policy Name: "${policy.name}"
- Action: ${policy.action}
- Roles: ${policy.roles.join(', ')}
- Command: ${policy.command}
- Definition: ${policy.definition}
- ${policy.check ? `Check: ${policy.check}` : ''}
- `
- )
- .join('\n')
- return formattedPolicies
- },
- }),
- })
|