Module: Create

Included in:
Query
Defined in:
lib/yaml2sql.rb

Instance Method Summary collapse

Instance Method Details

#build_create_query(obj) ⇒ Object



31
32
33
34
35
36
# File 'lib/yaml2sql.rb', line 31

def build_create_query(obj)
  name = obj['name']
  create = "create table if not exists #{name}"
  insert = create_insert_str(obj['columns'], obj['foreign'], obj['indexes'])
  create + insert
end

#create_insert_str(columns_obj, foreign_obj, indexes_obj) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/yaml2sql.rb', line 19

def create_insert_str(columns_obj, foreign_obj, indexes_obj)
  insert_statements = ['id integer primary key autoincrement']
  insert_statements +=  columns_obj.map{ |x| create_single_insert(x) }
  insert_statements += foreign_obj.map{ |x| create_single_foreign(x) } if foreign_obj

  insert_statements = "(#{insert_statements.join(',')});"

  insert_statements +=  indexes_obj.map { |x| create_single_index(x) }.join(" ") if indexes_obj

  insert_statements
end

#create_single_foreign(foreign_obj) ⇒ Object



9
10
11
12
# File 'lib/yaml2sql.rb', line 9

def create_single_foreign(foreign_obj)
  name, table, key = ['name', 'table', 'key'].map{ |x| foreign_obj[x] }
  "foreign key (#{name}) references #{table}(#{key})"
end

#create_single_index(index_obj) ⇒ Object



14
15
16
17
# File 'lib/yaml2sql.rb', line 14

def create_single_index(index_obj)
  name, table, key = ['name', 'table', 'key'].map{ |x| index_obj[x] }
  "create index if not exists #{name} on #{table + '(' + key + ');'}"
end

#create_single_insert(insert_obj) ⇒ Object



4
5
6
7
# File 'lib/yaml2sql.rb', line 4

def create_single_insert(insert_obj)
  name, type = insert_obj['name'], insert_obj['type']
  "#{name} #{type} #{'unique' if insert_obj.key?('unique')}"
end

#create_tables(obj) ⇒ Object



38
39
40
# File 'lib/yaml2sql.rb', line 38

def create_tables(obj)
  obj["tables"].map{ |x| build_create_query(x) }
end