filecoin-pin
Version:
Bridge IPFS content to Filecoin Onchain Cloud using familiar tools
44 lines (36 loc) • 1.22 kB
text/typescript
import type { Synapse } from '@filoz/synapse-sdk'
import { getDataSetPieces } from './get-data-set-pieces.js'
import { listDataSets } from './list-data-sets.js'
import type { DataSetSummary, ListDataSetsOptions } from './types.js'
export async function getDetailedDataSet(
synapse: Synapse,
dataSetId: number,
options?: ListDataSetsOptions
): Promise<DataSetSummary> {
const logger = options?.logger
const dataSets = await listDataSets(synapse, {
...options,
withProviderDetails: true,
filter: (dataSet) => dataSet.pdpVerifierDataSetId === dataSetId,
})
const dataSet = dataSets[0]
if (dataSets.length === 0 || dataSet == null) {
logger?.error({ dataSetId }, `Data set ${dataSetId} not found`)
throw new Error(`Data set ${dataSetId} not found`)
}
const storageContext = await synapse.storage.createContext({
dataSetId: dataSet.dataSetId,
})
const piecesResult = await getDataSetPieces(synapse, storageContext, {
includeMetadata: true,
logger,
})
const result: DataSetSummary = {
...dataSet,
pieces: piecesResult.pieces,
}
if (piecesResult.totalSizeBytes != null) {
result.totalSizeBytes = piecesResult.totalSizeBytes
}
return result
}