import { PermissionAction } from '@supabase/shared-types/out/constants' import { noop } from 'lodash' import { ChevronLeft, Edit, MoreVertical, Plus, Search, Trash } from 'lucide-react' import Link from 'next/link' import { useState } from 'react' import { useParams } from 'common' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import NoSearchResults from 'components/to-be-cleaned/NoSearchResults' import Table from 'components/to-be-cleaned/Table' import AlertError from 'components/ui/AlertError' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader' import { useTableEditorQuery } from 'data/table-editor/table-editor-query' import { isTableLike } from 'data/table-editor/table-editor-types' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { PROTECTED_SCHEMAS } from 'lib/constants/schemas' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Input, Tooltip, TooltipContent, TooltipTrigger, } from 'ui' import ProtectedSchemaWarning from '../ProtectedSchemaWarning' interface ColumnListProps { onAddColumn: () => void onEditColumn: (column: any) => void onDeleteColumn: (column: any) => void } const ColumnList = ({ onAddColumn = noop, onEditColumn = noop, onDeleteColumn = noop, }: ColumnListProps) => { const { id: _id, ref } = useParams() const id = _id ? Number(_id) : undefined const { project } = useProjectContext() const { data: selectedTable, error, isError, isLoading, isSuccess, } = useTableEditorQuery({ projectRef: project?.ref, connectionString: project?.connectionString, id, }) const [filterString, setFilterString] = useState('') const isTableEntity = isTableLike(selectedTable) const columns = (filterString.length === 0 ? selectedTable?.columns ?? [] : selectedTable?.columns?.filter((column) => column.name.includes(filterString))) ?? [] const isLocked = PROTECTED_SCHEMAS.includes(selectedTable?.schema ?? '') const canUpdateColumns = useCheckPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, 'columns') return (
setFilterString(e.target.value)} icon={} />
{!isLocked && isTableEntity && ( } disabled={!canUpdateColumns} onClick={() => onAddColumn()} tooltip={{ content: { side: 'bottom', text: !canUpdateColumns ? 'You need additional permissions to create columns' : undefined, }, }} > New column )}
{isLocked && } {isLoading && } {isError && ( )} {isSuccess && ( <> {columns.length === 0 ? ( ) : (
Name, Description , Data Type, Format, , ]} body={columns.map((x) => (

{x.name}

{x.comment !== null ? (

{x.comment}

) : (

No description

)}
{x.data_type} {x.format} {!isLocked && isTableEntity && (