gen_db()
result = get_db_connection() do |db|
case @db_dsn
- when /^SQLite3:/ then inc="AUTOINCREMENT"
- when /^Mysql:/ then inc="AUTO_INCREMENT"
- else inc="AUTOINCREMENT"
+ when /^SQLite3:/ then
+ inc="AUTOINCREMENT"
+ post_fix=""
+ when /^Mysql:/ then
+ inc="AUTO_INCREMENT"
+ post_fix="ENGINE = INNODB DEFAULT CHARSET = UTF8"
+ else
+ inc="AUTOINCREMENT"
+ post_fix=""
end
# remove table
# create table
db.do "CREATE TABLE db(version INTEGER )"
db.do "INSERT INTO db (version) VALUES('#{@db_version}')"
+ db.do "CREATE TABLE os_category ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE ) #{post_fix}"
db.do "CREATE TABLE distributions(name VARCHAR(32) PRIMARY KEY, pkgsvr_url VARCHAR(256), pkgsvr_addr VARCHAR(64), status VARCHAR(32) DEFAULT 'OPEN')"
- db.do "CREATE TABLE remote_build_servers(id INTEGER PRIMARY KEY #{inc}, svr_addr VARCHAR(64))"
+ db.do "CREATE TABLE remote_build_servers ( id INTEGER PRIMARY KEY #{inc}, svr_addr VARCHAR(64) NOT NULL UNIQUE, description VARCHAR(256) )#{post_fix}"
db.do "CREATE TABLE sync_pkg_servers(id INTEGER PRIMARY KEY #{inc}, pkgsvr_url VARCHAR(256), period INTEGER, dist_name VARCHAR(32))"
db.do "CREATE TABLE supported_os(name VARCHAR(32) PRIMARY KEY)"
# USERS/GROUPS
- db.do "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY #{inc}, email VARCHAR(256), password_hash VARCHAR(256), password_salt VARCHAR(256), name VARCHAR(256), group_id INTEGER)"
- db.do "CREATE TABLE IF NOT EXISTS groups(id INTEGER PRIMARY KEY #{inc}, name VARCHAR(256))"
+ # users
+ db.do "CREATE TABLE users ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, email VARCHAR(256), password_hash VARCHAR(256), password_salt VARCHAR(256) ) #{post_fix}"
+ # groups
+ db.do "CREATE TABLE groups ( id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32) NOT NULL UNIQUE, admin VARCHAR(32) NOT NULL DEFAULT 'FALSE', description VARCHAR(256) )#{post_fix}"
+ # user groups (users -- groups)
+ db.do "CREATE TABLE user_groups ( users_id INTEGER NOT NULL, groups_id INTEGER NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', PRIMARY KEY ( users_id, groups_id ),
+ CONSTRAINT fk_users_has_groups_users1 FOREIGN KEY ( users_id ) REFERENCES users ( id ),
+ CONSTRAINT fk_users_has_groups_groups1 FOREIGN KEY ( groups_id ) REFERENCES groups ( id )) #{post_fix}"
db.do "CREATE TABLE IF NOT EXISTS group_project_accesses(group_id INTEGER, prj_id INTEGER, build VARCHAR(32))"
- db.do "INSERT INTO groups VALUES (0, 'administrators')"
- db.do "INSERT INTO users VALUES (0, 'admin@user', '', '', 'admin', 0)"
+
+ db.do "INSERT INTO users (name,email,password_hash,password_salt) VALUES ('administrators','admin@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')"
+ db.do "INSERT INTO groups (name, admin, description) VALUES ('admin','TRUE','')"
+ db.do "INSERT INTO user_groups (users_id, groups_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'admin@user' and groups.name = 'admin'"
# PROJECTS
db.do "CREATE TABLE projects(id INTEGER PRIMARY KEY #{inc}, name VARCHAR(32), ptype VARCHAR(32), password VARCHAR(32), dist_name VARCHAR(32))"