Premshree Pillai ([info]premshree) wrote,
@ 2005-02-12 01:25:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
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.



Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…