const dbPessoas = _db.query(`
    SELECT
        pessoa.uid,
        pessoa.id,
        pessoa.nome,
        pessoa.apelido,
        cidade.nome "cidade"
    FROM pessoa
        INNER JOIN cidade ON pessoa.cidade_id = cidade.id
`)

const dados = _val.list()

for (const dbPessoa of dbPessoas) {
    const dbComunidades = _db.query(`
        SELECT
            comunidade.nome
        FROM comunidade INNER JOIN pessoa_comunidade
            ON comunidade.id = pessoa_comunidade.comunidade_id
        WHERE pessoa_comunidade.pessoa_id = ?
    `, dbPessoa.getInt("id"))
    const dadosComunidades = _val.list()
    for (const dbComunidade of dbComunidades) {
        dadosComunidades.add(
            _val.map()
                .set("nome", dbComunidade.getString("nome"))
        )
    }
    dados.add(
        _val.map()
            .set("uid", dbPessoa.getString("uid"))
            .set("nome", `${dbPessoa.getString("nome")} ${dbPessoa.getString("apelido")}`)
            .set("cidade", dbPessoa.getString("cidade"))
            .set("comunidades", dadosComunidades)
    )
}

_out.json(dados)
