import { useRouter } from 'next/router' import { includes } from 'lodash' import { Button, Dropdown, IconEdit3, IconFileText, IconMoreVertical, IconTrash } from 'ui' import { observer } from 'mobx-react-lite' import * as Tooltip from '@radix-ui/react-tooltip' import { PermissionAction } from '@supabase/shared-types/out/constants' import { checkPermissions, useStore } from 'hooks' import { EXCLUDED_SCHEMAS } from 'lib/constants/schemas' import Table from 'components/to-be-cleaned/Table' export interface FunctionListProps { schema: string filterString: string editFunction: (fn: any) => void deleteFunction: (fn: any) => void } const FunctionList = ({ schema, filterString, editFunction = () => {}, deleteFunction = () => {}, }: FunctionListProps) => { const router = useRouter() const { ui, meta } = useStore() const functions = meta.functions.list((fn: any) => !EXCLUDED_SCHEMAS.includes(fn.schema)) const filteredFunctions = functions.filter((x: any) => includes(x.name.toLowerCase(), filterString.toLowerCase()) ) const _functions = filteredFunctions.filter((x) => x.schema == schema) const isApiDocumentAvailable = schema == 'public' const projectRef = ui.selectedProject?.ref const canUpdateFunctions = checkPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, 'functions') function onEdit(func: any) { editFunction(func) } function onDelete(func: any) { deleteFunction(func) } return ( <> {_functions.map((x) => (
{x.name}
{x.argument_types}
{x.return_type}