parent
cf38dcb5f9
commit
5a9cd3660f
@ -0,0 +1,23 @@ |
|||||||
|
import type { TransactionalDataset } from "@ldo/subscribable-dataset"; |
||||||
|
import { LdoDataset } from "../dist/LdoDataset"; |
||||||
|
import type { Quad } from "@rdfjs/types"; |
||||||
|
import type { DatasetChanges } from "@ldo/rdf-utils"; |
||||||
|
|
||||||
|
export class LdoTransactionalDataset |
||||||
|
extends LdoDataset |
||||||
|
implements TransactionalDataset<Quad> |
||||||
|
{ |
||||||
|
constructor() { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
rollback(): void { |
||||||
|
throw new Error("Method not implemented."); |
||||||
|
} |
||||||
|
commit(): void { |
||||||
|
throw new Error("Method not implemented."); |
||||||
|
} |
||||||
|
getChanges(): DatasetChanges<Quad> { |
||||||
|
throw new Error("Method not implemented."); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
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> |
||||||
|
{ |
||||||
|
private datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>; |
||||||
|
private 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, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
import type { BaseQuad, DatasetFactory } from "@rdfjs/types"; |
||||||
|
import type { ISubscribableDataset, ITransactionDatasetFactory } from "./types"; |
||||||
|
import { TransactionDataset } from "./TransactionDataset"; |
||||||
|
|
||||||
|
export class TransactionDatasetFactory<InAndOutQuad extends BaseQuad> |
||||||
|
implements ITransactionDatasetFactory<InAndOutQuad> |
||||||
|
{ |
||||||
|
private datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>; |
||||||
|
private transactionDatasetFactory: ITransactionDatasetFactory<InAndOutQuad>; |
||||||
|
constructor( |
||||||
|
datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>, |
||||||
|
transactionDatasetFactory?: ITransactionDatasetFactory<InAndOutQuad>, |
||||||
|
) { |
||||||
|
this.datasetFactory = datasetFactory; |
||||||
|
this.transactionDatasetFactory = transactionDatasetFactory || this; |
||||||
|
} |
||||||
|
|
||||||
|
transactionDataset( |
||||||
|
parentDataset: ISubscribableDataset<InAndOutQuad>, |
||||||
|
): TransactionDataset<InAndOutQuad> { |
||||||
|
return new TransactionDataset<InAndOutQuad>( |
||||||
|
parentDataset, |
||||||
|
this.datasetFactory, |
||||||
|
this.transactionDatasetFactory, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -1,27 +0,0 @@ |
|||||||
import type { DatasetFactory, BaseQuad, Dataset } from "@rdfjs/types"; |
|
||||||
import { WrapperSubscribableDataset } from "./WrapperSubscribableDataset"; |
|
||||||
|
|
||||||
/** |
|
||||||
* A DatasetFactory that returns a WrapperSubscribableDataset given a generic DatasetFactory. |
|
||||||
*/ |
|
||||||
export class WrapperSubscribableDatasetFactory< |
|
||||||
InAndOutQuad extends BaseQuad = BaseQuad, |
|
||||||
> implements DatasetFactory<InAndOutQuad, InAndOutQuad> |
|
||||||
{ |
|
||||||
private datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>; |
|
||||||
constructor(datasetFactory: DatasetFactory<InAndOutQuad, InAndOutQuad>) { |
|
||||||
this.datasetFactory = datasetFactory; |
|
||||||
} |
|
||||||
|
|
||||||
dataset( |
|
||||||
quads?: Dataset<InAndOutQuad, InAndOutQuad> | InAndOutQuad[], |
|
||||||
): WrapperSubscribableDataset<InAndOutQuad> { |
|
||||||
// Typings are wrong
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore
|
|
||||||
return new WrapperSubscribableDataset( |
|
||||||
this.datasetFactory, |
|
||||||
quads ? this.datasetFactory.dataset(quads) : undefined, |
|
||||||
); |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,46 @@ |
|||||||
|
import type { Dataset, DatasetFactory, Quad } from "@rdfjs/types"; |
||||||
|
import { createDataset } from "@ldo/dataset"; |
||||||
|
import { SubscribableDatasetFactory } from "./SubscribableDatasetFactory"; |
||||||
|
import type { |
||||||
|
ISubscribableDataset, |
||||||
|
ISubscribableDatasetFactory, |
||||||
|
ITransactionDatasetFactory, |
||||||
|
} from "./types"; |
||||||
|
import { TransactionDatasetFactory } from "./TransactionDatasetFactory"; |
||||||
|
|
||||||
|
const datasetFactory: DatasetFactory<Quad> = { |
||||||
|
dataset: (quads?: Dataset<Quad> | Quad[]): Dataset<Quad> => { |
||||||
|
return createDataset(quads); |
||||||
|
}, |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* Creates a factory that generates TransactionDatasets |
||||||
|
* @returns TransactionDatasetFactory |
||||||
|
*/ |
||||||
|
export function createTransactionDatasetFactory(): ITransactionDatasetFactory<Quad> { |
||||||
|
return new TransactionDatasetFactory(datasetFactory); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Creates a dataset factory that generates a SubscribableDataset |
||||||
|
* @returns DatasetFactory for SubscribableDataset |
||||||
|
*/ |
||||||
|
export function createSubscribableDatasetFactory(): ISubscribableDatasetFactory<Quad> { |
||||||
|
return new SubscribableDatasetFactory( |
||||||
|
datasetFactory, |
||||||
|
createTransactionDatasetFactory(), |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Creates a SubscribableDataset |
||||||
|
* @param quads: A dataset or array of Quads to initialize the dataset. |
||||||
|
* @returns Dataset |
||||||
|
*/ |
||||||
|
export function createSubscribableDataset( |
||||||
|
quads?: Dataset<Quad> | Quad[], |
||||||
|
): ISubscribableDataset<Quad> { |
||||||
|
const subscribableDatasetFactory = createSubscribableDatasetFactory(); |
||||||
|
return subscribableDatasetFactory.dataset(quads); |
||||||
|
} |
@ -1,30 +0,0 @@ |
|||||||
import type { Dataset, DatasetFactory, Quad } from "@rdfjs/types"; |
|
||||||
import type { WrapperSubscribableDataset } from "./WrapperSubscribableDataset"; |
|
||||||
import { createDataset } from "@ldo/dataset"; |
|
||||||
import { WrapperSubscribableDatasetFactory } from "./WrapperSubscribableDatasetFactory"; |
|
||||||
|
|
||||||
/** |
|
||||||
* Creates a dataset factory that generates a SubscribableDataset |
|
||||||
* @returns DatasetFactory for SubscribableDataset |
|
||||||
*/ |
|
||||||
export function createWrapperSubscribableDatasetFactory(): WrapperSubscribableDatasetFactory<Quad> { |
|
||||||
const datasetFactory: DatasetFactory<Quad> = { |
|
||||||
dataset: (quads?: Dataset<Quad> | Quad[]): Dataset<Quad> => { |
|
||||||
return createDataset(quads); |
|
||||||
}, |
|
||||||
}; |
|
||||||
return new WrapperSubscribableDatasetFactory(datasetFactory); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Creates a SubscribableDataset |
|
||||||
* @param quads: A dataset or array of Quads to initialize the dataset. |
|
||||||
* @returns Dataset |
|
||||||
*/ |
|
||||||
export function createWrapperSubscribableDataset( |
|
||||||
quads?: Dataset<Quad> | Quad[], |
|
||||||
): WrapperSubscribableDataset<Quad> { |
|
||||||
const wrapperSubscribableDatasetFactory = |
|
||||||
createWrapperSubscribableDatasetFactory(); |
|
||||||
return wrapperSubscribableDatasetFactory.dataset(quads); |
|
||||||
} |
|
@ -1,10 +1,8 @@ |
|||||||
export { |
export * from "./createSubscribableDataset"; |
||||||
createWrapperSubscribableDataset as createSubscribableDataset, |
export { createWrapperSubscribableDatasetFromSerializedInput as serializedToSubscribableDataset } from "./createSubscribableDatasetFromSerializedInput"; |
||||||
createWrapperSubscribableDatasetFactory as createSubscribableDatasetFactory, |
export * from "./TransactionDataset"; |
||||||
} from "./createWrapperSubscribableDataset"; |
export * from "./TransactionDatasetFactory"; |
||||||
export { createWrapperSubscribableDatasetFromSerializedInput as serializedToSubscribableDataset } from "./createWrapperSubscribableDatasetFromSerializedInput"; |
export * from "./SubscribableDataset"; |
||||||
export * from "./ProxyTransactionalDataset"; |
export * from "./SubscribableDatasetFactory"; |
||||||
export * from "./WrapperSubscribableDataset"; |
|
||||||
export * from "./WrapperSubscribableDatasetFactory"; |
|
||||||
export * from "./types"; |
export * from "./types"; |
||||||
export * from "./mergeDatasetChanges"; |
export * from "./mergeDatasetChanges"; |
||||||
|
Loading…
Reference in new issue