namespace Sernatur { namespace DB { using Postgres; using Wrapper; public class Posee : GLib.Object { public uint nivel_especialidad { get; set; default = 0; } public Guia guia { get; set; default = null; } public Especialidad especialidad { get; set; default = null; } public Posee (uint nivel_especialidad = 0, Guia? guia = null, Especialidad? especialidad = null) { this.nivel_especialidad = nivel_especialidad; this.guia = guia; this.especialidad = especialidad; } public static Posee[]? get_all_posees(Database conn) { var res = conn.exec (" SELECT P.nivel_especialidad, G.rut_guia, G.nombre_guia, G.calle, G.numero, C.id_ciudad, C.nombre_ciudad, R.id_region, R.nombre_region, E.id_especialidad, E.descripcion_especialidad FROM posee P JOIN guia G on (P.rut_guia = G.rut_guia) JOIN ciudad C ON (G.id_ciudad = C.id_ciudad) JOIN region R ON (C.id_region = R.id_region) JOIN especialidad E ON (P.id_especialidad = E.id_especialidad) "); 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); Posee[] posees = {}; int n = res.get_n_tuples (); for (int i = 0; i < n; i++) { try { var posee = new Posee (wra.get_int_n (i, "nivel_especialidad"), new Guia (wra.get_string_n (i, "rut_guia"), wra.get_string_n (i, "nombre_guia"), wra.get_string_n (i, "calle"), wra.get_int_n (i, "numero"), 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") ) ) ), new Especialidad (wra.get_int_n (i, "id_especialidad"), wra.get_string_n (i, "descripcion_especialidad") ) ); posees += posee; } catch (Error e) { #if DEBUG error (e.message); #else warning (e.message); #endif } } return posees; } } } }