import { ensureRxStorageInstanceParamsAreCorrect } from 'nxdb-old/src/rx-storage-helper'; import { RxStorageDefaultStatics } from 'nxdb-old/src/rx-storage-statics'; import type { RxStorageInstanceCreationParams } from 'nxdb-old/src/types'; import type { RxStorageFoundationDB, RxStorageFoundationDBInstanceCreationOptions, RxStorageFoundationDBSettings } from 'nxdb-old/src/plugins/storage-foundationdb/foundationdb-types'; import { createFoundationDBStorageInstance, RxStorageInstanceFoundationDB } from 'nxdb-old/src/plugins/storage-foundationdb/rx-storage-instance-foundationdb'; let versionSet: undefined | number; export function getRxStorageFoundationDB( settings: RxStorageFoundationDBSettings ): RxStorageFoundationDB { if (versionSet && versionSet !== settings.apiVersion) { throw new Error('foundationdb already initialized with api version ' + versionSet); } else if (!versionSet) { versionSet = settings.apiVersion; const { setAPIVersion } = require('foundationdb'); setAPIVersion(settings.apiVersion); } const storage: RxStorageFoundationDB = { name: 'foundationdb', statics: RxStorageDefaultStatics, createStorageInstance( params: RxStorageInstanceCreationParams ): Promise> { ensureRxStorageInstanceParamsAreCorrect(params); const useSettings = Object.assign( {}, settings, params.options ); if (!useSettings.batchSize) { useSettings.batchSize = 50; } return createFoundationDBStorageInstance(this, params, useSettings); } }; return storage; } export * from 'nxdb-old/src/plugins/storage-foundationdb/foundationdb-types'; export * from 'nxdb-old/src/plugins/storage-foundationdb/foundationdb-helpers';