| 1 | /**************** mongo H Declares Source Code File (.H) ***************/ |
| 2 | /* Name: mongo.h Version 1.0 */ |
| 3 | /* */ |
| 4 | /* (C) Copyright to the author Olivier BERTRAND 2017 */ |
| 5 | /* */ |
| 6 | /* This file contains the common MongoDB classes declares. */ |
| 7 | /***********************************************************************/ |
| 8 | #ifndef __MONGO_H |
| 9 | #define __MONGO_H |
| 10 | |
| 11 | #include "osutil.h" |
| 12 | #include "block.h" |
| 13 | #include "colblk.h" |
| 14 | |
| 15 | typedef class MGODEF *PMGODEF; |
| 16 | |
| 17 | typedef struct _bncol { |
| 18 | struct _bncol *Next; |
| 19 | char *Name; |
| 20 | char *Fmt; |
| 21 | int Type; |
| 22 | int Len; |
| 23 | int Scale; |
| 24 | bool Cbn; |
| 25 | bool Found; |
| 26 | } BCOL, *PBCOL; |
| 27 | |
| 28 | /***********************************************************************/ |
| 29 | /* Class used to get the columns of a mongo collection. */ |
| 30 | /***********************************************************************/ |
| 31 | class MGODISC : public BLOCK { |
| 32 | public: |
| 33 | // Constructor |
| 34 | MGODISC(PGLOBAL g, int *lg); |
| 35 | |
| 36 | // Methods |
| 37 | virtual bool Init(PGLOBAL g) { return false; } |
| 38 | virtual void GetDoc(void) {} |
| 39 | virtual bool Find(PGLOBAL g) = 0; |
| 40 | |
| 41 | // Functions |
| 42 | int GetColumns(PGLOBAL g, PCSZ db, PCSZ uri, PTOS topt); |
| 43 | void AddColumn(PGLOBAL g, PCSZ colname, PCSZ fmt, int k); |
| 44 | |
| 45 | // Members |
| 46 | BCOL bcol; |
| 47 | PBCOL bcp, fbcp, pbcp; |
| 48 | PMGODEF tdp; |
| 49 | PTDB tmgp; |
| 50 | PCSZ drv; |
| 51 | int *length; |
| 52 | int i, ncol, lvl; |
| 53 | bool all; |
| 54 | }; // end of MGODISC |
| 55 | |
| 56 | /***********************************************************************/ |
| 57 | /* MongoDB table. */ |
| 58 | /***********************************************************************/ |
| 59 | class DllExport MGODEF : public EXTDEF { /* Table description */ |
| 60 | friend class TDBCMG; |
| 61 | friend class TDBJMG; |
| 62 | friend class TDBGOL; |
| 63 | friend class TDBJGL; |
| 64 | friend class CMGFAM; |
| 65 | friend class MGODISC; |
| 66 | friend DllExport PQRYRES MGOColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); |
| 67 | public: |
| 68 | // Constructor |
| 69 | MGODEF(void); |
| 70 | |
| 71 | // Implementation |
| 72 | virtual const char *GetType(void) { return "MONGO" ; } |
| 73 | |
| 74 | // Methods |
| 75 | virtual bool DefineAM(PGLOBAL g, LPCSTR am, int poff); |
| 76 | virtual PTDB GetTable(PGLOBAL g, MODE m); |
| 77 | |
| 78 | protected: |
| 79 | // Members |
| 80 | PCSZ Driver; /* MongoDB Driver (C or JAVA) */ |
| 81 | PCSZ Uri; /* MongoDB connection URI */ |
| 82 | PSZ Wrapname; /* Java wrapper name */ |
| 83 | PCSZ Colist; /* Options list */ |
| 84 | PCSZ Filter; /* Filtering query */ |
| 85 | int Level; /* Used for catalog table */ |
| 86 | int Base; /* The array index base */ |
| 87 | int Version; /* The Java driver version */ |
| 88 | bool Pipe; /* True is Colist is a pipeline */ |
| 89 | }; // end of MGODEF |
| 90 | |
| 91 | #endif // __MONGO_H |
| 92 | |