diff --git a/apps/frontend/app/api/v1/osograph/schema/resolvers/dataset.ts b/apps/frontend/app/api/v1/osograph/schema/resolvers/dataset.ts index 6481aa778..a7e23a9f6 100644 --- a/apps/frontend/app/api/v1/osograph/schema/resolvers/dataset.ts +++ b/apps/frontend/app/api/v1/osograph/schema/resolvers/dataset.ts @@ -18,7 +18,7 @@ import { UpdateDatasetSchema, MaterializationWhereSchema, validateInput, - DataConnectionWhereSchema, + DataConnectionAsTableWhereSchema, } from "@/app/api/v1/osograph/utils/validation"; import { DatasetErrors, @@ -305,7 +305,7 @@ export const datasetResolvers: GraphQLResolverModule = { case "DATA_CONNECTION": { const result = (await queryWithPagination(args, context, { tableName: "data_connection_as_table", - whereSchema: DataConnectionWhereSchema, + whereSchema: DataConnectionAsTableWhereSchema, requireAuth: false, filterByUserOrgs: false, parentOrgIds: parent.org_id, diff --git a/apps/frontend/app/api/v1/osograph/schema/resolvers/resource/dataset/type-resolvers.ts b/apps/frontend/app/api/v1/osograph/schema/resolvers/resource/dataset/type-resolvers.ts index 3240747ad..058f7cb9d 100644 --- a/apps/frontend/app/api/v1/osograph/schema/resolvers/resource/dataset/type-resolvers.ts +++ b/apps/frontend/app/api/v1/osograph/schema/resolvers/resource/dataset/type-resolvers.ts @@ -10,12 +10,17 @@ import { RunWhereSchema, StaticModelWhereSchema, MaterializationWhereSchema, + DataConnectionAsTableWhereSchema, } from "@/app/api/v1/osograph/utils/validation"; import type { FilterableConnectionArgs } from "@/app/api/v1/osograph/utils/pagination"; import { GraphQLResolverModule } from "@/app/api/v1/osograph/types/utils"; import { queryWithPagination } from "@/app/api/v1/osograph/utils/query-helpers"; import { assertNever } from "@opensource-observer/utils"; -import { DataIngestionAsTableRow, DatasetsRow } from "@/lib/types/schema-types"; +import { + DataConnectionAsTableRow, + DataIngestionAsTableRow, + DatasetsRow, +} from "@/lib/types/schema-types"; import { Connection } from "@/app/api/v1/osograph/utils/connection"; import { getMaterializations } from "@/app/api/v1/osograph/utils/resolver-helpers"; import { generateTableId } from "@/app/api/v1/osograph/utils/model"; @@ -180,19 +185,36 @@ export const datasetTypeResolvers: GraphQLResolverModule = { })), }; } - case "DATA_CONNECTION": - // Table metadata is not available until after the ingestion job completes - // Tables are created dynamically during ingestion - return { - edges: [], - pageInfo: { - hasNextPage: false, - hasPreviousPage: false, - startCursor: null, - endCursor: null, + case "DATA_CONNECTION": { + const { client } = await getOrgResourceClient( + context, + "dataset", + parent.id, + "read", + ); + + const result = (await queryWithPagination(args, context, { + client, + orgIds: parent.org_id, + tableName: "data_connection_as_table", + whereSchema: DataConnectionAsTableWhereSchema, + basePredicate: { + eq: [{ key: "dataset_id", value: parent.id }], }, - totalCount: 0, + })) as Connection; + + return { + ...result, + edges: result.edges.map((edge) => ({ + node: { + id: edge.node.table_id, + name: edge.node.table_name, + datasetId: edge.node.dataset_id, + }, + cursor: edge.cursor, + })), }; + } default: assertNever( parent.dataset_type, diff --git a/apps/frontend/app/api/v1/osograph/utils/validation.ts b/apps/frontend/app/api/v1/osograph/utils/validation.ts index 7a037fd4f..9166ed65a 100644 --- a/apps/frontend/app/api/v1/osograph/utils/validation.ts +++ b/apps/frontend/app/api/v1/osograph/utils/validation.ts @@ -486,6 +486,9 @@ export const StepWhereSchema = createWhereSchema("step"); export const MaterializationWhereSchema = createWhereSchema("materialization"); export const DataConnectionWhereSchema = createWhereSchema("dynamic_connectors"); +export const DataConnectionAsTableWhereSchema = createWhereSchema( + "data_connection_as_table", +); export function validateInput( schema: z.ZodType,