const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()

exports.main = async event => {
  const { OPENID } = cloud.getWXContext()
  if (!OPENID) throw new Error('no openid in wx context')
  const patch = event.patch || {}
  delete patch.openid
  delete patch._id

  const users = await db.collection('users').where({ openid: OPENID }).limit(1).get()
  if (!users.data.length) throw new Error('user not found')

  // Setting a real avatar means the user has completed WeChat profile authorization
  if (patch.avatarUrl) patch.profileCompleted = true

  await db.collection('users').doc(users.data[0]._id).update({
    data: {
      ...patch,
      updatedAt: Date.now()
    }
  })
  const user = await db.collection('users').doc(users.data[0]._id).get()
  return { user: user.data }
}

