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
15typedef class MGODEF *PMGODEF;
16
17typedef 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/***********************************************************************/
31class MGODISC : public BLOCK {
32public:
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/***********************************************************************/
59class 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);
67public:
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
78protected:
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