UNPKG

@orbitdb/voyager

Version:

A storage service OrbitDB databases.

57 lines (44 loc) 1.09 kB
import { Set } from '@orbitdb/set-db' import { useDatabaseType } from '@orbitdb/core' export const Access = Object.freeze({ ALLOW: 1, DENY: 2 }) export default async ({ orbitdb, defaultAccess }) => { defaultAccess = defaultAccess || Access.DENY useDatabaseType(Set) const access = await orbitdb.open('access', { type: 'set' }) const add = async (id) => { await access.add(id) } const del = async (id) => { await access.del(id) } const hasAccess = async (id) => { let found = false // @TODO is there a database which stores unique values + can get by value? // @TODO add has(value) function to SetDB for await (const { value } of access.iterator()) { if (value === id) { found = true break } } return defaultAccess === Access.DENY ? found : !found } const all = async () => { const all = (await access.all()).map(e => e.value) return all } const close = async () => { await access.close() } return { defaultAccess, add, del, hasAccess, all, close } }