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 { |
||||
createWrapperSubscribableDataset as createSubscribableDataset, |
||||
createWrapperSubscribableDatasetFactory as createSubscribableDatasetFactory, |
||||
} from "./createWrapperSubscribableDataset"; |
||||
export { createWrapperSubscribableDatasetFromSerializedInput as serializedToSubscribableDataset } from "./createWrapperSubscribableDatasetFromSerializedInput"; |
||||
export * from "./ProxyTransactionalDataset"; |
||||
export * from "./WrapperSubscribableDataset"; |
||||
export * from "./WrapperSubscribableDatasetFactory"; |
||||
export * from "./createSubscribableDataset"; |
||||
export { createWrapperSubscribableDatasetFromSerializedInput as serializedToSubscribableDataset } from "./createSubscribableDatasetFromSerializedInput"; |
||||
export * from "./TransactionDataset"; |
||||
export * from "./TransactionDatasetFactory"; |
||||
export * from "./SubscribableDataset"; |
||||
export * from "./SubscribableDatasetFactory"; |
||||
export * from "./types"; |
||||
export * from "./mergeDatasetChanges"; |
||||
|
Loading…
Reference in new issue