2 /**************************************************************************
3 ** (c) Copyright 2002, Andromeda Technology & Automation
4 ** This is free software; you can redistribute it and/or modify it under the
5 ** terms of the GNU General Public License, see the file COPYING.
6 ***************************************************************************
7 ** MODULE INFORMATION *
8 ***********************
9 ** FILE NAME : database.h
11 ** VERSION NUMBER : $Revision: 1.7 $
13 ** DESCRIPTION : Classes to provide an abstract layer on the Gnucomo
19 ***************************************************************************
20 ** ADMINISTRATIVE INFORMATION *
21 ********************************
22 ** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
23 ** CREATION DATE : Sep 10, 2002
24 ** LAST UPDATE : Mar 28, 2003
26 **************************************************************************/
28 /*****************************
30 Revision 1.7 2003-03-29 08:13:53 arjen
31 New member function gnucomo_database::is_conected().
33 Revision 1.6 2003/02/19 09:54:47 arjen
34 Print the query on cerr, along with the error message when
35 the query results in an error.
37 Revision 1.5 2003/02/05 09:33:17 arjen
38 gnucomo_database::new_notification() retruns the id number of the
39 newly created notification record.
41 Revision 1.4 2003/01/18 08:52:18 arjen
42 New C++ function: gnucomo_database::new_notification()
44 Revision 1.3 2002/11/09 08:04:27 arjen
45 Added a reference to the GPL
47 Revision 1.2 2002/11/04 10:13:36 arjen
48 Use proper namespace for iostream classes
50 Revision 1.1 2002/10/05 10:25:49 arjen
51 Creation of gcm_input and a first approach to a web interface
53 *****************************/
55 /* static const char *RCSID = "$Id: database.h,v 1.7 2003-03-29 08:13:53 arjen Exp $"; */
57 #include <libpq++/pgdatabase.h>
58 #include "gnucomo_config.h"
61 ///////////////////////////////////////////////////////////////////////////
62 // NAME : gnucomo_database
63 // BASECLASS : configuration
66 // METHODS : Database - Obtain the database access string
72 // LAST MODIFIED : Mar 28, 2003
73 ///////////////////////////////////////////////////////////////////////////
76 class gnucomo_database
89 gnucomo_database(gnucomo_config *c); // Use the configuration to connect to the database
91 // Error checking and handling.
95 return db != 0 && db->Status() == CONNECTION_OK;
98 // Low-level database access functions
100 int Query(String qry)
102 ExecStatusType result;
104 result = db->Exec(qry);
105 if (result == PGRES_TUPLES_OK || result == PGRES_COMMAND_OK)
111 std::cerr << "Database query error: " << db->ErrorMessage() << "\n";
112 std::cerr << "Query: " << qry << "\n";
117 String Field(int tuple, const char *fieldname)
119 return String(db->GetValue(tuple, fieldname));
122 // Return the objectid of the host given its name.
124 String find_host(const String hostname);
126 // Create a new notification.
128 String new_notification(String objectid, String issue, String remark);