| Premshree Pillai ( @ 2005-02-12 01:25:00 |
| Current music: | Eagles - Desperado |
Ruby code to generate SQL and docs
So here’s the Ruby code I’m using (that I said about) to generate SQL queries:
#!/usr/local/bin/ruby
# $premshree$ $2005-02-09 22:35$
require 'yaml'
tree = YAML::parse(File.open(file))
dbname = tree.transform.keys[0]
dbquery = "CREATE DATABASE IF NOT EXISTS #{dbname};\n\nUSE #{dbname};\n\n"
print dbquery
tables = tree.select("#{dbname}").transform[0]
tables.keys.each { |table|
query = "CREATE TABLE #{table} (\n"
fields = tree.select("#{dbname}/#{table}").transform[0]
fields.keys.each { |field|
type = tree.select("#{dbname}/#{table}/#{field}/type").transform[0]
isnotnull = tree.select("#{dbname}/#{table}/#{field}/isnotnull").transform[0]
default = tree.select("#{dbname}/#{table}/#{field}/default").transform[0]
description = tree.select("#{dbname}/#{table}/#{field}/description").transform[0]
temp = field.split("-")[1]
query = query + " " + temp + " " + type
if isnotnull
query = query + " NOT NULL"
end
if default != nil
#print default.class
if default.class == "String"
query = query + " DEFAULT " + "'" + "#{default}" + "'"
else
query = query + " DEFAULT '#{default}'"
end
end
if fields.keys[fields.keys.length - 1] != field
query = query + ","
end
query = query + "\n"
}
query = query + ");"
print query
}The YAML schema that I’m using:
database_name:
table_name:
-field_name:
type: type
isnotnull: 0|1
default:
description:
...
-field_name:
type: type
isnotnull: 0|1
default:
description:
...
table_name:
-field_name:
type: type
isnotnull: 0|1
default:
description:
...
-field_name:
type: type
isnotnull: 0|1
default:
description:Ah, I have to come up with some neat documentation format.