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