Class: IBRuby::InterBaseIndex

Inherits:
Object
  • Object
show all
Defined in:
lib/ibmeta.rb

Constant Summary collapse

INDEX_ACTIVE =
:INDEX_ACTIVE
INDEX_INACTIVE =
:INDEX_INACTIVE

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table, name, unique, columns, direction = nil, active = nil) ⇒ InterBaseIndex

Returns a new instance of InterBaseIndex.



27
28
29
30
31
32
33
34
# File 'lib/ibmeta.rb', line 27

def initialize(table, name, unique, columns, direction = nil, active = nil)
  @table = table
  @name = name
  @unique = unique
  @columns = columns
  @direction = direction
  @active = active
end

Instance Attribute Details

#activeObject

Returns the value of attribute active.



25
26
27
# File 'lib/ibmeta.rb', line 25

def active
  @active
end

#columnsObject

Returns the value of attribute columns.



25
26
27
# File 'lib/ibmeta.rb', line 25

def columns
  @columns
end

#directionObject

Returns the value of attribute direction.



25
26
27
# File 'lib/ibmeta.rb', line 25

def direction
  @direction
end

#nameObject

Returns the value of attribute name.



25
26
27
# File 'lib/ibmeta.rb', line 25

def name
  @name
end

#tableObject

Returns the value of attribute table.



25
26
27
# File 'lib/ibmeta.rb', line 25

def table
  @table
end

#uniqueObject

Returns the value of attribute unique.



25
26
27
# File 'lib/ibmeta.rb', line 25

def unique
  @unique
end

Instance Method Details

#change_activation(conn, activation) ⇒ Object



87
88
89
90
91
# File 'lib/ibmeta.rb', line 87

def change_activation(conn, activation)
  sql = "alter index #{@name} "
  sql << (activation == InterBaseIndex::INDEX_ACTIVE) ? "active" : "inactive"
  conn.execute_immediate( sql )      
end

#create_index(conn) ⇒ Object



70
71
72
73
# File 'lib/ibmeta.rb', line 70

def create_index(conn)
  #puts #{to_sql} vs #{self.to_sql}"
  conn.execute_immediate(self.to_sql)
end

#remove_index(conn) ⇒ Object



93
94
95
# File 'lib/ibmeta.rb', line 93

def remove_index(conn)
  conn.execute_immediate( "DROP INDEX #{name}" )
end

#rename_index(conn, new_name) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
# File 'lib/ibmeta.rb', line 75

def rename_index(conn, new_name)
  old_name = @name
  @name = new_name
  begin
    create(conn)
    @name = old_name
    remove(conn)
  ensure
    @name = old_name
  end
end

#to_sqlObject



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
# File 'lib/ibmeta.rb', line 39

def to_sql
  sql = "create"
  if unique == true
    sql << " unique"
  end
  if @direction
    case @direction
      when InterBaseMetaFunctions::ASCENDING
        sql << " asc"
      when InterBaseMetaFunctions::DESCENDING
        sql << " desc"
    end
  end
  
  sql << " index"
  
  sql << " #{@name}"
  
  sql << " on #{@table} ("
  columns.each() do |col|
    sql << ", " unless col == columns.first
    sql << ((col.instance_of? InterBaseColumn) ? col.name : col.to_s)
  end
  
  sql << ")"
  
  #puts "sql is #{sql}"
  
  sql
end