From 9bfccb5bf7e99525f09b695fff3d0f636879a4e1 Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Fri, 17 Feb 2023 17:06:30 +1100 Subject: [PATCH] fixes for feedback --- .../grid/components/header/Header.tsx | 8 ++++---- .../grid/components/menu/RowContextMenu.tsx | 7 +++---- .../SidePanelEditor/SidePanelEditor.tsx | 3 +-- .../table-rows/table-row-delete-mutation.ts | 15 ++------------- .../data/table-rows/table-rows-count-query.ts | 18 ++---------------- studio/data/table-rows/utils.ts | 14 +++++++++++++- 6 files changed, 25 insertions(+), 40 deletions(-) diff --git a/studio/components/grid/components/header/Header.tsx b/studio/components/grid/components/header/Header.tsx index 63262c5740b..ce73ee22e77 100644 --- a/studio/components/grid/components/header/Header.tsx +++ b/studio/components/grid/components/header/Header.tsx @@ -222,14 +222,14 @@ const RowHeader = ({ table, sorts, filters }: RowHeaderProps) => { try { if (filters.length === 0) { await truncateRows({ - projectRef: project?.ref, - connectionString: project?.connectionString, + projectRef: project.ref, + connectionString: project.connectionString, table, }) } else { await deleteAllRows({ - projectRef: project?.ref, - connectionString: project?.connectionString, + projectRef: project.ref, + connectionString: project.connectionString, table, filters, }) diff --git a/studio/components/grid/components/menu/RowContextMenu.tsx b/studio/components/grid/components/menu/RowContextMenu.tsx index 230b85756c0..1bdd6ccd19c 100644 --- a/studio/components/grid/components/menu/RowContextMenu.tsx +++ b/studio/components/grid/components/menu/RowContextMenu.tsx @@ -28,13 +28,12 @@ const RowContextMenu = ({ table }: RowContextMenuProps) => { const { props } = p const { rowIdx } = props const row = state.rows[rowIdx] - if (!row) return - if (!project) return + if (!row || !project) return try { await deleteRows({ - projectRef: project?.ref, - connectionString: project?.connectionString, + projectRef: project.ref, + connectionString: project.connectionString, table, rows: [row], }) diff --git a/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx b/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx index 4ce87340475..93411f0a8cf 100644 --- a/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx +++ b/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx @@ -67,8 +67,7 @@ const SidePanelEditor: FC = ({ onComplete: Function ) => { if (!project || selectedTable === undefined) { - // TODO(alaister): should we have an error state here? - return + return console.error('no project or table selected') } let saveRowError = false diff --git a/studio/data/table-rows/table-row-delete-mutation.ts b/studio/data/table-rows/table-row-delete-mutation.ts index c1e006cd57a..ec660bf90e2 100644 --- a/studio/data/table-rows/table-row-delete-mutation.ts +++ b/studio/data/table-rows/table-row-delete-mutation.ts @@ -1,8 +1,8 @@ import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query' -import { Query, ServiceError, SupaRow, SupaTable } from 'components/grid' -import { ERROR_PRIMARY_KEY_NOTFOUND } from 'components/grid/constants' +import { Query, SupaRow, SupaTable } from 'components/grid' import { executeSql } from 'data/sql/execute-sql-query' import { sqlKeys } from 'data/sql/keys' +import { getPrimaryKeys } from './utils' export type TableRowDeleteVariables = { projectRef: string @@ -68,14 +68,3 @@ export const useTableRowDeleteMutation = ({ } ) } - -function getPrimaryKeys({ table }: { table: SupaTable }): { - primaryKeys?: string[] - error?: ServiceError -} { - const pkColumns = table.columns.filter((x) => x.isPrimaryKey) - if (!pkColumns || pkColumns.length == 0) { - return { error: { message: ERROR_PRIMARY_KEY_NOTFOUND } } - } - return { primaryKeys: pkColumns.map((x) => x.name) } -} diff --git a/studio/data/table-rows/table-rows-count-query.ts b/studio/data/table-rows/table-rows-count-query.ts index 1833a225487..265aa2c4bf5 100644 --- a/studio/data/table-rows/table-rows-count-query.ts +++ b/studio/data/table-rows/table-rows-count-query.ts @@ -1,7 +1,7 @@ import { QueryKey, UseQueryOptions } from '@tanstack/react-query' -import { Filter, Query, SupaRow, SupaTable } from 'components/grid' -import { isNumericalColumn } from 'components/grid/utils' +import { Filter, Query, SupaTable } from 'components/grid' import { ExecuteSqlData, useExecuteSqlPrefetch, useExecuteSqlQuery } from '../sql/execute-sql-query' +import { formatFilterValue } from './utils' type GetTableRowsCountArgs = { table?: SupaTable @@ -83,17 +83,3 @@ export const useTableRowsCountPrefetch = ({ ], }) } - -/** - * temporary fix until we implement a better filter UI - * which validate input value base on the column type - */ -function formatFilterValue(table: SupaTable, filter: Filter) { - const column = table.columns.find((x) => x.name == filter.column) - if (column && isNumericalColumn(column.format)) { - const numberValue = Number(filter.value) - if (Number.isNaN(numberValue)) return filter.value - else return Number(filter.value) - } - return filter.value -} diff --git a/studio/data/table-rows/utils.ts b/studio/data/table-rows/utils.ts index 33dd23bf728..b12295252d7 100644 --- a/studio/data/table-rows/utils.ts +++ b/studio/data/table-rows/utils.ts @@ -1,4 +1,5 @@ -import { Filter, SupaTable } from 'components/grid' +import { Filter, ServiceError, SupaTable } from 'components/grid' +import { ERROR_PRIMARY_KEY_NOTFOUND } from 'components/grid/constants' import { isNumericalColumn } from 'components/grid/utils' /** @@ -14,3 +15,14 @@ export function formatFilterValue(table: SupaTable, filter: Filter) { } return filter.value } + +export function getPrimaryKeys({ table }: { table: SupaTable }): { + primaryKeys?: string[] + error?: ServiceError +} { + const pkColumns = table.columns.filter((x) => x.isPrimaryKey) + if (!pkColumns || pkColumns.length == 0) { + return { error: { message: ERROR_PRIMARY_KEY_NOTFOUND } } + } + return { primaryKeys: pkColumns.map((x) => x.name) } +}