UNPKG

@orbitdb/core

Version:

Distributed p2p database on IPFS

60 lines (51 loc) 1.53 kB
/** * @module Databases * @description * Provides various database structures for storing data. */ import Documents from './documents.js' import Events from './events.js' import KeyValue from './keyvalue.js' import KeyValueIndexed from './keyvalue-indexed.js' /** * An array of available database types. * @name databaseTypes * @†ype [] * @return [] An array of database types. * @memberof module:Databases */ const databaseTypes = {} /** * Add a new database type. * @example * import { useDatabaseType } from 'orbitdb' * const CustomDBTypeModule = async (params) => { * const database = await Database(...params) * ... * } * useDatabaseType(CustomDBTypeModule) * @function useDatabaseType * @param {module:Databases} database A Database-compatible module. * @throws Database type does not contain required field \'type\'. * @throws Database type '${store.type}' already added. * @memberof module:Databases */ const useDatabaseType = (database) => { if (!database.type) { throw new Error('Database type does not contain required field \'type\'.') } databaseTypes[database.type] = database } const getDatabaseType = (type) => { if (!type) { throw new Error('Type not specified') } if (!databaseTypes[type]) { throw new Error(`Unsupported database type: '${type}'`) } return databaseTypes[type] } useDatabaseType(Events) useDatabaseType(Documents) useDatabaseType(KeyValue) export { useDatabaseType, getDatabaseType, Documents, Events, KeyValue, KeyValueIndexed }