FileStorage is a library that allows to easily store a large number of binary files.
Data will be spread across the file tree to optimize read and write speeds and can be accessed by a unique id.
Large files can be compressed using either ZIP
or GZIP
and automatically decompressed on reading.
It is strongly recommended to use filestorage.create
to get new FileStorage
instance
because it will also create a root directory if it does not yet exist in the file system.
Example with existing directory:
const { FileStorage } = require('filestorage');
const storage = new FileStorage({
dir: './root-directory',
minCompressSize: 2048,
});
Example with create:
const { create } = require('filestorage');
create({ dir: './root' }, (err, storage) => { ... });
FileStorage(options)
options:
<Object>
FileStorage.prototype.write(id, data, opts, cb)
id
<common.Uint64>
id of filedata:
<string>
|
<Uint8Array>
<Buffer>
data to be writtenopts:
<Object>
cb:
<Function>
callback
Throws: <TypeError>
if opts.checksum
or opts.dedupHash
is incorrect
FileStorage.prototype.update(id, data, opts, cb)
id
<common.Uint64>
id of filedata:
<string>
|
<Uint8Array>
<Buffer>
data to be writtenopts:
<Object>
cb:
<Function>
callback
Throws: <TypeError>
if opts.checksum
or opts.dedupHash
is incorrect
FileStorage.prototype.stat(id, cb)
id
<common.Uint64>
id of filecb:
<Function>
callbackerr:
<Error>
stats
<fs.Stats>
FileStorage.prototype.read(id, opts, cb)
id
<common.Uint64>
id of fileopts:
<Object>
cb:
<Function>
callback
FileStorage.prototype.rm(id, cb)
id
<common.Uint64>
id of filecb:
<Function>
callbackerr:
<Error>
FileStorage.prototype.compress(id, compression, cb)
id
<common.Uint64>
id of filecompression:
<string>
compression typecb:
<Function>
callback
Throws: <TypeError>
if compression is incorrect
create(options, cb)
options:
<Object>
cb:
<Function>
callbackerr:
<Error>
storage
<FileStorage>