namespace Sernatur { namespace DB { using Postgres; using Wrapper; public class Lugar : GLib.Object { public uint id_lugar { get; set; default = 0; } public string nombre_lugar { get; set; default = ""; } public uint valor_entrada { get; set; default = 0; } public uint nivel { get; set; default = 0; } public Ciudad ciudad { get; set; default = null; } public Lugar (uint id_lugar = 0, string nombre_lugar = "", uint valor_entrada = 0, uint nivel = 0, Ciudad? ciudad = null) { this.id_lugar = id_lugar; this.nombre_lugar = nombre_lugar; this.valor_entrada = valor_entrada; this.nivel = nivel; this.ciudad = ciudad; } public static Lugar[]? get_all_lugares(Database conn) { var res = conn.exec (" SELECT L.id_lugar, L.nombre_lugar, L.valor_entrada, L.nivel, C.id_ciudad, C.nombre_ciudad, R.id_region, R.nombre_region FROM lugar L JOIN ciudad C ON (L.id_ciudad = C.id_ciudad) JOIN region R ON (C.id_region = R.id_region) "); if (res.get_status () != ExecStatus.TUPLES_OK) { #if DEBUG error (conn.get_error_message ()); #else warning (conn.get_error_message ()); return null; #endif } var wra = new ResultWrapper (res); Lugar[] lugares = {}; int n = res.get_n_tuples (); for (int i = 0; i < n; i++) { try { var lugar = new Lugar (wra.get_int_n (i, "id_lugar"), wra.get_string_n (i, "nombre_lugar"), wra.get_int_n (i, "valor_entrada"), wra.get_int_n (i, "nivel"), new Ciudad (wra.get_int_n (i, "id_ciudad"), wra.get_string_n (i, "nombre_ciudad"), new Region(wra.get_int_n (i, "id_region"), wra.get_string_n (i, "nombre_region") ) ) ); lugares += lugar; } catch (Error e) { #if DEBUG error (e.message); #else warning (e.message); #endif } } return lugares; } } } }