Cached default storage for Database

This commit is contained in:
haad 2023-03-09 08:37:53 +02:00
parent 27b4885d8e
commit 0bc17bd9f5

View File

@ -2,19 +2,28 @@ import { EventEmitter } from 'events'
import PQueue from 'p-queue' import PQueue from 'p-queue'
import Path from 'path' import Path from 'path'
import Sync from './sync.js' import Sync from './sync.js'
import { IPFSBlockStorage, LevelStorage } from './storage/index.js' import { ComposedStorage, LRUStorage, MemoryStorage, IPFSBlockStorage, LevelStorage } from './storage/index.js'
const defaultPointerCount = 16 const defaultPointerCount = 0
const defaultCacheSize = 1000
const Database = async ({ OpLog, ipfs, identity, address, name, accessController, directory, storage, headsStorage, pointerCount }) => { const Database = async ({ OpLog, ipfs, identity, address, name, accessController, directory, storage, headsStorage, pointerCount }) => {
const { Log, Entry } = OpLog const { Log, Entry } = OpLog
const entryStorage = storage || await IPFSBlockStorage({ ipfs, pin: true }) directory = Path.join(directory || './orbitdb', `./${address}/`)
pointerCount = pointerCount || defaultPointerCount
directory = Path.join(directory || './orbitdb', `./${address.path}/`) const entryStorage = await ComposedStorage(
headsStorage = headsStorage || await LevelStorage({ path: Path.join(directory, '/log/_heads/') }) await LRUStorage({ size: defaultCacheSize }),
await IPFSBlockStorage({ ipfs, pin: true })
)
const log = await Log(identity, { logId: address.toString(), access: accessController, entryStorage, headsStorage }) headsStorage = await ComposedStorage(
await LRUStorage({ size: defaultCacheSize }),
await LevelStorage({ path: Path.join(directory, '/log/_heads/') })
)
const log = await Log(identity, { logId: address, access: accessController, entryStorage, headsStorage })
// const indexStorage = await LevelStorage({ path: Path.join(directory, '/log/_index/') }) // const indexStorage = await LevelStorage({ path: Path.join(directory, '/log/_index/') })
// const log = await Log(identity, { logId: address.toString(), access: accessController, entryStorage, headsStorage, indexStorage }) // const log = await Log(identity, { logId: address.toString(), access: accessController, entryStorage, headsStorage, indexStorage })
@ -22,8 +31,6 @@ const Database = async ({ OpLog, ipfs, identity, address, name, accessController
const events = new EventEmitter() const events = new EventEmitter()
const queue = new PQueue({ concurrency: 1 }) const queue = new PQueue({ concurrency: 1 })
pointerCount = pointerCount || defaultPointerCount
const addOperation = async (op) => { const addOperation = async (op) => {
const task = async () => { const task = async () => {
const entry = await log.append(op, { pointerCount }) const entry = await log.append(op, { pointerCount })
@ -55,7 +62,6 @@ const Database = async ({ OpLog, ipfs, identity, address, name, accessController
events.emit('close') events.emit('close')
} }
// TODO: rename to clear()
const drop = async () => { const drop = async () => {
await queue.onIdle() await queue.onIdle()
await log.clear() await log.clear()