Store API¶
Public API¶
static load(loadingModule)¶
Modules may call this static method to instantiate a store from the environment and using the packages installed in the calling package.
// my-package/index.js const store = require('@kba/anno-store').load(module) store.init(...)
use(proc, hook='pre')¶
Use processor before (hook=pre) or after (hook=post) store method.
init(options, cb)¶
Initialize a connection to the store.
- @param {Options} options
- @param {String} options.user
- @param {function} callback
wipe(options, callback)¶
Wipe the store, revisions and all.
- @param {Options} options
- @param {String} options.user
- @param {function} callback
disconnect(options, callback)¶
Disconnect a store.
A disconnected store cannot be used until init is called again.
- @param {Options} options
- @param {String} options.user
- @param {function} callback
get(annoId, options, cb)¶
Retrieve an annotation.
- @param {String|Array<String>} annoIds
- @param {Object} options
- @param {Boolean} options.latest Return the latest revision only
- @param {Boolean} options.metadataOnly Return only metadata
- @param {Array[String]} options.filterProps List of properties NOT to return, e.g. 'hasVersion' and 'hasReply'
- @param {Boolean} options.includeDeleted Include results that would be 410 Gone otherwise
- @param {String} options.user
- @param {function} callback
create(anno, options, callback)¶
Create an annotation.
- @param {Object} anno
- @param {Options} options
- @param String options.slug Proposal for the ID to create
- @param {String} options.user
- @param {function} callback
revise(annoId, anno, options, callback)¶
Revise an annotation.
@param {String} annoId@param {Object} anno@param {Options} options@param {String} options.user@param {function} callback
delete(annoId, options, callback)¶
remove(annoId, options, callback)¶
Delete an annotation, i.e. set the deleted date.
@param {String} annoId@param {Options} options@param {Boolean} options.forceDeleteSet totrueto hint the store to actually delete, not just mark deleted@param {String} options.user@param {function} callback
search(query, options, callback)¶
Search the store.
@param {Object} query@param {Options} options@param {Boolean} options.latestReturn the latest revision only@param {Boolean} options.metadataOnlyReturn only metadata, i.e. no body/target@param {Array[String]} options.filterPropsList of properties NOT to return, e.g. 'hasVersion' and 'hasReply'@param {Boolean} options.includeDeletedInclude results that would be 410 Gone otherwise@param {String} options.user
@param {function} callback
reply(annoId, anno, options, callback)¶
comment(annoId, anno, options, callback)¶
Reply to an annotation
@param {String} annoId@param {Object} anno@param {Options} options@param {String} options.user@param {function} callback
aclcheck(targets, options, callback)¶
@param {Array} targets@param {Options} options@param {function} callback
import(anno, options, callback)¶
Replaces the complete annotation with the passed annotation, not just revise it.
@param {Object} anno@param {Options} options@param {String} options.recursiveWhether to import replies and revisions recusively. Default:true@param {String} options.replaceAnnotationWhether to replace an existing annotation, i.e. fail if that annotation wasn't there before@param {String} options.updateAnnotationPatch an existing annotation, fail if not existing@param {String} options.slugProposed ID for the annotation@param {function} callback
mintDoi(anno, options, callback)¶
Replaces the complete annotation with the passed annotation, not just revise it.
@param {Object} annoIdId of the annotation to create DOI(s) for@param {Options} options@param {function} callback
Protected API¶
These methods are available for store implementations but should not be used by consumers.
_idFromURL(url)¶
Get only the slug part of a URL
_urlFromId(annoId)¶
Generate a full URL to an annotation by its id.
_normalizeTarget(annoDoc)¶
TODO no idempotency of targets with normalization -> disabled for now
_normalizeType(anno)¶
Make sure anno.type exists, is an Array and contains Annotation
deleteId(anno)¶
Delete the id and store it in via.
- @param Object anno
_genid(slug='')¶
Generate an ID for the annotation from slug and a "nice"
slugid