1 /**
2  * chewing-sql.c
3  *
4  * Copyright (c) 2013
5  *      libchewing Core Team. See ChangeLog for details.
6  *
7  * See the file "COPYING" for information on usage and redistribution
8  * of this file.
9  */
10 
11 /* *INDENT-OFF* */
12 #ifndef CHEWING_SQL_H
13 #define CHEWING_SQL_H
14 /* *INDENT-ON* */
15 
16 #ifdef HAVE_CONFIG_H
17 #    include <config.h>
18 #endif
19 
20 
21 /*
22  * userphrase_v1 table
23  */
24 
25 enum {
26     BIND_USERPHRASE_TIME = 1,
27     BIND_USERPHRASE_ORIG_FREQ = 2,
28     BIND_USERPHRASE_MAX_FREQ = 3,
29     BIND_USERPHRASE_USER_FREQ = 4,
30     BIND_USERPHRASE_LENGTH = 5,
31     BIND_USERPHRASE_PHRASE = 6,
32     BIND_USERPHRASE_PHONE_0 = 10,
33     BIND_USERPHRASE_PHONE_1 = 11,
34     BIND_USERPHRASE_PHONE_2 = 12,
35     BIND_USERPHRASE_PHONE_3 = 13,
36     BIND_USERPHRASE_PHONE_4 = 14,
37     BIND_USERPHRASE_PHONE_5 = 15,
38     BIND_USERPHRASE_PHONE_6 = 16,
39     BIND_USERPHRASE_PHONE_7 = 17,
40     BIND_USERPHRASE_PHONE_8 = 18,
41     BIND_USERPHRASE_PHONE_9 = 19,
42     BIND_USERPHRASE_PHONE_10 = 20,
43 };
44 
45 enum {
46     COLUMN_USERPHRASE_TIME,
47     COLUMN_USERPHRASE_ORIG_FREQ,
48     COLUMN_USERPHRASE_MAX_FREQ,
49     COLUMN_USERPHRASE_USER_FREQ,
50     COLUMN_USERPHRASE_LENGTH,
51     COLUMN_USERPHRASE_PHRASE,
52     COLUMN_USERPHRASE_PHONE_0,
53     COLUMN_USERPHRASE_PHONE_1,
54     COLUMN_USERPHRASE_PHONE_2,
55     COLUMN_USERPHRASE_PHONE_3,
56     COLUMN_USERPHRASE_PHONE_4,
57     COLUMN_USERPHRASE_PHONE_5,
58     COLUMN_USERPHRASE_PHONE_6,
59     COLUMN_USERPHRASE_PHONE_7,
60     COLUMN_USERPHRASE_PHONE_8,
61     COLUMN_USERPHRASE_PHONE_9,
62     COLUMN_USERPHRASE_PHONE_10,
63     COLUMN_USERPHRASE_COUNT,
64 };
65 
66 enum {
67     STMT_USERPHRASE_SELECT,
68     STMT_USERPHRASE_SELECT_BY_PHONE,
69     STMT_USERPHRASE_SELECT_BY_PHONE_PHRASE,
70     STMT_USERPHRASE_UPSERT,
71     STMT_USERPHRASE_DELETE,
72     STMT_USERPHRASE_GET_MAX_FREQ,
73     STMT_USERPHRASE_COUNT,
74 };
75 
76 typedef struct SqlStmtUserphrase_ {
77     const char *stmt;
78     const char column[COLUMN_USERPHRASE_COUNT];
79 } SqlStmtUserphrase;
80 
81 /*
82  * config_v1 table
83  */
84 
85 enum {
86     BIND_CONFIG_ID = 1,
87     BIND_CONFIG_VALUE = 2,
88 };
89 
90 enum {
91     COLUMN_CONFIG_ID,
92     COLUMN_CONFIG_VALUE,
93     COLUMN_CONFIG_COUNT,
94 };
95 
96 enum {
97     STMT_CONFIG_SELECT,
98     STMT_CONFIG_INSERT,
99     STMT_CONFIG_INCREASE,
100     STMT_CONFIG_COUNT,
101 };
102 
103 enum {
104     CONFIG_ID_LIFETIME,
105 };
106 
107 typedef struct SqlStmtConfig_ {
108     const char *stmt;
109     const char column[COLUMN_CONFIG_COUNT];
110 } SqlStmtConfig;
111 
112 extern const SqlStmtUserphrase SQL_STMT_USERPHRASE[STMT_USERPHRASE_COUNT];
113 
114 struct ChewingData;
115 
116 int InitUserphrase(struct ChewingData *pgdata, const char *path);
117 void TerminateUserphrase(struct ChewingData *pgdata);
118 
119 /* *INDENT-OFF* */
120 #endif
121 /* *INDENT-ON* */
122