const dbFuncionarios = _db.query(
  `select 
        funcionario.id, funcionario.uid, funcionario.nome, funcionario.idade, funcionario.email, funcionario.telemovel, armazem.id "Armazem"
  from funcionario
        inner join armazem 
            on funcionario.armazem_id = armazem.id`
  )

const func = _val.list();

for (const dbFuncionario of dbFuncionarios){
    const dbEspecialidades = _db.query(
        `select 
            especialidade.nome
        from especialidade
            inner join func_especialidade 
                on especialidade.id = func_especialidade.especialidade_id
                    where func_especialidade.funcionario_id = ?
        `, dbFuncionario.getInt("id")
    );
      
    const esp = _val.list()
    for (const dbEspecialidade of dbEspecialidades){
        esp.add(dbEspecialidade.getString("nome"))
    }

    const dbArmazens = _db.query(
        `select 
            armazem.nome
        from armazem
            inner join func_armazem 
                on armazem.id = func_armazem.armazem_id
                    where func_armazem.funcionario_id = ?
        `, dbFuncionario.getInt("id")
    )
    
    const armz = _val.list()
    for (const dbArmazem of dbArmazens){
        armz.add(dbArmazem.getString("nome"))
    }

    func.add(
        _val.map()
        .set("uid", dbFuncionario.getString("uid"))
        .set("name", dbFuncionario.getString("nome"))
        .set("age", dbFuncionario.getString("idade"))
        .set("email", dbFuncionario.getString("email"))
        .set("phone", dbFuncionario.getString("telemovel"))
        .set("esp", esp)
        .set("armz", armz)
    )

    }

_out.json(
    func
)