Main Page   Class Hierarchy   Compound List   File List   Compound Members  

clidb.h

00001 //-< CLIDB.H >-------------------------------------------------------*--------*
00002 // GigaBASE                  Version 1.0         (c) 1999  GARRET    *     ?  *
00003 // (Post Relational Database Management System)                      *   /\|  *
00004 //                                                                   *  /  \  *
00005 //                          Created:      7-Nov-99    K.A. Knizhnik  * / [] \ *
00006 //                          Last update:  7-Nov-99    K.A. Knizhnik  * GARRET *
00007 //-------------------------------------------------------------------*--------*
00008 // Example of Web database publishing: Clients Database
00009 //-------------------------------------------------------------------*--------*
00010 
00011 #ifndef __CLIDB_H__
00012 #define __CLIDB_H__
00013 
00014 #include "gigabase.h"
00015 #include "wwwapi.h"
00016 
00017 USE_GIGABASE_NAMESPACE
00018 
00019 class History;
00020 class Manager;
00021 class Segment;
00022 
00023 class Client {
00024   public:
00025     char const* organization;
00026     char const* phone;
00027     char const* phone2;
00028     char const* fax;
00029     char const* email;
00030     char const* www;
00031     char const* person;
00032     char const* person2;
00033     char const* lpr;
00034     char const* addr;
00035     char const* info;
00036     char const* status;
00037     int         clientId;
00038     dbReference<Segment> segment;
00039     dbArray<dbReference<History> > history;
00040 
00041     void print(WWWconnection& con) const;
00042 
00043     TYPE_DESCRIPTOR((KEY(clientId, INDEXED),
00044                      FIELD(organization),
00045                      FIELD(phone),
00046                      FIELD(phone2),
00047                      FIELD(fax),
00048                      FIELD(email),
00049                      FIELD(www),
00050                      FIELD(person),
00051                      FIELD(person2),
00052                      FIELD(lpr),
00053                      FIELD(addr),
00054                      FIELD(info),
00055                      FIELD(status),
00056                      RELATION(segment, clients),
00057                      OWNER(history, client)));
00058 };
00059 
00060 class History {
00061   public:
00062     int         messageId;
00063     char const* message;
00064     dbDateTime  date;
00065     dbReference<Manager> manager;
00066     dbReference<Client>  client;
00067 
00068     void print(WWWconnection& con) const;
00069 
00070     TYPE_DESCRIPTOR((KEY(messageId, INDEXED),
00071                      FIELD(message),
00072                      FIELD(date),
00073                      RELATION(client, history),
00074                      RELATION(manager, messages)));
00075 };
00076 
00077 class Manager {
00078   public:
00079     char const* name;
00080     char const* IPaddr;
00081     int         flags;
00082     dbReference<Segment> segment;
00083     dbArray<dbReference<History> > messages;
00084 
00085     static bool loginFromAnyHost;
00086 
00087     enum {
00088         isMinAdmin      = 1,
00089         isAdministrator = 2
00090     };
00091 
00092     void print(WWWconnection& con) const;
00093 
00094     TYPE_DESCRIPTOR((KEY(name, INDEXED|CASE_INSENSITIVE),
00095                      FIELD(IPaddr),
00096                      FIELD(flags),
00097                      RELATION(segment, managers),
00098                      RELATION(messages, manager)));
00099 };
00100 
00101 class Segment {
00102   public:
00103     char const* name;
00104     dbArray<dbReference<Client> >  clients;
00105     dbArray<dbReference<Manager> > managers;
00106 
00107     void print(WWWconnection& con) const;
00108 
00109     TYPE_DESCRIPTOR((KEY(name, INDEXED),
00110                      OWNER(clients, segment),
00111                      OWNER(managers, segment)));
00112 };
00113 
00114 class Sequencer {
00115   public:
00116     int lastClientId;
00117     int lastMessageId;
00118 
00119     TYPE_DESCRIPTOR((FIELD(lastClientId),
00120                      FIELD(lastMessageId)));
00121 };
00122 
00123 class ThreadContext {
00124   public:
00125     dbCursor<Client>  clients;
00126     dbCursor<Manager> managers;
00127     dbCursor<Segment> segments;
00128     dbCursor<History> messages;
00129     dbCursor<Sequencer> sequencer;
00130 
00131     dbQuery qClient;
00132     dbQuery qManager;
00133     dbQuery qClients;
00134     dbQuery qManagers;
00135     dbQuery qSegment;
00136     dbQuery qMessage;
00137     dbQuery qMessages;
00138 
00139     bool  managerForm;
00140 
00141     int   clientId;
00142     int   messageId;
00143     char* name;
00144     dbArray<dbReference<Client> >*  clientsArray;
00145     dbArray<dbReference<Manager> >* managersArray;
00146     dbArray<dbReference<History> >* messagesArray;
00147 
00148     ThreadContext();
00149     static ThreadContext& of(WWWconnection& con);
00150 };
00151 
00152 #endif

Generated on Mon Oct 23 13:22:58 2006 for GigaBASE by doxygen1.2.18