forked from tsai/budibase
7 changed files with 159 additions and 60 deletions
@ -0,0 +1,89 @@ |
|||||
|
const DocumentTypes = { |
||||
|
MODEL: "model", |
||||
|
RECORD: "record", |
||||
|
USER: "user", |
||||
|
AUTOMATION: "automation", |
||||
|
LINK: "link", |
||||
|
APP: "app", |
||||
|
ACCESS_LEVEL: "accesslevel", |
||||
|
} |
||||
|
|
||||
|
exports.DocumentTypes = DocumentTypes |
||||
|
|
||||
|
const UNICODE_MAX = "\ufff0" |
||||
|
|
||||
|
function singleInputParams(docType, input, otherProps = {}) { |
||||
|
if (input == null) { |
||||
|
input = "" |
||||
|
} |
||||
|
return { |
||||
|
...otherProps, |
||||
|
startkey: `${docType}:${input}`, |
||||
|
endkey: `${docType}:${input}${UNICODE_MAX}`, |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
exports.getModelParams = (modelId, otherProps = {}) => { |
||||
|
return singleInputParams(DocumentTypes.MODEL, modelId, otherProps) |
||||
|
} |
||||
|
|
||||
|
exports.generateModelID = modelId => { |
||||
|
return `${DocumentTypes.MODEL}:${modelId}` |
||||
|
} |
||||
|
|
||||
|
exports.getRecordParams = (modelId, recordId, otherProps = {}) => { |
||||
|
if (modelId == null && recordId != null) { |
||||
|
throw "Cannot build key for record ID without a model ID" |
||||
|
} |
||||
|
const endOfKey = recordId == null ? `${modelId}:` : `${modelId}:${recordId}` |
||||
|
return { |
||||
|
...otherProps, |
||||
|
startkey: `${DocumentTypes.RECORD}:${endOfKey}`, |
||||
|
endkey: `${DocumentTypes.RECORD}:${endOfKey}${UNICODE_MAX}`, |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
exports.generateRecordID = (modelId, recordId) => { |
||||
|
return `${DocumentTypes.RECORD}:${modelId}:${recordId}` |
||||
|
} |
||||
|
|
||||
|
exports.getUserParams = (username, otherProps = {}) => { |
||||
|
return singleInputParams(DocumentTypes.USER, username, otherProps) |
||||
|
} |
||||
|
|
||||
|
exports.generateUserID = username => { |
||||
|
return `${DocumentTypes.USER}:${username}` |
||||
|
} |
||||
|
|
||||
|
exports.getAutomationParams = (automationId, otherProps = {}) => { |
||||
|
return singleInputParams(DocumentTypes.AUTOMATION, automationId, otherProps) |
||||
|
} |
||||
|
|
||||
|
exports.generateAutomationID = automationId => { |
||||
|
return `${DocumentTypes.AUTOMATION}:${automationId}` |
||||
|
} |
||||
|
|
||||
|
// for now link records still have their own view as we can walk multiple directions
|
||||
|
exports.generateLinkID = (modelId1, modelId2, recordId1, recordId2) => { |
||||
|
return `${DocumentTypes.AUTOMATION}:${modelId1}:${modelId2}:${recordId1}:${recordId2}` |
||||
|
} |
||||
|
|
||||
|
exports.generateAppID = appId => { |
||||
|
return `${DocumentTypes.APP}:${appId}` |
||||
|
} |
||||
|
|
||||
|
exports.getAppParams = (appId, otherProps = {}) => { |
||||
|
return singleInputParams(DocumentTypes.APP, appId, otherProps) |
||||
|
} |
||||
|
|
||||
|
exports.generateAccessLevelID = accessLevelId => { |
||||
|
return `${DocumentTypes.ACCESS_LEVEL}:${accessLevelId}` |
||||
|
} |
||||
|
|
||||
|
exports.getAccessLevelParams = (accessLevelId, otherProps) => { |
||||
|
return singleInputParams( |
||||
|
DocumentTypes.ACCESS_LEVEL, |
||||
|
accessLevelId, |
||||
|
otherProps |
||||
|
) |
||||
|
} |
||||
Loading…
Reference in new issue