Skip to content

Commit

Permalink
refactor: changed interface
Browse files Browse the repository at this point in the history
  • Loading branch information
tpluscode committed Dec 31, 2024
1 parent 8d5333d commit e73ff6a
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 16 deletions.
15 changes: 10 additions & 5 deletions apis/shared-dimensions/lib/domain/hierarchies.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { NamedNode } from '@rdfjs/types'
import type { NamedNode, Quad } from '@rdfjs/types'
import { CONSTRUCT, SELECT } from '@tpluscode/sparql-builder'
import { md, meta } from '@cube-creator/core/namespace'
import clownface, { GraphPointer } from 'clownface'
Expand All @@ -7,9 +7,11 @@ import httpError from 'http-errors'
import $rdf from 'rdf-ext'
import slugify from 'slugify'
import { DomainError } from '@cube-creator/api-errors'
import { ParsingClient } from 'sparql-http-client/ParsingClient'
import { SharedDimensionsStore } from '../store'
import env from '../env'
import { textSearch } from '../query'
import { CollectionData } from '../handlers/collection'
import { newId, replace } from './resource'

interface GetHierarchies {
Expand All @@ -18,7 +20,7 @@ interface GetHierarchies {
offset: number
}

export function getHierarchies({ freetextQuery, limit, offset }: GetHierarchies) {
export async function getHierarchies({ freetextQuery, limit, offset }: GetHierarchies, client: ParsingClient): Promise<CollectionData<Iterable<Quad>>> {
const hierarchy = $rdf.variable('hierarchy')
const name = $rdf.variable('name')

Expand All @@ -35,18 +37,21 @@ export function getHierarchies({ freetextQuery, limit, offset }: GetHierarchies)
.ORDER().BY(name)
}

return CONSTRUCT`
return {
members: await CONSTRUCT`
?proxyUrl ?p ?o .
`
.WHERE`
.WHERE`
{
${select}
}
${hierarchy} ?p ?o .
BIND(IRI(CONCAT("${env.MANAGED_DIMENSIONS_API_BASE}", "dimension/_hierarchy/proxy?id=", ENCODE_FOR_URI(STR(${hierarchy})))) AS ?proxyUrl)
`
`.execute(client.query),
totalItems: 0,
}
}

interface CreateHierarchy {
Expand Down
2 changes: 1 addition & 1 deletion apis/shared-dimensions/lib/handlers/hierarchies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const get = asyncMiddleware(async (req, res, next) => {
offset,
}
const collection = await getCollection({
memberQuads: await getHierarchies(queryParams).execute(parsingClient.query),
data: await getHierarchies(queryParams, parsingClient),
collectionType: md.Hierarchies,
memberType: md.Hierarchy,
collection: req.hydra.resource.term,
Expand Down
2 changes: 1 addition & 1 deletion apis/shared-dimensions/lib/handlers/hierarchy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const getExternal = asyncMiddleware(async (req, res) => {
})

const hierarchy = clownface({
dataset: $rdf.dataset(await query.execute(parsingClient)),
dataset: $rdf.dataset(await parsingClient.query.construct(query)),
}).namedNode(url)
ensureEndpoint(hierarchy)

Expand Down
31 changes: 22 additions & 9 deletions apis/shared-dimensions/test/lib/domain/managed-dimensions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR

describe('getSharedDimensions', () => {
it('returns from all graphs', async () => {
// given
const collectionData = await getSharedDimensions(mdClients.streamClient)

// when
const dataset = $rdf.dataset([
...await getSharedDimensions(mdClients.streamClient),
...collectionData.members,
])

// then
Expand All @@ -28,11 +31,14 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR
})

it('returns filtered by name', async () => {
// given
const collectionData = await getSharedDimensions(mdClients.streamClient, {
freetextQuery: 'colors',
})

// when
const dataset = $rdf.dataset([
...await getSharedDimensions(mdClients.streamClient, {
freetextQuery: 'colors',
}),
...collectionData.members,
])

// then
Expand All @@ -51,10 +57,11 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR
sharedDimensions: [$rdf.namedNode('http://example.com/dimension/colors')],
freetextQuery: undefined,
}
const collectionData = await getSharedTerms(search, mdClients.streamClient)

// when
const dataset = await $rdf.dataset()
.import(await getSharedTerms(search, mdClients.streamClient))
.import(collectionData.members)

// then
expect(dataset.match(null, rdf.type, schema.DefinedTerm))
Expand Down Expand Up @@ -82,10 +89,11 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR
sharedDimensions: [$rdf.namedNode('https://ld.admin.ch/cube/dimension/technologies')],
freetextQuery: 'sparql',
}
const collectionData = await getSharedTerms(search, mdClients.streamClient)

// when
const dataset = await $rdf.dataset()
.import(await getSharedTerms(search, mdClients.streamClient))
.import(collectionData.members)

// then
expect(dataset.match(null, rdf.type, schema.DefinedTerm))
Expand Down Expand Up @@ -118,10 +126,11 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR
freetextQuery: undefined,
limit: 1,
}
const collectionData = await getSharedTerms(search, mdClients.streamClient)

// when
const dataset = await $rdf.dataset()
.import(await getSharedTerms(search, mdClients.streamClient))
.import(collectionData.members)

// then
expect(dataset.match(null, rdf.type, schema.DefinedTerm))
Expand All @@ -134,9 +143,11 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR
sharedDimensions: [$rdf.namedNode('http://example.com/dimension/colors')],
freetextQuery: 'r',
}
const collectionData = await getSharedTerms(search, mdClients.streamClient)

// when
const dataset = await $rdf.dataset()
.import(await getSharedTerms(search, mdClients.streamClient))
.import(collectionData.members)

// then
const [term, ...more] = dataset.match(null, rdf.type, schema.DefinedTerm)
Expand All @@ -151,9 +162,11 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPAR
freetextQuery: undefined,
validThrough: new Date(Date.parse('2021-04-15')),
}
const collectionData = await getSharedTerms(search, mdClients.streamClient)

// when
const dataset = await $rdf.dataset()
.import(await getSharedTerms(search, mdClients.streamClient))
.import(collectionData.members)

// then
const terms = [...dataset.match(null, rdf.type, schema.DefinedTerm)].map(({ subject }) => subject)
Expand Down

0 comments on commit e73ff6a

Please sign in to comment.