diff --git a/components/dataproducts/access/datasetAccess.tsx b/components/dataproducts/access/datasetAccess.tsx index e152b435..6040b85e 100644 --- a/components/dataproducts/access/datasetAccess.tsx +++ b/components/dataproducts/access/datasetAccess.tsx @@ -3,10 +3,8 @@ import { useState } from 'react' import { isAfter, parseISO, format } from 'date-fns' import { useRevokeAccessMutation, - useAccessRequestsForDatasetQuery, useApproveAccessRequestMutation, useDenyAccessRequestMutation, - useDatasetAccessQuery, } from '../../../lib/schema/graphql' import { Alert, @@ -17,11 +15,11 @@ import { Table, Textarea, } from '@navikt/ds-react' -import { GET_DATASET_ACCESS } from '../../../lib/queries/access/datasetAccess' import { ExternalLink } from '@navikt/ds-icons' -import { GET_ACCESS_REQUESTS_FOR_DATASET } from '../../../lib/queries/accessRequest/accessRequestsForDataset' import { nb } from 'date-fns/locale' import ErrorMessage from '../../lib/error' +import { useGetDataset } from '../../../lib/rest/dataproducts' +import { useFetchAccessRequestsForDataset } from '../../../lib/rest/access' interface AccessEntry { subject: string @@ -239,54 +237,36 @@ const DatasetAccess = ({ id }: AccessListProps) => { const [revokeAccess] = useRevokeAccessMutation() const [approveAccessRequest] = useApproveAccessRequestMutation() const [denyAccessRequest] = useDenyAccessRequestMutation() - const datasetAccessRequestsQuery = useAccessRequestsForDatasetQuery({ - variables: { datasetID: id }, - ssr: true, - }) + const fetchAccessRequestsForDataset = useFetchAccessRequestsForDataset(id) - const datasetAccessQuery = useDatasetAccessQuery({ - variables: { id }, - ssr: true, - }) + const getDataset = useGetDataset(id) - if (datasetAccessRequestsQuery.error) - return <ErrorMessage error={datasetAccessRequestsQuery.error} /> + if (fetchAccessRequestsForDataset.error) + return <ErrorMessage error={fetchAccessRequestsForDataset.error} /> if ( - datasetAccessRequestsQuery.loading || - !datasetAccessRequestsQuery.data?.accessRequestsForDataset + fetchAccessRequestsForDataset.loading || + !fetchAccessRequestsForDataset.data?.accessRequests ) return <div /> const datasetAccessRequests = - datasetAccessRequestsQuery.data?.accessRequestsForDataset + fetchAccessRequestsForDataset.data.accessRequests as any[] - if (datasetAccessQuery.error) - return <ErrorMessage error={datasetAccessQuery.error} /> + if (getDataset.error) + return <ErrorMessage error={getDataset.error} /> if ( - datasetAccessQuery.loading || - !datasetAccessQuery.data?.dataset.access + getDataset.loading || + !getDataset?.dataset?.access ) return <div /> - const access = datasetAccessQuery.data.dataset.access + const access = getDataset.dataset.access const approveRequest = async (requestID: string) => { try { await approveAccessRequest({ variables: { id: requestID }, refetchQueries: [ - { - query: GET_DATASET_ACCESS, - variables: { - id, - }, - }, - { - query: GET_ACCESS_REQUESTS_FOR_DATASET, - variables: { - datasetID: id, - }, - }, ], }) } catch (e: any) { @@ -299,12 +279,6 @@ const DatasetAccess = ({ id }: AccessListProps) => { await denyAccessRequest({ variables: { id: requestID }, refetchQueries: [ - { - query: GET_ACCESS_REQUESTS_FOR_DATASET, - variables: { - datasetID: id, - }, - }, ], }) } catch (e: any) { @@ -319,12 +293,6 @@ const DatasetAccess = ({ id }: AccessListProps) => { await revokeAccess({ variables: { id: a.id }, refetchQueries: [ - { - query: GET_DATASET_ACCESS, - variables: { - id, - }, - }, ], }) } catch (e: any) { diff --git a/components/dataproducts/accessRequest/accessRequestsListForOwner.tsx b/components/dataproducts/accessRequest/accessRequestsListForOwner.tsx index 487885ae..cdb3f506 100644 --- a/components/dataproducts/accessRequest/accessRequestsListForOwner.tsx +++ b/components/dataproducts/accessRequest/accessRequestsListForOwner.tsx @@ -1,23 +1,21 @@ import * as React from 'react' import { useState } from 'react' import { - AccessRequestsForDatasetQuery, useApproveAccessRequestMutation, } from '../../../lib/schema/graphql' import { Alert, Button, Table } from '@navikt/ds-react' import { useRouter } from 'next/router' interface AccessListProps { - accessQuery: AccessRequestsForDatasetQuery | undefined + accessRequests: any[] } -const AccessRequestsListForOwner = ({ accessQuery }: AccessListProps) => { - const access = accessQuery?.accessRequestsForDataset +const AccessRequestsListForOwner = ({ accessRequests }: AccessListProps) => { const [approveAccessRequest] = useApproveAccessRequestMutation() const [isDenying, setIsDenying] = useState<Array<string>>([]) const [formError, setFormError] = useState('') - if (access?.length === 0) { + if (accessRequests?.length === 0) { return <>Ingen har forespurt tilgang til produktet</> } @@ -52,7 +50,7 @@ const AccessRequestsListForOwner = ({ accessQuery }: AccessListProps) => { </Table.Row> </Table.Header> <Table.Body> - {access?.map((a, i) => ( + {accessRequests?.map((a, i) => ( <Table.Row key={i}> <Table.DataCell align="right">{a.subject}</Table.DataCell> <Table.DataCell>{a.expires}</Table.DataCell> diff --git a/components/dataproducts/dataset/access/datasetAccessForOwner.tsx b/components/dataproducts/dataset/access/datasetAccessForOwner.tsx deleted file mode 100644 index e4f4085f..00000000 --- a/components/dataproducts/dataset/access/datasetAccessForOwner.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { ApolloError } from '@apollo/client' -import { Heading } from '@navikt/ds-react' -import * as React from 'react' -import { DatasetQuery } from '../../../../lib/schema/datasetQuery' -import { AccessRequestsForDatasetQuery } from '../../../../lib/schema/graphql' -import ErrorMessage from '../../../lib/error' -import LoaderSpinner from '../../../lib/spinner' -import AccessRequestsListForOwner from '../../accessRequest/accessRequestsListForOwner' - -interface AccessProps { - dataset: DatasetQuery - access: AccessRequestsForDatasetQuery | undefined - error: ApolloError | undefined - loading: boolean -} - -const DatasetAccess = ({ access, dataset, error, loading }: AccessProps) => { - if (error) return <ErrorMessage error={error} /> - if (loading || !access) return <LoaderSpinner /> - - return ( - <div className="mb-3"> - <Heading spacing level="2" size="small"> - Tilganger - </Heading> - {access.accessRequestsForDataset.length > 0 && ( - <section className="mb-3 flex flex-col"> - <Heading spacing level="3" size="small"> - Søknader - </Heading> - <AccessRequestsListForOwner accessQuery={access} /> - </section> - )} - </div> - ) -} - -export default DatasetAccess diff --git a/components/dataproducts/dataset/access/datasetAccessForUser.tsx b/components/dataproducts/dataset/access/datasetAccessForUser.tsx deleted file mode 100644 index d96c9d80..00000000 --- a/components/dataproducts/dataset/access/datasetAccessForUser.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { ApolloError } from '@apollo/client' -import { Heading } from '@navikt/ds-react' -import * as React from 'react' -import humanizeDate from '../../../../lib/humanizeDate' -import { DatasetQuery } from '../../../../lib/schema/datasetQuery' -import { AccessRequestsForDatasetQuery } from '../../../../lib/schema/graphql' -import ErrorMessage from '../../../lib/error' -import LoaderSpinner from '../../../lib/spinner' - -interface AccessProps { - dataset: DatasetQuery - access: AccessRequestsForDatasetQuery | undefined - error: ApolloError | undefined - loading: boolean -} - -const DatasetAccess = ({ dataset, access, error, loading }: AccessProps) => { - if (error) return <ErrorMessage error={error} /> - if (loading || !access) return <LoaderSpinner /> - - return ( - <div className="flex flex-col gap-3"> - {access.accessRequestsForDataset.length > 0 && ( - <section> - <Heading spacing level="3" size="small"> - Tilganger - </Heading> - <ul> - {access.accessRequestsForDataset.map((a) => ( - <li key={a.id}>{a.subject}</li> - ))} - </ul> - </section> - )} - {dataset.access.length > 0 && ( - <section> - <Heading spacing level="3" size="small"> - Aktive tilganger - </Heading> - <ul> - {dataset.access.map((a) => ( - <li key={a.id}> - {a.subject} - {a.expires ? ` (Gyldig til ${humanizeDate(a.expires)})` : ''} - </li> - ))} - </ul> - </section> - )} - </div> - ) -} - -export default DatasetAccess diff --git a/components/dataproducts/dataset/useColumnTags.tsx b/components/dataproducts/dataset/useColumnTags.tsx index 3e8eb546..561ad07d 100644 --- a/components/dataproducts/dataset/useColumnTags.tsx +++ b/components/dataproducts/dataset/useColumnTags.tsx @@ -1,8 +1,8 @@ import { useState } from 'react' import { BigQueryType, - useGcpGetColumnsQuery, } from '../../../lib/schema/graphql' +import { useFetchBQcolumns } from '../../../lib/rest/bigquery' export type PIITagType = | 'PII_DirekteIdentifiserende' @@ -53,13 +53,7 @@ export const useColumnTags = ( new Map<string, Map<string, boolean>>() ) - const columnsQuery = useGcpGetColumnsQuery({ - variables: { - projectID: projectID, - datasetID: datasetID, - tableID: tableID, - }, - }) + const fetchColumns = useFetchBQcolumns(projectID, datasetID, tableID) var tableKey = buildTableKey(projectID, datasetID, tableID) @@ -69,9 +63,9 @@ export const useColumnTags = ( datasetID && tableID && !tagsMap.has(tableKey) && - !columnsQuery.error && - !columnsQuery.loading && - columnsQuery.data + !fetchColumns.error && + !fetchColumns.loading && + fetchColumns.bqColumns ) { var newTagsMap = new Map<string, Map<string, PIITagType> | undefined>( tagsMap @@ -81,7 +75,7 @@ export const useColumnTags = ( var newPseudoColumnsMap = new Map<string, Map<string, boolean>>(pseudoColumnsMap) var pseudoColumns = new Map<string, boolean>() - columnsQuery.data.gcpGetColumns.forEach((it) =>{ + fetchColumns.bqColumns.forEach((it) =>{ tags.set( it.name, (!!tagsFromQuery[it.name] && @@ -126,11 +120,11 @@ export const useColumnTags = ( return { columns: - !columnsQuery.error && !columnsQuery.loading - ? (columnsQuery.data?.gcpGetColumns as ColumnType[]) + !fetchColumns.error && !fetchColumns.loading + ? (fetchColumns.bqColumns as ColumnType[]) : undefined, - loading: columnsQuery.loading, - error: columnsQuery.error, + loading: fetchColumns.loading, + error: fetchColumns.error, tags: tagsMap.get(tableKey), pseudoColumns: pseudoColumnsMap.get(tableKey) || new Map<string, boolean>(), annotateColumn: annotateColumn, diff --git a/components/dataproducts/datasource/dataset.tsx b/components/dataproducts/datasource/dataset.tsx index aae7eacc..679bea74 100644 --- a/components/dataproducts/datasource/dataset.tsx +++ b/components/dataproducts/datasource/dataset.tsx @@ -1,7 +1,5 @@ import { BigQueryType, - GcpGetTablesQuery, - useGcpGetTablesLazyQuery, } from '../../../lib/schema/graphql' import { TreeItem } from '@mui/x-tree-view/TreeItem'; @@ -9,11 +7,12 @@ import { TreeItem } from '@mui/x-tree-view/TreeItem'; import { Loader } from '@navikt/ds-react' import { ExpandFilled, NextFilled } from '@navikt/ds-icons' import Tabell from '../../lib/icons/tabell' +import { useFetchBQTables } from '../../../lib/rest/bigquery'; -const DataproductTableIconMap: Record<BigQueryType, () => JSX.Element> = { - materialized_view: Tabell, - table: Tabell, - view: Tabell, +const DataproductTableIconMap: Record<string, () => JSX.Element> = { + "materialized_view": Tabell, + "table": Tabell, + "view": Tabell, } export interface DataproductSourceDatasetProps { @@ -27,11 +26,7 @@ export const Dataset = ({ datasetID, active, }: DataproductSourceDatasetProps) => { - const [getTables, { data, loading, called }] = useGcpGetTablesLazyQuery({ - variables: { projectID, datasetID }, - }) - - if (active && !called) getTables() + const fetchBQTables= useFetchBQTables(projectID, datasetID) const loadingPlaceholder = ( <TreeItem @@ -48,14 +43,14 @@ export const Dataset = ({ /> ) - const datasetContents = (contents: GcpGetTablesQuery['gcpGetTables']) => - contents?.map(({ name, type }) => ( + const datasetContents = (contents: any) => + contents?.map((it: any) => ( <TreeItem className="MuiTreeView-leaf" - slots={{ endIcon: DataproductTableIconMap[type]}} - itemId={`${projectID}/${datasetID}/${name}`} - key={`${projectID}/${datasetID}/${name}`} - label={name} + slots={{ endIcon: DataproductTableIconMap[it.type as string]}} + itemId={`${projectID}/${datasetID}/${it.name}`} + key={`${projectID}/${datasetID}/${it.name}`} + label={it.name} /> )) @@ -65,10 +60,10 @@ export const Dataset = ({ itemId={`${projectID}/${datasetID}`} label={datasetID} > - {loading + {fetchBQTables.loading ? loadingPlaceholder - : data?.gcpGetTables?.length - ? datasetContents(data?.gcpGetTables) + : fetchBQTables.bqTables?.length + ? datasetContents(fetchBQTables?.bqTables) : emptyPlaceholder} </TreeItem> ) diff --git a/components/dataproducts/datasource/project.tsx b/components/dataproducts/datasource/project.tsx index 01a13b71..6d55f1b8 100644 --- a/components/dataproducts/datasource/project.tsx +++ b/components/dataproducts/datasource/project.tsx @@ -1,8 +1,8 @@ import { TreeItem } from '@mui/x-tree-view/TreeItem'; import { Loader } from '@navikt/ds-react' -import { useGcpGetDatasetsLazyQuery } from '../../../lib/schema/graphql' import { ExpandFilled, NextFilled } from '@navikt/ds-icons' import { Dataset } from './dataset' +import { useFetchBQDatasets } from '../../../lib/rest/bigquery'; export interface DataproductSourceDatasetProps { activePaths: string[] @@ -13,12 +13,7 @@ export const Project = ({ projectID, activePaths, }: DataproductSourceDatasetProps) => { - const [getDatasets, { data, loading, error, called }] = - useGcpGetDatasetsLazyQuery({ - variables: { projectID }, - }) - - if (!called && activePaths.includes(projectID)) getDatasets() + const fetchBQDatasets= useFetchBQDatasets(projectID) const emptyPlaceholder = ( <TreeItem @@ -41,11 +36,11 @@ export const Project = ({ itemId={projectID} label={projectID} > - {loading + {fetchBQDatasets.loading ? loadingPlaceholder - : !data?.gcpGetDatasets?.length + : !fetchBQDatasets.bqDatasets?.length ? emptyPlaceholder - : data?.gcpGetDatasets.map((datasetID) => ( + : fetchBQDatasets.bqDatasets?.map((datasetID) => ( <Dataset key={datasetID} projectID={projectID} diff --git a/components/dataproducts/datasource/projectTables.tsx b/components/dataproducts/datasource/projectTables.tsx deleted file mode 100644 index 4e62e921..00000000 --- a/components/dataproducts/datasource/projectTables.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { useGcpGetAllTablesInProjectQuery } from '../../../lib/schema/graphql' - -interface ProjectV2Props { - projectID: string -} - -const ProjectTables = ({ projectID }: ProjectV2Props) => { - const { data, loading, error } = useGcpGetAllTablesInProjectQuery({ - variables: { projectID }, - }) - - return ( - <> - {data?.gcpGetAllTablesInProject.map((table) => ( - <option key={projectID + '.' + table.dataset + '.' + table.table}> - {projectID + '.' + table.dataset + '.' + table.table} - </option> - ))} - </> - ) -} - -export default ProjectTables diff --git a/lib/queries/access/datasetAccess.ts b/lib/queries/access/datasetAccess.ts deleted file mode 100644 index bd172b97..00000000 --- a/lib/queries/access/datasetAccess.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GET_DATASET_ACCESS = gql` - query DatasetAccess($id: ID!) { - dataset(id: $id) { - id - name - pii - owner { - group - teamkatalogenURL - } - access { - id - subject - granter - expires - created - revoked - accessRequestID - } - } - } -` diff --git a/lib/queries/accessRequest/accessRequest.ts b/lib/queries/accessRequest/accessRequest.ts deleted file mode 100644 index 8cc42139..00000000 --- a/lib/queries/accessRequest/accessRequest.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GET_ACCESS_REQUEST = gql` - query accessRequest($id: ID!) { - accessRequest(id: $id) { - id - datasetID - subject - subjectType - granter - status - created - expires - owner - polly { - id - name - externalID - url - } - reason - } - } -` diff --git a/lib/queries/accessRequest/accessRequestsForDataset.ts b/lib/queries/accessRequest/accessRequestsForDataset.ts deleted file mode 100644 index 48827574..00000000 --- a/lib/queries/accessRequest/accessRequestsForDataset.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GET_ACCESS_REQUESTS_FOR_DATASET = gql` - query accessRequestsForDataset($datasetID: ID!) { - accessRequestsForDataset(datasetID: $datasetID) { - id - subject - subjectType - owner - created - expires - owner - polly { - name - externalID - url - } - } - } -` diff --git a/lib/queries/dataproduct/dataproductSummary.ts b/lib/queries/dataproduct/dataproductSummary.ts deleted file mode 100644 index 97f5d79d..00000000 --- a/lib/queries/dataproduct/dataproductSummary.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GET_DATAPRODUCT_SUMMARY = gql` - query DataproductSummary($id: ID!) { - dataproduct(id: $id) { - id - lastModified - name - description - created - slug - keywords - datasets { - datasource { - type: __typename - } - } - } - } -` diff --git a/lib/queries/dataproduct/dataproducts.ts b/lib/queries/dataproduct/dataproducts.ts deleted file mode 100644 index 2b1cf81e..00000000 --- a/lib/queries/dataproduct/dataproducts.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GET_METABASE_PRODUCTS = gql` - query MetabaseProudcts { - dataproducts(service: metabase) { - id - name - keywords - slug - owner { - group - teamkatalogenURL - teamContact - } - } - } -` diff --git a/lib/queries/dataproduct/gcpGetAllTablesInProject.ts b/lib/queries/dataproduct/gcpGetAllTablesInProject.ts deleted file mode 100644 index f89f1076..00000000 --- a/lib/queries/dataproduct/gcpGetAllTablesInProject.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GCP_GET_TABLES_IN_PROJECT = gql` - query gcpGetAllTablesInProject($projectID: String!) { - gcpGetAllTablesInProject(projectID: $projectID) { - table - dataset - } - } -` diff --git a/lib/queries/dataproduct/gcpGetColumns.ts b/lib/queries/dataproduct/gcpGetColumns.ts deleted file mode 100644 index dd01ea90..00000000 --- a/lib/queries/dataproduct/gcpGetColumns.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GCP_GET_TABLES = gql` - query gcpGetColumns($projectID: String!, $datasetID: String!, $tableID: String!) { - gcpGetColumns(projectID: $projectID, datasetID: $datasetID, tableID: $tableID) { - name - type - mode - description - } - } -` diff --git a/lib/queries/dataproduct/gcpGetDatasets.ts b/lib/queries/dataproduct/gcpGetDatasets.ts deleted file mode 100644 index e404c23e..00000000 --- a/lib/queries/dataproduct/gcpGetDatasets.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GCP_GET_DATASETS = gql` - query gcpGetDatasets($projectID: String!) { - gcpGetDatasets(projectID: $projectID) - } -` diff --git a/lib/queries/dataproduct/gcpGetTables.ts b/lib/queries/dataproduct/gcpGetTables.ts deleted file mode 100644 index e15e9d6e..00000000 --- a/lib/queries/dataproduct/gcpGetTables.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { gql } from 'graphql-tag' - -export const GCP_GET_TABLES = gql` - query gcpGetTables($projectID: String!, $datasetID: String!) { - gcpGetTables(projectID: $projectID, datasetID: $datasetID) { - name - type - description - } - } -` diff --git a/lib/rest/access.ts b/lib/rest/access.ts new file mode 100644 index 00000000..52a05cce --- /dev/null +++ b/lib/rest/access.ts @@ -0,0 +1,32 @@ +import { useEffect, useState } from "react"; +import { fetchAccessRequestUrl, fetchTemplate } from "./restApi"; + +export const fetchAccessRequests = async (datasetId: string) => { + const url = fetchAccessRequestUrl(datasetId); + return fetchTemplate(url); +} + +export const useFetchAccessRequestsForDataset = (datasetId: string)=>{ + const [data, setData] = useState<any>(undefined) + const [loading, setLoading] = useState(false) + const [error, setError] = useState(null) + + + useEffect(()=>{ + if(!datasetId) return + fetchAccessRequests(datasetId).then((res)=> res.json()) + .then((data)=> + { + setError(null) + setData(data) + }) + .catch((err)=>{ + setError(err) + setData(undefined) + }).finally(()=>{ + setLoading(false) + }) + }, [datasetId]) + + return {data, loading, error} +} \ No newline at end of file diff --git a/lib/rest/bigquery.ts b/lib/rest/bigquery.ts new file mode 100644 index 00000000..3dedd6f6 --- /dev/null +++ b/lib/rest/bigquery.ts @@ -0,0 +1,89 @@ +import { useEffect, useState } from "react" +import { fetchBQColumnsUrl, fetchBQDatasetsUrl, fetchBQTablesUrl, fetchTemplate } from "./restApi" + +export const fetchBQDatasets = async (projectID: string) => { + if(!projectID) return Promise.resolve({} as Response) + const url = fetchBQDatasetsUrl(projectID) + return fetchTemplate(url) +} + +export const fetchBQTables = async (projectID: string, datasetID: string) => { + if(!projectID || !datasetID) return Promise.resolve({} as Response) + const url = fetchBQTablesUrl(projectID, datasetID) + return fetchTemplate(url) +} + +export const fetchBQColumns = async (projectID: string, datasetID: string, tableID: string) => { + if(!projectID || !datasetID || !tableID) return Promise.resolve({} as Response) + const url = fetchBQColumnsUrl(projectID, datasetID, tableID) + return fetchTemplate(url) +} + +export const useFetchBQDatasets = (projectID: string) => { + const [datasets, setDatasets] = useState<any[]>([]) + const [loading, setLoading] = useState(false) + const [error, setError] = useState<any>(null) + + useEffect(() => { + setLoading(true) + fetchBQDatasets(projectID).then((res) => res.json()) + .then((data) => { + setError(null) + setDatasets(data.bqDatasets) + }) + .catch((err) => { + setError(err) + setDatasets([]) + }).finally(() => { + setLoading(false) + }) + }, [projectID]) + + return { bqDatasets: datasets, loading, error } +} + +export const useFetchBQTables = (projectID: string, datasetID: string) => { + const [tables, setTables] = useState<any[]>([]) + const [loading, setLoading] = useState(false) + const [error, setError] = useState<any>(null) + + useEffect(() => { + setLoading(true) + fetchBQTables(projectID, datasetID).then((res) => res.json()) + .then((data) => { + setError(null) + setTables(data.bqTables) + }) + .catch((err) => { + setError(err) + setTables([]) + }).finally(() => { + setLoading(false) + }) + }, [projectID, datasetID]) + + return { bqTables: tables, loading, error } +} + +export const useFetchBQcolumns = (projectID: string, datasetID: string, tableID: string) => { + const [columns, setColumns] = useState<any[]>([]) + const [loading, setLoading] = useState(false) + const [error, setError] = useState<any>(null) + + useEffect(() => { + setLoading(true) + fetchBQColumns(projectID, datasetID, tableID).then((res) => res.json()) + .then((data) => { + setError(null) + setColumns(data.bqColumns) + }) + .catch((err) => { + setError(err) + setColumns([]) + }).finally(() => { + setLoading(false) + }) + }, [projectID, datasetID, tableID]) + + return { bqColumns: columns, loading, error } +} \ No newline at end of file diff --git a/lib/rest/restApi.ts b/lib/rest/restApi.ts index 6ddb928b..0eb4a72e 100644 --- a/lib/rest/restApi.ts +++ b/lib/rest/restApi.ts @@ -15,6 +15,10 @@ export const getProductAreasUrl = () => `${apiUrl()}/productareas` export const getProductAreaUrl = (id: string) => `${apiUrl()}/productareas/${id}` export const fetchUserDataUrl = () => `${apiUrl()}/userData` export const fetchKeywordsUrl = () => `${apiUrl()}/keywords` +export const fetchAccessRequestUrl = (datasetId: string) => `${apiUrl()}/accessRequests?datasetId=${datasetId}` +export const fetchBQDatasetsUrl = (projectId: string) => `${apiUrl()}/bigquery/datasets?projectId=${projectId}` +export const fetchBQTablesUrl = (projectId: string, datasetId: string) => `${apiUrl()}/bigquery/tables?projectId=${projectId}&datasetId=${datasetId}` +export const fetchBQColumnsUrl = (projectId: string, datasetId: string, tableId: string) => `${apiUrl()}/bigquery/columns?projectId=${projectId}&datasetId=${datasetId}&tableId=${tableId}` export const searchTeamKatalogenUrl = (gcpGroups?: string[]) => { const parameters = gcpGroups?.length ? gcpGroups.map(group => `gcpGroups=${encodeURIComponent(group)}`).join('&') : '' const query = parameters ? `?${parameters}` : '' diff --git a/lib/schema/graphql.ts b/lib/schema/graphql.ts index 64a50a64..0b7385db 100644 --- a/lib/schema/graphql.ts +++ b/lib/schema/graphql.ts @@ -1180,13 +1180,6 @@ export type UserInfo = { stories: Array<Story>; }; -export type DatasetAccessQueryVariables = Exact<{ - id: Scalars['ID']['input']; -}>; - - -export type DatasetAccessQuery = { __typename?: 'Query', dataset: { __typename?: 'Dataset', id: string, name: string, pii: PiiLevel, owner: { __typename?: 'Owner', group: string, teamkatalogenURL?: string | null }, access: Array<{ __typename?: 'Access', id: string, subject: string, granter: string, expires?: any | null, created: any, revoked?: any | null, accessRequestID?: string | null }> } }; - export type GrantAccessMutationVariables = Exact<{ input: NewGrant; }>; @@ -1201,20 +1194,6 @@ export type RevokeAccessMutationVariables = Exact<{ export type RevokeAccessMutation = { __typename?: 'Mutation', revokeAccessToDataset: boolean }; -export type AccessRequestQueryVariables = Exact<{ - id: Scalars['ID']['input']; -}>; - - -export type AccessRequestQuery = { __typename?: 'Query', accessRequest: { __typename?: 'AccessRequest', id: string, datasetID: string, subject: string, subjectType: SubjectType, granter?: string | null, status: AccessRequestStatus, created: any, expires?: any | null, owner: string, reason?: string | null, polly?: { __typename?: 'Polly', id: string, name: string, externalID: string, url: string } | null } }; - -export type AccessRequestsForDatasetQueryVariables = Exact<{ - datasetID: Scalars['ID']['input']; -}>; - - -export type AccessRequestsForDatasetQuery = { __typename?: 'Query', accessRequestsForDataset: Array<{ __typename?: 'AccessRequest', id: string, subject: string, subjectType: SubjectType, owner: string, created: any, expires?: any | null, polly?: { __typename?: 'Polly', name: string, externalID: string, url: string } | null }> }; - export type ApproveAccessRequestMutationVariables = Exact<{ id: Scalars['ID']['input']; }>; @@ -1258,18 +1237,6 @@ export type CreateDataproductMutationVariables = Exact<{ export type CreateDataproductMutation = { __typename?: 'Mutation', createDataproduct: { __typename?: 'Dataproduct', id: string, slug: string } }; -export type DataproductSummaryQueryVariables = Exact<{ - id: Scalars['ID']['input']; -}>; - - -export type DataproductSummaryQuery = { __typename?: 'Query', dataproduct: { __typename?: 'Dataproduct', id: string, lastModified: any, name: string, description: string, created: any, slug: string, keywords: Array<string>, datasets: Array<{ __typename?: 'Dataset', datasource: { __typename?: 'BigQuery', type: 'BigQuery' } }> } }; - -export type MetabaseProudctsQueryVariables = Exact<{ [key: string]: never; }>; - - -export type MetabaseProudctsQuery = { __typename?: 'Query', dataproducts: Array<{ __typename?: 'Dataproduct', id: string, name: string, keywords: Array<string>, slug: string, owner: { __typename?: 'Owner', group: string, teamkatalogenURL?: string | null, teamContact?: string | null } }> }; - export type DeleteDataproductMutationVariables = Exact<{ id: Scalars['ID']['input']; }>; @@ -1277,37 +1244,6 @@ export type DeleteDataproductMutationVariables = Exact<{ export type DeleteDataproductMutation = { __typename?: 'Mutation', deleteDataproduct: boolean }; -export type GcpGetAllTablesInProjectQueryVariables = Exact<{ - projectID: Scalars['String']['input']; -}>; - - -export type GcpGetAllTablesInProjectQuery = { __typename?: 'Query', gcpGetAllTablesInProject: Array<{ __typename?: 'BigQuerySource', table: string, dataset: string }> }; - -export type GcpGetColumnsQueryVariables = Exact<{ - projectID: Scalars['String']['input']; - datasetID: Scalars['String']['input']; - tableID: Scalars['String']['input']; -}>; - - -export type GcpGetColumnsQuery = { __typename?: 'Query', gcpGetColumns: Array<{ __typename?: 'TableColumn', name: string, type: string, mode: string, description: string }> }; - -export type GcpGetDatasetsQueryVariables = Exact<{ - projectID: Scalars['String']['input']; -}>; - - -export type GcpGetDatasetsQuery = { __typename?: 'Query', gcpGetDatasets: Array<string> }; - -export type GcpGetTablesQueryVariables = Exact<{ - projectID: Scalars['String']['input']; - datasetID: Scalars['String']['input']; -}>; - - -export type GcpGetTablesQuery = { __typename?: 'Query', gcpGetTables: Array<{ __typename?: 'BigQueryTable', name: string, type: BigQueryType, description: string }> }; - export type UpdateDataproductMutationVariables = Exact<{ id: Scalars['ID']['input']; input: UpdateDataproduct; @@ -1475,61 +1411,6 @@ export type UserInfoAccessableDataproductQueryVariables = Exact<{ [key: string]: export type UserInfoAccessableDataproductQuery = { __typename?: 'Query', userInfo: { __typename?: 'UserInfo', accessable: { __typename?: 'AccessibleDatasets', owned: Array<{ __typename: 'Dataset', id: string, name: string, description: string, created: any, lastModified: any, owner: { __typename?: 'Owner', group: string, teamkatalogenURL?: string | null } }>, granted: Array<{ __typename: 'Dataset', id: string, name: string, description: string, created: any, lastModified: any, owner: { __typename?: 'Owner', group: string, teamkatalogenURL?: string | null } }> } } }; -export const DatasetAccessDocument = gql` - query DatasetAccess($id: ID!) { - dataset(id: $id) { - id - name - pii - owner { - group - teamkatalogenURL - } - access { - id - subject - granter - expires - created - revoked - accessRequestID - } - } -} - `; - -/** - * __useDatasetAccessQuery__ - * - * To run a query within a React component, call `useDatasetAccessQuery` and pass it any options that fit your needs. - * When your component renders, `useDatasetAccessQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useDatasetAccessQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useDatasetAccessQuery(baseOptions: Apollo.QueryHookOptions<DatasetAccessQuery, DatasetAccessQueryVariables> & ({ variables: DatasetAccessQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<DatasetAccessQuery, DatasetAccessQueryVariables>(DatasetAccessDocument, options); - } -export function useDatasetAccessLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<DatasetAccessQuery, DatasetAccessQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<DatasetAccessQuery, DatasetAccessQueryVariables>(DatasetAccessDocument, options); - } -export function useDatasetAccessSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<DatasetAccessQuery, DatasetAccessQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<DatasetAccessQuery, DatasetAccessQueryVariables>(DatasetAccessDocument, options); - } -export type DatasetAccessQueryHookResult = ReturnType<typeof useDatasetAccessQuery>; -export type DatasetAccessLazyQueryHookResult = ReturnType<typeof useDatasetAccessLazyQuery>; -export type DatasetAccessSuspenseQueryHookResult = ReturnType<typeof useDatasetAccessSuspenseQuery>; -export type DatasetAccessQueryResult = Apollo.QueryResult<DatasetAccessQuery, DatasetAccessQueryVariables>; export const GrantAccessDocument = gql` mutation GrantAccess($input: NewGrant!) { grantAccessToDataset(input: $input) { @@ -1594,112 +1475,6 @@ export function useRevokeAccessMutation(baseOptions?: Apollo.MutationHookOptions export type RevokeAccessMutationHookResult = ReturnType<typeof useRevokeAccessMutation>; export type RevokeAccessMutationResult = Apollo.MutationResult<RevokeAccessMutation>; export type RevokeAccessMutationOptions = Apollo.BaseMutationOptions<RevokeAccessMutation, RevokeAccessMutationVariables>; -export const AccessRequestDocument = gql` - query accessRequest($id: ID!) { - accessRequest(id: $id) { - id - datasetID - subject - subjectType - granter - status - created - expires - owner - polly { - id - name - externalID - url - } - reason - } -} - `; - -/** - * __useAccessRequestQuery__ - * - * To run a query within a React component, call `useAccessRequestQuery` and pass it any options that fit your needs. - * When your component renders, `useAccessRequestQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAccessRequestQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useAccessRequestQuery(baseOptions: Apollo.QueryHookOptions<AccessRequestQuery, AccessRequestQueryVariables> & ({ variables: AccessRequestQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<AccessRequestQuery, AccessRequestQueryVariables>(AccessRequestDocument, options); - } -export function useAccessRequestLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<AccessRequestQuery, AccessRequestQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<AccessRequestQuery, AccessRequestQueryVariables>(AccessRequestDocument, options); - } -export function useAccessRequestSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<AccessRequestQuery, AccessRequestQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<AccessRequestQuery, AccessRequestQueryVariables>(AccessRequestDocument, options); - } -export type AccessRequestQueryHookResult = ReturnType<typeof useAccessRequestQuery>; -export type AccessRequestLazyQueryHookResult = ReturnType<typeof useAccessRequestLazyQuery>; -export type AccessRequestSuspenseQueryHookResult = ReturnType<typeof useAccessRequestSuspenseQuery>; -export type AccessRequestQueryResult = Apollo.QueryResult<AccessRequestQuery, AccessRequestQueryVariables>; -export const AccessRequestsForDatasetDocument = gql` - query accessRequestsForDataset($datasetID: ID!) { - accessRequestsForDataset(datasetID: $datasetID) { - id - subject - subjectType - owner - created - expires - owner - polly { - name - externalID - url - } - } -} - `; - -/** - * __useAccessRequestsForDatasetQuery__ - * - * To run a query within a React component, call `useAccessRequestsForDatasetQuery` and pass it any options that fit your needs. - * When your component renders, `useAccessRequestsForDatasetQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useAccessRequestsForDatasetQuery({ - * variables: { - * datasetID: // value for 'datasetID' - * }, - * }); - */ -export function useAccessRequestsForDatasetQuery(baseOptions: Apollo.QueryHookOptions<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables> & ({ variables: AccessRequestsForDatasetQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables>(AccessRequestsForDatasetDocument, options); - } -export function useAccessRequestsForDatasetLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables>(AccessRequestsForDatasetDocument, options); - } -export function useAccessRequestsForDatasetSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables>(AccessRequestsForDatasetDocument, options); - } -export type AccessRequestsForDatasetQueryHookResult = ReturnType<typeof useAccessRequestsForDatasetQuery>; -export type AccessRequestsForDatasetLazyQueryHookResult = ReturnType<typeof useAccessRequestsForDatasetLazyQuery>; -export type AccessRequestsForDatasetSuspenseQueryHookResult = ReturnType<typeof useAccessRequestsForDatasetSuspenseQuery>; -export type AccessRequestsForDatasetQueryResult = Apollo.QueryResult<AccessRequestsForDatasetQuery, AccessRequestsForDatasetQueryVariables>; export const ApproveAccessRequestDocument = gql` mutation approveAccessRequest($id: ID!) { approveAccessRequest(id: $id) @@ -1894,104 +1669,6 @@ export function useCreateDataproductMutation(baseOptions?: Apollo.MutationHookOp export type CreateDataproductMutationHookResult = ReturnType<typeof useCreateDataproductMutation>; export type CreateDataproductMutationResult = Apollo.MutationResult<CreateDataproductMutation>; export type CreateDataproductMutationOptions = Apollo.BaseMutationOptions<CreateDataproductMutation, CreateDataproductMutationVariables>; -export const DataproductSummaryDocument = gql` - query DataproductSummary($id: ID!) { - dataproduct(id: $id) { - id - lastModified - name - description - created - slug - keywords - datasets { - datasource { - type: __typename - } - } - } -} - `; - -/** - * __useDataproductSummaryQuery__ - * - * To run a query within a React component, call `useDataproductSummaryQuery` and pass it any options that fit your needs. - * When your component renders, `useDataproductSummaryQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useDataproductSummaryQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useDataproductSummaryQuery(baseOptions: Apollo.QueryHookOptions<DataproductSummaryQuery, DataproductSummaryQueryVariables> & ({ variables: DataproductSummaryQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<DataproductSummaryQuery, DataproductSummaryQueryVariables>(DataproductSummaryDocument, options); - } -export function useDataproductSummaryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<DataproductSummaryQuery, DataproductSummaryQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<DataproductSummaryQuery, DataproductSummaryQueryVariables>(DataproductSummaryDocument, options); - } -export function useDataproductSummarySuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<DataproductSummaryQuery, DataproductSummaryQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<DataproductSummaryQuery, DataproductSummaryQueryVariables>(DataproductSummaryDocument, options); - } -export type DataproductSummaryQueryHookResult = ReturnType<typeof useDataproductSummaryQuery>; -export type DataproductSummaryLazyQueryHookResult = ReturnType<typeof useDataproductSummaryLazyQuery>; -export type DataproductSummarySuspenseQueryHookResult = ReturnType<typeof useDataproductSummarySuspenseQuery>; -export type DataproductSummaryQueryResult = Apollo.QueryResult<DataproductSummaryQuery, DataproductSummaryQueryVariables>; -export const MetabaseProudctsDocument = gql` - query MetabaseProudcts { - dataproducts(service: metabase) { - id - name - keywords - slug - owner { - group - teamkatalogenURL - teamContact - } - } -} - `; - -/** - * __useMetabaseProudctsQuery__ - * - * To run a query within a React component, call `useMetabaseProudctsQuery` and pass it any options that fit your needs. - * When your component renders, `useMetabaseProudctsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useMetabaseProudctsQuery({ - * variables: { - * }, - * }); - */ -export function useMetabaseProudctsQuery(baseOptions?: Apollo.QueryHookOptions<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>(MetabaseProudctsDocument, options); - } -export function useMetabaseProudctsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>(MetabaseProudctsDocument, options); - } -export function useMetabaseProudctsSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>(MetabaseProudctsDocument, options); - } -export type MetabaseProudctsQueryHookResult = ReturnType<typeof useMetabaseProudctsQuery>; -export type MetabaseProudctsLazyQueryHookResult = ReturnType<typeof useMetabaseProudctsLazyQuery>; -export type MetabaseProudctsSuspenseQueryHookResult = ReturnType<typeof useMetabaseProudctsSuspenseQuery>; -export type MetabaseProudctsQueryResult = Apollo.QueryResult<MetabaseProudctsQuery, MetabaseProudctsQueryVariables>; export const DeleteDataproductDocument = gql` mutation deleteDataproduct($id: ID!) { deleteDataproduct(id: $id) @@ -2023,173 +1700,6 @@ export function useDeleteDataproductMutation(baseOptions?: Apollo.MutationHookOp export type DeleteDataproductMutationHookResult = ReturnType<typeof useDeleteDataproductMutation>; export type DeleteDataproductMutationResult = Apollo.MutationResult<DeleteDataproductMutation>; export type DeleteDataproductMutationOptions = Apollo.BaseMutationOptions<DeleteDataproductMutation, DeleteDataproductMutationVariables>; -export const GcpGetAllTablesInProjectDocument = gql` - query gcpGetAllTablesInProject($projectID: String!) { - gcpGetAllTablesInProject(projectID: $projectID) { - table - dataset - } -} - `; - -/** - * __useGcpGetAllTablesInProjectQuery__ - * - * To run a query within a React component, call `useGcpGetAllTablesInProjectQuery` and pass it any options that fit your needs. - * When your component renders, `useGcpGetAllTablesInProjectQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGcpGetAllTablesInProjectQuery({ - * variables: { - * projectID: // value for 'projectID' - * }, - * }); - */ -export function useGcpGetAllTablesInProjectQuery(baseOptions: Apollo.QueryHookOptions<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables> & ({ variables: GcpGetAllTablesInProjectQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables>(GcpGetAllTablesInProjectDocument, options); - } -export function useGcpGetAllTablesInProjectLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables>(GcpGetAllTablesInProjectDocument, options); - } -export function useGcpGetAllTablesInProjectSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables>(GcpGetAllTablesInProjectDocument, options); - } -export type GcpGetAllTablesInProjectQueryHookResult = ReturnType<typeof useGcpGetAllTablesInProjectQuery>; -export type GcpGetAllTablesInProjectLazyQueryHookResult = ReturnType<typeof useGcpGetAllTablesInProjectLazyQuery>; -export type GcpGetAllTablesInProjectSuspenseQueryHookResult = ReturnType<typeof useGcpGetAllTablesInProjectSuspenseQuery>; -export type GcpGetAllTablesInProjectQueryResult = Apollo.QueryResult<GcpGetAllTablesInProjectQuery, GcpGetAllTablesInProjectQueryVariables>; -export const GcpGetColumnsDocument = gql` - query gcpGetColumns($projectID: String!, $datasetID: String!, $tableID: String!) { - gcpGetColumns(projectID: $projectID, datasetID: $datasetID, tableID: $tableID) { - name - type - mode - description - } -} - `; - -/** - * __useGcpGetColumnsQuery__ - * - * To run a query within a React component, call `useGcpGetColumnsQuery` and pass it any options that fit your needs. - * When your component renders, `useGcpGetColumnsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGcpGetColumnsQuery({ - * variables: { - * projectID: // value for 'projectID' - * datasetID: // value for 'datasetID' - * tableID: // value for 'tableID' - * }, - * }); - */ -export function useGcpGetColumnsQuery(baseOptions: Apollo.QueryHookOptions<GcpGetColumnsQuery, GcpGetColumnsQueryVariables> & ({ variables: GcpGetColumnsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<GcpGetColumnsQuery, GcpGetColumnsQueryVariables>(GcpGetColumnsDocument, options); - } -export function useGcpGetColumnsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GcpGetColumnsQuery, GcpGetColumnsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<GcpGetColumnsQuery, GcpGetColumnsQueryVariables>(GcpGetColumnsDocument, options); - } -export function useGcpGetColumnsSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<GcpGetColumnsQuery, GcpGetColumnsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<GcpGetColumnsQuery, GcpGetColumnsQueryVariables>(GcpGetColumnsDocument, options); - } -export type GcpGetColumnsQueryHookResult = ReturnType<typeof useGcpGetColumnsQuery>; -export type GcpGetColumnsLazyQueryHookResult = ReturnType<typeof useGcpGetColumnsLazyQuery>; -export type GcpGetColumnsSuspenseQueryHookResult = ReturnType<typeof useGcpGetColumnsSuspenseQuery>; -export type GcpGetColumnsQueryResult = Apollo.QueryResult<GcpGetColumnsQuery, GcpGetColumnsQueryVariables>; -export const GcpGetDatasetsDocument = gql` - query gcpGetDatasets($projectID: String!) { - gcpGetDatasets(projectID: $projectID) -} - `; - -/** - * __useGcpGetDatasetsQuery__ - * - * To run a query within a React component, call `useGcpGetDatasetsQuery` and pass it any options that fit your needs. - * When your component renders, `useGcpGetDatasetsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGcpGetDatasetsQuery({ - * variables: { - * projectID: // value for 'projectID' - * }, - * }); - */ -export function useGcpGetDatasetsQuery(baseOptions: Apollo.QueryHookOptions<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables> & ({ variables: GcpGetDatasetsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables>(GcpGetDatasetsDocument, options); - } -export function useGcpGetDatasetsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables>(GcpGetDatasetsDocument, options); - } -export function useGcpGetDatasetsSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables>(GcpGetDatasetsDocument, options); - } -export type GcpGetDatasetsQueryHookResult = ReturnType<typeof useGcpGetDatasetsQuery>; -export type GcpGetDatasetsLazyQueryHookResult = ReturnType<typeof useGcpGetDatasetsLazyQuery>; -export type GcpGetDatasetsSuspenseQueryHookResult = ReturnType<typeof useGcpGetDatasetsSuspenseQuery>; -export type GcpGetDatasetsQueryResult = Apollo.QueryResult<GcpGetDatasetsQuery, GcpGetDatasetsQueryVariables>; -export const GcpGetTablesDocument = gql` - query gcpGetTables($projectID: String!, $datasetID: String!) { - gcpGetTables(projectID: $projectID, datasetID: $datasetID) { - name - type - description - } -} - `; - -/** - * __useGcpGetTablesQuery__ - * - * To run a query within a React component, call `useGcpGetTablesQuery` and pass it any options that fit your needs. - * When your component renders, `useGcpGetTablesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGcpGetTablesQuery({ - * variables: { - * projectID: // value for 'projectID' - * datasetID: // value for 'datasetID' - * }, - * }); - */ -export function useGcpGetTablesQuery(baseOptions: Apollo.QueryHookOptions<GcpGetTablesQuery, GcpGetTablesQueryVariables> & ({ variables: GcpGetTablesQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery<GcpGetTablesQuery, GcpGetTablesQueryVariables>(GcpGetTablesDocument, options); - } -export function useGcpGetTablesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GcpGetTablesQuery, GcpGetTablesQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery<GcpGetTablesQuery, GcpGetTablesQueryVariables>(GcpGetTablesDocument, options); - } -export function useGcpGetTablesSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions<GcpGetTablesQuery, GcpGetTablesQueryVariables>) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useSuspenseQuery<GcpGetTablesQuery, GcpGetTablesQueryVariables>(GcpGetTablesDocument, options); - } -export type GcpGetTablesQueryHookResult = ReturnType<typeof useGcpGetTablesQuery>; -export type GcpGetTablesLazyQueryHookResult = ReturnType<typeof useGcpGetTablesLazyQuery>; -export type GcpGetTablesSuspenseQueryHookResult = ReturnType<typeof useGcpGetTablesSuspenseQuery>; -export type GcpGetTablesQueryResult = Apollo.QueryResult<GcpGetTablesQuery, GcpGetTablesQueryVariables>; export const UpdateDataproductDocument = gql` mutation updateDataproduct($id: ID!, $input: UpdateDataproduct!) { updateDataproduct(id: $id, input: $input) { diff --git a/pages/index.tsx b/pages/index.tsx index 83158279..50e16c88 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,8 +1,5 @@ import { GetServerSideProps } from 'next' import { addApolloState, initializeApollo } from '../lib/apollo' -import { - MetabaseProudctsDocument, -} from '../lib/schema/graphql' import { useRouter } from 'next/router' import { FrontPageLogo } from '../components/index/frontPageLogo' import { useEffect, useState } from 'react' @@ -133,10 +130,6 @@ export const getServerSideProps: GetServerSideProps = async (context) => { const cookie = context?.req?.headers?.cookie || '' const apolloClient = initializeApollo(null, cookie) - await apolloClient.query({ - query: MetabaseProudctsDocument, - }) - return addApolloState(apolloClient, { props: {}, })