const CouchDB = require("../db")
const { InternalTables } = require("../db/utils")
const { getGlobalUser } = require("../utilities/global")

exports.getFullUser = async (ctx, userId) => {
  const global = await getGlobalUser(ctx.appId, userId)
  let metadata
  try {
    // this will throw an error if the db doesn't exist, or there is no appId
    const db = new CouchDB(ctx.appId)
    metadata = await db.get(userId)
  } catch (err) {
    // it is fine if there is no user metadata, just remove global db info
    delete global._id
    delete global._rev
  }
  return {
    ...global,
    ...metadata,
    tableId: InternalTables.USER_METADATA,
    // make sure the ID is always a local ID, not a global one
    _id: userId,
  }
}