// DEBUG... COMENTAR DEPOIS
//_log.info("service called...");

const astroUid = _req.getString("uid");

if (astroUid && astroUid != "") {
  const dbAstro = _db.queryFirst(`
    SELECT 
      astro.uid,
      --astro.id,
      astro.name,
      astro_type.name AS "astro_type",
      astro_type.id AS "astro_type_code",
      astro.equatorial_radius,
      astro.rotation_velocity,
      --astro.around_astro_id,
      around.uid as "around_astro_uid",
      around.name as "around_astro_name",
      astro.periapsis,
      astro.apoapsis
      --,astro.image 
    FROM astro
      INNER JOIN astro_type
        ON astro.type_id = astro_type.id
          LEFT JOIN ( SELECT id,uid,name FROM astro ) AS around
		        ON astro.around_astro_id = around.id 
    WHERE 
      astro.active = TRUE
      AND astro_type.active = TRUE
      AND astro.uid = CAST(? AS UUID)
  `, astroUid);
  
  if (dbAstro == null) {
      _header.status(404);
      _exec.stop();
  }
  const astro = 
          _val.map()
                .set("uid", dbAstro.getString("uid"))
                .set("name", dbAstro.getString("name"))
                .set(
                  "type",
                  _val.map()
                        .set("name", dbAstro.getString("astro_type") )
                        .set("code", dbAstro.getString("astro_type_code")))
                .set("equatorialRadius", dbAstro.getDouble("equatorial_radius"))
                .set("rotationVelocity", dbAstro.getDouble("rotation_velocity"))
                .set(
                  "aroundAstro",
                  _val.map()
                        .set("uid", dbAstro.getString("around_astro_uid"))
                        .set("name", dbAstro.getString("around_astro_name")))
                .set("periapsis", dbAstro.getDouble("periapsis"))
                .set("apoapsis", dbAstro.getDouble("apoapsis"))
  ;
  
  // DEBUG...COMENTAR DEPOIS!
  //_log.info('Server return...', astro);

  _out.json(astro);

  // DEBUG...COMENTAR DEPOIS!
  //_log.info('service ended!');
}
else {
  _header.status(400);
  _exec.stop();
}