Fixing issue presented by test, passing Couch instance around for when it is being used in memory.
This commit is contained in:
parent
f13257bebe
commit
5470b77fb3
|
@ -1,5 +1,5 @@
|
|||
const redis = require("../redis/authRedis")
|
||||
const { getDB } = require("../db")
|
||||
const { getCouch } = require("../db")
|
||||
const { DocumentTypes } = require("../db/constants")
|
||||
|
||||
const EXPIRY_SECONDS = 3600
|
||||
|
@ -7,8 +7,12 @@ const EXPIRY_SECONDS = 3600
|
|||
/**
|
||||
* The default populate app metadata function
|
||||
*/
|
||||
const populateFromDB = async appId => {
|
||||
return getDB(appId, { skip_setup: true }).get(DocumentTypes.APP_METADATA)
|
||||
const populateFromDB = async (appId, CouchDB = null) => {
|
||||
if (!CouchDB) {
|
||||
CouchDB = getCouch()
|
||||
}
|
||||
const db = new CouchDB(appId, { skip_setup: true })
|
||||
return db.get(DocumentTypes.APP_METADATA)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -18,12 +22,12 @@ const populateFromDB = async appId => {
|
|||
* @param {*} appId the id of the app to get metadata from.
|
||||
* @returns {object} the app metadata.
|
||||
*/
|
||||
exports.getAppMetadata = async appId => {
|
||||
exports.getAppMetadata = async (appId, CouchDB = null) => {
|
||||
const client = await redis.getAppClient()
|
||||
// try cache
|
||||
let metadata = await client.get(appId)
|
||||
if (!metadata) {
|
||||
metadata = await populateFromDB(appId)
|
||||
metadata = await populateFromDB(appId, CouchDB)
|
||||
client.store(appId, metadata, EXPIRY_SECONDS)
|
||||
}
|
||||
return metadata
|
||||
|
|
|
@ -4,8 +4,8 @@ module.exports.setDB = pouch => {
|
|||
Pouch = pouch
|
||||
}
|
||||
|
||||
module.exports.getDB = (dbName, opts = {}) => {
|
||||
return new Pouch(dbName, opts)
|
||||
module.exports.getDB = dbName => {
|
||||
return new Pouch(dbName)
|
||||
}
|
||||
|
||||
module.exports.getCouch = () => {
|
||||
|
|
|
@ -54,6 +54,9 @@ exports.isProdAppID = appId => {
|
|||
}
|
||||
|
||||
function isDevApp(app) {
|
||||
if (!app) {
|
||||
return false
|
||||
}
|
||||
return exports.isDevAppID(app.appId)
|
||||
}
|
||||
|
||||
|
@ -233,16 +236,16 @@ exports.getAllApps = async (CouchDB, { dev, all, idsOnly } = {}) => {
|
|||
if (idsOnly) {
|
||||
return appDbNames
|
||||
}
|
||||
const appPromises = appDbNames.map(db =>
|
||||
const appPromises = appDbNames.map(app =>
|
||||
// skip setup otherwise databases could be re-created
|
||||
getAppMetadata(db)
|
||||
getAppMetadata(app, CouchDB)
|
||||
)
|
||||
if (appPromises.length === 0) {
|
||||
return []
|
||||
} else {
|
||||
const response = await Promise.allSettled(appPromises)
|
||||
const apps = response
|
||||
.filter(result => result.status === "fulfilled")
|
||||
.filter(result => result.status === "fulfilled" && result.value != null)
|
||||
.map(({ value }) => value)
|
||||
if (!all) {
|
||||
return apps.filter(app => {
|
||||
|
|
|
@ -43,11 +43,7 @@ exports.save = async ctx => {
|
|||
}
|
||||
|
||||
const parseBooleanParam = param => {
|
||||
if (param && param === "false") {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
return !(param && param === "false")
|
||||
}
|
||||
|
||||
exports.adminUser = async ctx => {
|
||||
|
|
Loading…
Reference in New Issue