Class: Baza::Driver::Mysql::Database

Inherits:
Baza::Database show all
Defined in:
lib/baza/driver/mysql/database.rb

Constant Summary collapse

CREATE_ALLOWED_KEYS =
[:columns, :indexes, :temp, :return_sql].freeze

Instance Attribute Summary

Attributes inherited from Baza::Database

#db, #driver, #name

Instance Method Summary collapse

Methods inherited from Baza::Database

#import_file!, #initialize, #name_changed?, #name_was, #table, #table_exists?, #tables, #to_param, #use

Methods included from Baza::DatabaseModelFunctionality

#model_name, #to_model

Constructor Details

This class inherits a constructor from Baza::Database

Instance Method Details

#create_table(name, data, args = nil) ⇒ Object

Creates a new table by the given name and data.



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
# File 'lib/baza/driver/mysql/database.rb', line 15

def create_table(name, data, args = nil)
  raise "No columns was given for '#{name}'." if !data[:columns] || data[:columns].empty?

  sql = "CREATE"
  sql << " TEMPORARY" if data[:temp]
  sql << " TABLE #{db.sep_table}#{@db.escape_table(name)}#{db.sep_table} ("

  first = true
  data[:columns].each do |col_data|
    sql << ", " unless first
    first = false if first
    col_data.delete(:after) if col_data[:after]
    sql << @db.columns.data_sql(col_data)
  end

  if data[:indexes] && !data[:indexes].empty?
    sql << ", "
    sql << Baza::Driver::Mysql::Table.create_indexes(
      data[:indexes],
      db: @db,
      return_sql: true,
      create: false,
      on_table: false,
      table_name: name
    )
  end

  sql << ")"

  # return [sql] if args && args[:return_sql]

  sql = Baza::Driver::Mysql::Sql::CreateTable.new(
    columns: data.fetch(:columns),
    indexes: data[:indexes],
    name: name,
    temporary: data[:temp]
  ).sql

  return sql if args && args[:return_sql]

  use do
    sql.each do |sql_i|
      @db.query(sql_i)
    end
  end
end

#dropObject



7
8
9
10
11
# File 'lib/baza/driver/mysql/database.rb', line 7

def drop
  sql = "DROP DATABASE `#{@db.escape_database(name)}`"
  @db.query(sql)
  self
end

#rename(new_name) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/baza/driver/mysql/database.rb', line 62

def rename(new_name)
  new_name = new_name.to_s
  @db.databases.create(name: new_name)

  tables.each do |table|
    @db.query("ALTER TABLE `#{@db.escape_database(name_was)}`.`#{@db.escape_table(table.name)}` RENAME `#{@db.escape_database(name)}`.`#{@db.escape_table(table.name)}`")
  end

  @db.query("DROP DATABASE `#{@db.escape_database(name_was)}`")

  @name = new_name
  @name_was = new_name
end

#save!Object



2
3
4
5
# File 'lib/baza/driver/mysql/database.rb', line 2

def save!
  rename(name) unless name.to_s == name_was
  self
end