import type { PostgresPublication } from '@supabase/postgres-meta' import { PermissionAction } from '@supabase/shared-types/out/constants' import { useState } from 'react' 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 InformationBox from 'components/ui/InformationBox' import { Loading } from 'components/ui/Loading' import { useTablesQuery } from 'data/tables/tables-query' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { EXCLUDED_SCHEMAS } from 'lib/constants/schemas' import { Button, Input } from 'ui' import PublicationsTableItem from './PublicationsTableItem' import { ChevronLeft, Search, AlertCircle } from 'lucide-react' interface PublicationsTablesProps { selectedPublication: PostgresPublication onSelectBack: () => void } const PublicationsTables = ({ selectedPublication, onSelectBack }: PublicationsTablesProps) => { const { project } = useProjectContext() const [filterString, setFilterString] = useState('') const canUpdatePublications = useCheckPermissions( PermissionAction.TENANT_SQL_ADMIN_WRITE, 'publications' ) const { data: tables, isLoading, isSuccess, isError, error, } = useTablesQuery( { projectRef: project?.ref, connectionString: project?.connectionString, }, { select(tables) { return tables.filter((table) => filterString.length === 0 ? !EXCLUDED_SCHEMAS.includes(table.schema) : !EXCLUDED_SCHEMAS.includes(table.schema) && table.name.includes(filterString) ) }, } ) return ( <>
{!canUpdatePublications && (
} title="You need additional permissions to update database replications" />
)}
{isLoading && (
)} {isError && } {isSuccess && (tables.length === 0 ? ( ) : (
Name, Schema, Description , {/* Temporarily disable All tables toggle for publications. See https://github.com/supabase/supabase/pull/7233.
All Tables
toggleReplicationForAllTables(publication, enabledForAllTables)} />
*/}
, ]} body={tables.map((table) => ( ))} /> ))} ) } export default PublicationsTables