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
# 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 ]
|
|
}]
|
|
});
|
|
```
|