You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
ldo-compact-fork/packages/subscribable-dataset/src/SubscribableDatasetFactory.ts

31 lines
1.1 KiB

import type { DatasetFactory, BaseQuad, Dataset } from "@rdfjs/types";
import type { ITransactionDatasetFactory } from "./types";
import { SubscribableDataset } from "./SubscribableDataset";
/**
* A DatasetFactory that returns a SubscribableDataset given a generic DatasetFactory.
*/
export class SubscribableDatasetFactory<
InAndOutQuad extends BaseQuad = BaseQuad,
> implements DatasetFactory<InAndOutQuad, InAndOutQuad>
{
protected datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>;
protected transactionDatasetFactory: ITransactionDatasetFactory<InAndOutQuad>;
constructor(
datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>,
transactionDatasetFactory: ITransactionDatasetFactory<InAndOutQuad>,
) {
this.datasetFactory = datasetFactory;
this.transactionDatasetFactory = transactionDatasetFactory;
}
dataset(
quads?: Dataset<InAndOutQuad, InAndOutQuad> | InAndOutQuad[],
): SubscribableDataset<InAndOutQuad> {
return new SubscribableDataset(
this.datasetFactory,
this.transactionDatasetFactory,
quads ? this.datasetFactory.dataset(quads) : undefined,
);
}
}