Main Page | Class Hierarchy | Class List | File List | Class Members

clidb.h

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

Generated on Thu Feb 12 13:04:48 2004 for FastDB by doxygen 1.3.5