1 /* -*- c-basic-offset: 2 -*- */
2 /*
3   Copyright(C) 2015 Kouhei Sutou <kou@clear-code.com>
4 
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9 
10   This library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14 
15   You should have received a copy of the GNU Lesser General Public
16   License along with this library; if not, write to the Free Software
17   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
18 */
19 
20 #ifndef MRN_OPERATIONS_HPP_
21 #define MRN_OPERATIONS_HPP_
22 
23 #include <groonga.h>
24 
25 namespace mrn {
26   class Operations {
27   public:
28     Operations(grn_ctx *ctx);
29     ~Operations();
30 
31     bool is_locked();
32 
33     grn_id start(const char *type,
34                  const char *table_name, size_t table_name_size);
35     void record_target(grn_id id, grn_id target_id);
36     void finish(grn_id id);
37 
38     void enable_recording();
39     void disable_recording();
40 
41     grn_hash *collect_processing_table_names();
42 
43     int repair(const char *table_name, size_t table_name_size);
44     int clear(const char *table_name, size_t table_name_size);
45 
46   private:
47     grn_ctx *ctx_;
48     grn_obj text_buffer_;
49     grn_obj id_buffer_;
50     grn_obj *table_;
51     struct {
52       grn_obj *type_;
53       grn_obj *table_;
54       grn_obj *record_;
55     } columns_;
56     bool is_enabled_recording_;
57   };
58 }
59 
60 #endif /* MRN_OPERATIONS_HPP_ */
61