From 06acd4a89d785cbc4a8a005ec84157e70c9a8a9e Mon Sep 17 00:00:00 2001 From: avallete Date: Wed, 2 Oct 2024 17:04:39 +0200 Subject: [PATCH] fix(studio): views filterings on local studio experience --- .../api/pg-meta/[ref]/column-privileges.ts | 3 ++- .../studio/pages/api/pg-meta/[ref]/columns.ts | 3 ++- .../pages/api/pg-meta/[ref]/foreign-tables.ts | 23 ++++--------------- .../api/pg-meta/[ref]/materialized-views.ts | 23 ++++--------------- .../api/pg-meta/[ref]/table-privileges.ts | 3 ++- apps/studio/pages/api/pg-meta/[ref]/tables.ts | 18 +++++++++++---- apps/studio/pages/api/pg-meta/[ref]/views.ts | 23 ++++--------------- 7 files changed, 31 insertions(+), 65 deletions(-) diff --git a/apps/studio/pages/api/pg-meta/[ref]/column-privileges.ts b/apps/studio/pages/api/pg-meta/[ref]/column-privileges.ts index c2d32435975..15306ddcc94 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/column-privileges.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/column-privileges.ts @@ -4,6 +4,7 @@ import { constructHeaders } from 'lib/api/apiHelpers' import apiWrapper from 'lib/api/apiWrapper' import { delete_, get, post } from 'lib/common/fetch' import { PG_META_URL } from 'lib/constants' +import { getPgMetaRedirectUrl } from './tables' export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler, { withAuth: true }) @@ -25,7 +26,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { const headers = constructHeaders(req.headers) - let response = await get(`${PG_META_URL}/column-privileges`, { + let response = await get(getPgMetaRedirectUrl(req, 'column-privileges'), { headers, }) if (response.error) { diff --git a/apps/studio/pages/api/pg-meta/[ref]/columns.ts b/apps/studio/pages/api/pg-meta/[ref]/columns.ts index 5d35b3bd856..7b131a24d0d 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/columns.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/columns.ts @@ -3,6 +3,7 @@ import apiWrapper from 'lib/api/apiWrapper' import { constructHeaders, toSnakeCase } from 'lib/api/apiHelpers' import { PG_META_URL } from 'lib/constants' import { delete_, get, patch, post } from 'lib/common/fetch' +import { getPgMetaRedirectUrl } from './tables' export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler, { withAuth: true }) @@ -27,7 +28,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { const headers = constructHeaders(req.headers) - let response = await get(`${PG_META_URL}/columns`, { + let response = await get(getPgMetaRedirectUrl(req, 'columns'), { headers, }) if (response.error) { diff --git a/apps/studio/pages/api/pg-meta/[ref]/foreign-tables.ts b/apps/studio/pages/api/pg-meta/[ref]/foreign-tables.ts index 77d47d49873..e2459fb0dba 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/foreign-tables.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/foreign-tables.ts @@ -4,6 +4,7 @@ import apiWrapper from 'lib/api/apiWrapper' import { get } from 'lib/common/fetch' import { constructHeaders } from 'lib/api/apiHelpers' import { PG_META_URL } from 'lib/constants' +import { getPgMetaRedirectUrl } from './tables' export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler, { withAuth: true }) @@ -23,25 +24,9 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { const headers = constructHeaders(req.headers) - - const query = Object.entries(req.query).reduce((query, entry) => { - const [key, value] = entry - if (Array.isArray(value)) { - for (const v of value) { - query.append(key, v) - } - } else if (value) { - query.set(key, value) - } - return query - }, new URLSearchParams()) - - let url = `${PG_META_URL}/foreign-tables` - if (Object.keys(req.query).length > 0) { - url += `?${query}` - } - - const response = await get(url, { headers }) + let response = await get(getPgMetaRedirectUrl(req, 'foreign-tables'), { + headers, + }) if (response.error) { return res.status(400).json({ error: response.error }) } diff --git a/apps/studio/pages/api/pg-meta/[ref]/materialized-views.ts b/apps/studio/pages/api/pg-meta/[ref]/materialized-views.ts index 53e7c450d20..d0ecfac3512 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/materialized-views.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/materialized-views.ts @@ -4,6 +4,7 @@ import apiWrapper from 'lib/api/apiWrapper' import { get } from 'lib/common/fetch' import { constructHeaders } from 'lib/api/apiHelpers' import { PG_META_URL } from 'lib/constants' +import { getPgMetaRedirectUrl } from './tables' export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler, { withAuth: true }) @@ -23,25 +24,9 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { const headers = constructHeaders(req.headers) - - const query = Object.entries(req.query).reduce((query, entry) => { - const [key, value] = entry - if (Array.isArray(value)) { - for (const v of value) { - query.append(key, v) - } - } else if (value) { - query.set(key, value) - } - return query - }, new URLSearchParams()) - - let url = `${PG_META_URL}/materialized-views` - if (Object.keys(req.query).length > 0) { - url += `?${query}` - } - - const response = await get(url, { headers }) + let response = await get(getPgMetaRedirectUrl(req, 'materialized-views'), { + headers, + }) if (response.error) { return res.status(400).json({ error: response.error }) } diff --git a/apps/studio/pages/api/pg-meta/[ref]/table-privileges.ts b/apps/studio/pages/api/pg-meta/[ref]/table-privileges.ts index 4f5eed608df..13f805dbbaa 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/table-privileges.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/table-privileges.ts @@ -4,6 +4,7 @@ import { constructHeaders } from 'lib/api/apiHelpers' import apiWrapper from 'lib/api/apiWrapper' import { delete_, get, post } from 'lib/common/fetch' import { PG_META_URL } from 'lib/constants' +import { getPgMetaRedirectUrl } from './tables' export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler, { withAuth: true }) @@ -25,7 +26,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { const headers = constructHeaders(req.headers) - let response = await get(`${PG_META_URL}/table-privileges`, { + let response = await get(getPgMetaRedirectUrl(req, 'table-privileges'), { headers, }) if (response.error) { diff --git a/apps/studio/pages/api/pg-meta/[ref]/tables.ts b/apps/studio/pages/api/pg-meta/[ref]/tables.ts index 90178926647..d4db8c40067 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/tables.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/tables.ts @@ -26,9 +26,12 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { } } -const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { - const headers = constructHeaders(req.headers) - +/** + * Construct the pgMeta redirection url passing along the filtering query params + * @param req + * @param endpoint + */ +export function getPgMetaRedirectUrl(req: NextApiRequest, endpoint: string) { const query = Object.entries(req.query).reduce((query, entry) => { const [key, value] = entry if (Array.isArray(value)) { @@ -41,12 +44,17 @@ const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { return query }, new URLSearchParams()) - let url = `${PG_META_URL}/tables` + let url = `${PG_META_URL}/${endpoint}` if (Object.keys(req.query).length > 0) { url += `?${query}` } + return url +} - const response = await get(url, { headers }) +const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { + const headers = constructHeaders(req.headers) + + const response = await get(getPgMetaRedirectUrl(req, 'tables'), { headers }) if (response.error) { return res.status(400).json({ error: response.error }) } diff --git a/apps/studio/pages/api/pg-meta/[ref]/views.ts b/apps/studio/pages/api/pg-meta/[ref]/views.ts index 32a3a8b6854..636dd93af9c 100644 --- a/apps/studio/pages/api/pg-meta/[ref]/views.ts +++ b/apps/studio/pages/api/pg-meta/[ref]/views.ts @@ -4,6 +4,7 @@ import apiWrapper from 'lib/api/apiWrapper' import { get } from 'lib/common/fetch' import { constructHeaders } from 'lib/api/apiHelpers' import { PG_META_URL } from 'lib/constants' +import { getPgMetaRedirectUrl } from './tables' export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler, { withAuth: true }) @@ -23,25 +24,9 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => { const headers = constructHeaders(req.headers) - - const query = Object.entries(req.query).reduce((query, entry) => { - const [key, value] = entry - if (Array.isArray(value)) { - for (const v of value) { - query.append(key, v) - } - } else if (value) { - query.set(key, value) - } - return query - }, new URLSearchParams()) - - let url = `${PG_META_URL}/views` - if (Object.keys(req.query).length > 0) { - url += `?${query}` - } - - const response = await get(url, { headers }) + let response = await get(getPgMetaRedirectUrl(req, 'views'), { + headers, + }) if (response.error) { return res.status(400).json({ error: response.error }) }