File: db_alter_script_be.h

package info (click to toggle)
mysql-workbench 6.3.8%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 113,932 kB
  • ctags: 87,814
  • sloc: ansic: 955,521; cpp: 427,465; python: 59,728; yacc: 59,129; xml: 54,204; sql: 7,091; objc: 965; makefile: 638; sh: 613; java: 237; perl: 30; ruby: 6; php: 1
file content (69 lines) | stat: -rw-r--r-- 2,158 bytes parent folder | download | duplicates (2)
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
#ifndef _DB_ALTER_SCRIPT_BE_H_
#define _DB_ALTER_SCRIPT_BE_H_

#include "grt/grt_manager.h"
#include "grts/structs.db.mysql.h"
#include "grt/grt_string_list_model.h"
#include "diff_tree.h"
#include "db_mysql_sql_script_sync.h"

class DbMySQLDiffAlterException : public std::logic_error
{
public:
  DbMySQLDiffAlterException(const std::string& message)
    : std::logic_error(message)
  {}
};

class DbMySQLDiffAlter : public SynchronizeDifferencesPageBEInterface
{
  bec::GRTManager *manager_;
  grt::StringListRef _alter_list;
  grt::ListRef<GrtNamedObject> _alter_object_list;
  db_mysql_CatalogRef _left_catalog, _right_catalog;
  boost::shared_ptr<DiffChange> _alter_change;
  db_mysql_CatalogRef _left_cat_copy;
  grt::DictRef _db_options;

public:

  void set_db_options(grt::DictRef db_options){_db_options = db_options;};
  grt::DictRef get_db_options()const{return _db_options.is_valid()?_db_options:grt::DictRef(manager_->get_grt());};
  virtual db_mysql_CatalogRef get_model_catalog()
  {
    return db_mysql_CatalogRef::cast_from(
      manager_->get_grt()->get("/wb/doc/physicalModels/0/catalog"));
  }
  virtual void get_compared_catalogs(db_CatalogRef &left, db_CatalogRef &right)
  {
    left = _left_catalog;
    right = _right_catalog;
  }

  DbMySQLDiffAlter(bec::GRTManager *m);
  virtual ~DbMySQLDiffAlter();

  bec::GRTManager *get_grt_manager() { return manager_; }

  std::string generate_alter();

  virtual boost::shared_ptr<DiffTreeBE> init_diff_tree(const std::vector<std::string>& schemata, const grt::ValueRef &ext_cat, 
                                                       const grt::ValueRef &cat2, grt::StringListRef SchemaSkipList,
                                                       grt::DictRef options);

  virtual std::string get_col_name(const size_t col_id);

  virtual std::string get_sql_for_object(GrtNamedObjectRef obj)
  {
    std::string result;
    for (size_t i = 0; i < _alter_list.count(); ++i)
    if (_alter_object_list.get(i) == obj)
    {
      result.append(_alter_list.get(i)).append("\n");
    }
    return result;
  }

  void restore_overriden_names();
};
#endif //#ifndef _DB_ALTER_SCRIPT_BE_H_