1 /* Copyright (C) 2000-2015 Lavtech.com corp. All rights reserved.
2 
3    This program is free software; you can redistribute it and/or modify
4    it under the terms of the GNU General Public License as published by
5    the Free Software Foundation; either version 2 of the License, or
6    (at your option) any later version.
7 
8    This program is distributed in the hope that it will be useful,
9    but WITHOUT ANY WARRANTY; without even the implied warranty of
10    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11    GNU General Public License for more details.
12 
13    You should have received a copy of the GNU General Public License
14    along with this program; if not, write to the Free Software
15    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16 */
17 
18 #ifndef _UDM_DBMS_H
19 #define _UDM_DBMS_H
20 
21 
22 typedef enum
23 {
24   UDM_DBCMD_CREATE=               0,
25   UDM_DBCMD_DROP=                 1,
26   UDM_DBCMD_DOCCOUNT=             2,
27   UDM_DBCMD_CRAWLER_FINALIZE=     3
28 } udm_dbcmd_t;
29 
30 
31 typedef enum
32 {
33   UDM_HREFCMD_START_BULK=         0,
34   UDM_HREFCMD_STOP_BULK=          1,
35   UDM_HREFCMD_ADD=                2,
36   UDM_HREFCMD_EXPORT=             3
37 } udm_hrefcmd_t;
38 
39 
40 typedef enum
41 {
42   UDM_DOCCMD_DELETE=              0,
43   UDM_DOCCMD_ADD=                 1,
44   UDM_DOCCMD_SUPDATE=             2,
45   UDM_DOCCMD_LUPDATE=             3,
46   UDM_DOCCMD_DUPDATE=             4,
47   UDM_DOCCMD_UPDCLONE=            5,
48   UDM_DOCCMD_REGCHILD=            6,
49   UDM_DOCCMD_FINDBYURL=           7,
50   UDM_DOCCMD_FINDBYMSG=           8,
51   UDM_DOCCMD_FINDORIG=            9,
52   UDM_DOCCMD_GET_CACHED_COPY=    10,
53   UDM_DOCCMD_DOCPERSITE=         11,
54   UDM_DOCCMD_SQLIMPORTSEC=       12,
55   UDM_DOCCMD_RESTOREDATA=        13
56 } udm_doccmd_t;
57 
58 
59 typedef enum
60 {
61   UDM_QUERYCMD_FINDWORDS=           0,
62   UDM_QUERYCMD_SUGGEST=             1,
63   UDM_QUERYCMD_DOCINFO=             2,
64   UDM_QUERYCMD_TRACK=               3,
65   UDM_QUERYCMD_CLONES=              4,
66   UDM_QUERYCMD_WORDFORMS=           5,
67   UDM_QUERYCMD_TARGETS=             6,
68   UDM_QUERYCMD_CLEAR=               7,
69   UDM_QUERYCMD_INDEX=               8,
70   UDM_QUERYCMD_EXPIRE=              9,
71   UDM_QUERYCMD_REFERERS=           10,
72   UDM_QUERYCMD_DUMPDATA=           11,
73   UDM_QUERYCMD_REWRITE_URLDATA=    12,
74   UDM_QUERYCMD_REWRITE_LIMITS=     13,
75   UDM_QUERYCMD_REWRITE_POPULARITY= 14,
76   UDM_QUERYCMD_EXPORT=             15,
77   UDM_QUERYCMD_WORDSTAT=           16,
78   UDM_QUERYCMD_STATISTICS=         17
79 } udm_querycmd_t;
80 
81 
82 typedef enum
83 {
84   UDM_SRV_ACTION_TABLE=           0,
85   UDM_SRV_ACTION_FLUSH=           1,
86   UDM_SRV_ACTION_ADD=             2
87 } udm_srvcmd_t;
88 
89 
90 typedef enum
91 {
92   UDM_DBINFO_ERRCODE=             0,
93   UDM_DBINFO_ERRSTR=              1,
94   UDM_DBINFO_ADDR=                2,
95   UDM_DBINFO_IS_THREAD_SAFE=      3
96 } udm_dbinfo_t;
97 
98 
99 UDM_API(void) UdmDBListInit(UDM_DBLIST *List);
100 UDM_API(udm_rc_t) UdmDBListAdd(UDM_DBLIST *List,
101                                const char * addr,
102                                char *err, size_t errlen);
103 void UdmDBListFree(UDM_DBLIST *List);
104 UDM_API(void) UdmDBInit(UDM_DB *db);
105 void UdmDBFree(UDM_DB *db);
106 udm_rc_t UdmDBSetAddr(UDM_DB *db, const char *dbaddr);
107 int UdmDBIsActive(UDM_AGENT *A, size_t num_arg);
108 
109 
110 UDM_API(udm_rc_t) UdmDocAction(UDM_AGENT *A, UDM_DOCUMENT   *D, udm_doccmd_t cmd);
111 UDM_API(udm_rc_t) UdmSrvAction(UDM_AGENT *A, UDM_SERVERLIST *S, udm_srvcmd_t cmd);
112 UDM_API(udm_rc_t) UdmQueryAction(UDM_AGENT *A, UDM_QUERY *Q, udm_querycmd_t cmd);
113 UDM_API(udm_rc_t) UdmFind(UDM_AGENT *, UDM_RESULT *);
114 UDM_API(udm_rc_t) UdmFind2(UDM_AGENT *, UDM_RESULT *, const char *query);
115 UDM_API(udm_rc_t) UdmDBAction(UDM_AGENT *A, udm_dbcmd_t cmd);
116 UDM_API(udm_rc_t) UdmEnvFind(UDM_ENV *Env, UDM_RESULT *Res, const char *query);
117 
118 udm_rc_t UdmHTDBGet(UDM_AGENT *Indexer,UDM_DOCUMENT *Doc);
119 
120 size_t UdmDBNumBySeed(UDM_ENV *Env, udmhash32_t seed);
121 
122 
123 /*******************************/
124 size_t UdmEnvCopyErrMsgFromDB(UDM_ENV *Env, UDM_DB *db);
125 
126 typedef struct udm_dbhandler_st
127 {
128   udm_rc_t (*Init)          (UDM_DB *db, const char *addr);
129   udm_rc_t (*Close)         (UDM_DB *db);
130   udm_rc_t (*Info)          (UDM_DB *db, void *dst, size_t dstlen, size_t *bytes_written, udm_dbinfo_t info);
131   udm_rc_t (*QueryAction)   (UDM_AGENT *A, UDM_DB *db, UDM_QUERY *Query, udm_querycmd_t cmd);
132   udm_rc_t (*DBAction)      (UDM_AGENT *A, UDM_DB *db, udm_dbcmd_t cmd);
133   udm_rc_t (*DocumentAction)(UDM_AGENT *A, UDM_DB *db, UDM_DOCUMENT *D, udm_doccmd_t cmd);
134   udm_rc_t (*HrefAction)    (UDM_AGENT *A, UDM_DB *db, UDM_HREF *H, udm_hrefcmd_t cmd);
135   udm_rc_t (*ServerAction)  (UDM_AGENT *A, UDM_DB *db, UDM_SERVERLIST *Srv, udm_srvcmd_t cmd);
136 } UDM_DBHANDLER;
137 
138 extern const UDM_DBHANDLER udm_dbhandler_sql;
139 extern const UDM_DBHANDLER udm_dbhandler_searchd;
140 
141 #endif
142