namespace Sernatur { /** * This is the database namespace for Sernatur */ namespace DB { /** * This is a wrapper for Postgres that allows easier use of the database */ namespace Wrapper { using Postgres; public errordomain Field { NOTFOUND } public class ResultWrapper : GLib.Object { public unowned Result result { get; set; default = null; } public ResultWrapper (Result? result = null) { this.result = result; } public string get_string_v (int tup_num, int field_num) { return result.get_value (tup_num, field_num); } public int get_int_v (int tup_num, int field_num) { return int.parse (result.get_value (tup_num, field_num)); } public float get_float_v (int tup_num, int field_num) { return float.parse(result.get_value (tup_num, field_num)); } public double get_double_v (int tup_num, int field_num) { return double.parse (result.get_value (tup_num, field_num)); } public string get_string_n (int tup_num, string name) throws Field { return get_string_v (tup_num, check_field_found (result.get_field_number (name), name));; } public int get_int_n (int tup_num, string name) throws Field { return get_int_v (tup_num, check_field_found (result.get_field_number (name), name));; } public float get_float_n (int tup_num, string name) throws Field { return get_float_v (tup_num, check_field_found (result.get_field_number (name), name));; } public double get_double_n (int tup_num, string name) throws Field { return get_double_v (tup_num, check_field_found (result.get_field_number (name), name)); } private int check_field_found (int field_num, string name) throws Field { if (field_num == -1) { throw new Field.NOTFOUND (dgettext (null, "The field %s was not found in the query results!"), name); } return field_num; } } } } }