Fixing issue presented by test, passing Couch instance around for when it is being used in memory.

This commit is contained in:
Michael Drury 2021-11-15 19:34:08 +00:00
parent 7eb29ffc7d
commit 0f37562ab6
4 changed files with 18 additions and 15 deletions

View File

@ -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

View File

@ -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 = () => {

View File

@ -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 => {

View File

@ -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 => {