You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
3.4 KiB
Markdown
223 lines
3.4 KiB
Markdown
2 years ago
|
# runInTransaction
|
||
|
|
||
|
```js
|
||
|
runInTransaction(parentTX, (tx) => {
|
||
|
// ... database operations go here ...
|
||
|
})
|
||
|
```
|
||
|
|
||
|
# lock
|
||
|
|
||
|
```js
|
||
|
lock(tx, {
|
||
|
id,
|
||
|
task
|
||
|
})
|
||
|
```
|
||
|
|
||
|
Returns: `true` if locking succeeded, `false` if the task was already locked
|
||
|
|
||
|
# unlock
|
||
|
|
||
|
```js
|
||
|
lock(tx, {
|
||
|
id,
|
||
|
task
|
||
|
})
|
||
|
```
|
||
|
|
||
|
# getItem
|
||
|
|
||
|
Fetch an item from the database by its unique named ID.
|
||
|
|
||
|
Wrapper API:
|
||
|
|
||
|
```js
|
||
|
getItem(tx, id)
|
||
|
|
||
|
getItem(tx, {
|
||
|
id,
|
||
|
optional = false
|
||
|
})
|
||
|
```
|
||
|
|
||
|
Expected backend API:
|
||
|
|
||
|
```js
|
||
|
getItem(tx, {
|
||
|
id,
|
||
|
optional
|
||
|
})
|
||
|
```
|
||
|
|
||
|
# createItem
|
||
|
|
||
|
Creates a new item or, if the item already exists, updates the existing item (if allowed). Tags/aliases are only ever added by this operation, never removed.
|
||
|
|
||
|
Wrapper API:
|
||
|
|
||
|
```js
|
||
|
createItem(tx, {
|
||
|
id,
|
||
|
tags = [],
|
||
|
aliases = [],
|
||
|
// Either `data` or `update` is required
|
||
|
data,
|
||
|
update, // callback(oldData)
|
||
|
failIfExists = false,
|
||
|
allowUpsert = true, // whether the *item object* is allowed to be updated, or should just be skipped if already exists
|
||
|
parentID
|
||
|
})
|
||
|
```
|
||
|
|
||
|
Expected backend API:
|
||
|
|
||
|
```js
|
||
|
createItem(tx, {
|
||
|
id,
|
||
|
tags,
|
||
|
aliases,
|
||
|
update, // callback(oldData ?? {})
|
||
|
failIfExists,
|
||
|
allowUpsert,
|
||
|
parentID
|
||
|
})
|
||
|
```
|
||
|
|
||
|
# renameItem
|
||
|
|
||
|
```js
|
||
|
let [ tx, { to, from }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
to: [ required, isString ],
|
||
|
from: [ required, isString ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# repointAliases
|
||
|
|
||
|
```js
|
||
|
let [ tx, { to, from }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
to: [ required, isString ],
|
||
|
from: [ required, isString ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# mergeItem
|
||
|
|
||
|
```js
|
||
|
let [ tx, { from, into, merge, mergeMetadata }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
from: [ required, isString ],
|
||
|
into: [ required, isString ],
|
||
|
merge: [ required, isFunction ],
|
||
|
mergeMetadata: [ defaultTo({}), anyProperty({
|
||
|
key: [ required ],
|
||
|
value: [ required, isFunction ]
|
||
|
})],
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# deleteItem
|
||
|
|
||
|
```js
|
||
|
let [ tx, { id }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
id: [ required, isString ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# createAlias
|
||
|
|
||
|
```js
|
||
|
let [ tx, { from, to, failIfExists }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
from: [ required, isString ],
|
||
|
to: [ required, isString ],
|
||
|
failIfExists: [ defaultTo(false), isBoolean ] // TODO: Shouldn't this default to true, for any occurrence outside of a merge/rename?
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# deleteAlias
|
||
|
|
||
|
```js
|
||
|
let [ tx, { from }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
from: [ required, isString ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# updateData
|
||
|
|
||
|
```js
|
||
|
let [ tx, { id, update }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
id: [ required, isString ],
|
||
|
update: [ required, isFunction ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# updateMetadata
|
||
|
|
||
|
```js
|
||
|
let [ tx, { id, update, taskName, taskVersion, ttl }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
id: [ required, isString ],
|
||
|
update: [ required, isFunction ],
|
||
|
taskName: [ required, isString ],
|
||
|
taskVersion: [ required, isString ],
|
||
|
ttl: [ isNumber ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# expire
|
||
|
|
||
|
```js
|
||
|
let [ tx, { id, taskName }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [{
|
||
|
id: [ required, isString ],
|
||
|
taskName: [ required, isString ]
|
||
|
}]
|
||
|
});
|
||
|
```
|
||
|
|
||
|
# setTTL
|
||
|
|
||
|
# allowFailure?
|
||
|
|
||
|
# log?
|
||
|
|
||
|
# countLockedTasks
|
||
|
|
||
|
Only a `tx` argument
|
||
|
|
||
|
# getUpdates
|
||
|
|
||
|
```js
|
||
|
let [ tx, { timestamp, prefix }] = validateArguments(arguments, {
|
||
|
tx: [ required, isTX ],
|
||
|
options: [ defaultTo({}), {
|
||
|
timestamp: [ isDate ],
|
||
|
prefix: [ isString ]
|
||
|
}]
|
||
|
});
|
||
|
```
|