diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 00000000..c21e3f65 --- /dev/null +++ b/config/database.yml @@ -0,0 +1,30 @@ +# SQLite is enabled by default. Remember to change the dbfile path. +production: + adapter: sqlite + dbfile: /tmp/instiki_prod.db + +# Uncomment this section for MySQL: +# production: +# adapter: mysql +# host: localhost +# database: instiki +# username: instiki +# password: pass + +# Uncomment this section for PostgreSQL: +# production: +# adapter: postgresql +# host: localhost +# database: instiki +# username: instiki +# password: pass + +# The following settings are only used for testing and development. +development: + adapter: sqlite + dbfile: /tmp/instiki_dev.db + +test: + adapter: sqlite + dbfile: /tmp/instiki_test.db + diff --git a/db/pages.erbsql b/db/pages.erbsql new file mode 100644 index 00000000..afc57484 --- /dev/null +++ b/db/pages.erbsql @@ -0,0 +1,6 @@ +CREATE TABLE pages ( + id <%= @pk %>, + created_at <%= @datetime %> NOT NULL, + updated_at <%= @datetime %> NOT NULL, + web_id INTEGER NOT NULL +) <%= create_options %>; diff --git a/db/revisions.erbsql b/db/revisions.erbsql new file mode 100644 index 00000000..1639cf2e --- /dev/null +++ b/db/revisions.erbsql @@ -0,0 +1,7 @@ +CREATE TABLE revisions ( + id <%= @pk %>, + created_at <%= @datetime %> NOT NULL, + updated_at <%= @datetime %> NOT NULL, + page_id INTEGER NOT NULL, + content TEXT NOT NULL +) <%= create_options %>; diff --git a/db/webs.erbsql b/db/webs.erbsql new file mode 100644 index 00000000..24ebc04a --- /dev/null +++ b/db/webs.erbsql @@ -0,0 +1,7 @@ +CREATE TABLE pages ( + id <%= @pk %>, + created_at <%= @datetime %> NOT NULL, + updated_at <%= @datetime %> NOT NULL, + name VARCHAR(60) NOT NULL, + address VARCHAR(60) NOT NULL +) <%= create_options %>; diff --git a/lib/db_structure.rb b/lib/db_structure.rb new file mode 100644 index 00000000..0a2c4beb --- /dev/null +++ b/lib/db_structure.rb @@ -0,0 +1,32 @@ +require 'erb' + +def create_options + if @db == 'mysql' + 'ENGINE = ' + (mysql_engine rescue @mysql_engine) + end +end + +def db_structure(db) + db.downcase! + @db = db + case db + when 'postgresql' + @pk = 'SERIAL PRIMARY KEY' + @datetime = 'TIMESTAMP' + when 'sqlite', 'sqlite3' + @pk = 'INTEGER PRIMARY KEY' + @datetime = 'DATETIME' + when 'mysql' + @pk = 'INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY' + @datetime = 'DATETIME' + @mysql_engine = 'InnoDB' + else + raise "Unknown db type #{db}" + end + + s = '' + Dir['db/*.erbsql'].each do |filename| + s += ERB.new(File.read(filename)).result + end + s +end