summaryrefslogtreecommitdiff
path: root/storage/connect/mongo.cpp
blob: 07b8beb8ce7062f74e6d0d9e6ae31d86ca36938e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/************** mongo C++ Program Source Code File (.CPP) **************/
/* PROGRAM NAME: mongo     Version 1.0                                 */
/*  (C) Copyright to the author Olivier BERTRAND          2017         */
/*  These programs are the MGODEF class execution routines.            */
/***********************************************************************/

/***********************************************************************/
/*  Include relevant sections of the MariaDB header file.              */
/***********************************************************************/
#include <my_global.h>

/***********************************************************************/
/*  Include application header files:                                  */
/*  global.h    is header containing all global declarations.          */
/*  plgdbsem.h  is header containing the DB application declarations.  */
/***********************************************************************/
#include "global.h"
#include "plgdbsem.h"
#include "xtable.h"
#include "tabext.h"
#if defined(MONGO_SUPPORT)
#include "tabmgo.h"
#endif   // MONGO_SUPPORT
#if defined(JDBC_SUPPORT)
#include "tabjmg.h"
#endif   // JDBC_SUPPORT

/* -------------------------- Class MGODEF --------------------------- */

MGODEF::MGODEF(void)
{
	Driver = NULL;
	Uri = NULL;
	Colist = NULL;
	Filter = NULL;
	Level = 0;
	Base = 0;
	Version = 0;
	Pipe = false;
} // end of MGODEF constructor

/***********************************************************************/
/*  DefineAM: define specific AM block values.                         */
/***********************************************************************/
bool MGODEF::DefineAM(PGLOBAL g, LPCSTR, int poff)
{
	if (EXTDEF::DefineAM(g, "MGO", poff))
		return true;
	else if (!Tabschema)
		Tabschema = GetStringCatInfo(g, "Dbname", "*");

# if !defined(JDBC_SUPPORT)
	Driver = "C";
#elif !defined(MONGO_SUPPORT)
	Driver = "JAVA";
#else
	Driver = GetStringCatInfo(g, "Driver", "C");
#endif
	Uri = GetStringCatInfo(g, "Connect", "mongodb://localhost:27017");
	Colist = GetStringCatInfo(g, "Colist", NULL);
	Filter = GetStringCatInfo(g, "Filter", NULL);
	Base = GetIntCatInfo("Base", 0) ? 1 : 0;
	Version = GetIntCatInfo("Version", 3);

	if (Version == 2)
		Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo2Interface");
	else
		Wrapname = GetStringCatInfo(g, "Wrapper", "Mongo3Interface");

	Pipe = GetBoolCatInfo("Pipeline", false);
	return false;
} // end of DefineAM

/***********************************************************************/
/*  GetTable: makes a new Table Description Block.                     */
/***********************************************************************/
PTDB MGODEF::GetTable(PGLOBAL g, MODE m)
{
	if (Catfunc == FNC_COL) {
#if defined(MONGO_SUPPORT)
		if (Driver && toupper(*Driver) == 'C')
			return new(g)TDBGOL(this);
#endif   // MONGO_SUPPORT
#if defined(JDBC_SUPPORT)
		return new(g)TDBJGL(this);
#else   // !JDBC_SUPPORT
		strcpy(g->Message, "No column find, no MONGO nor Java support");
		return NULL;
#endif  // !JDBC_SUPPORT
	} // endif Catfunc

#if defined(MONGO_SUPPORT)
	if (Driver && toupper(*Driver) == 'C')
		return new(g) TDBMGO(this);
#endif   // MONGO_SUPPORT
#if defined(JDBC_SUPPORT)
	return new(g) TDBJMG(this);
#else   // !JDBC_SUPPORT
	strcpy(g->Message, "No MONGO nor Java support");
	return NULL;
#endif  // !JDBC_SUPPORT
} // end of GetTable