user score

This commit is contained in:
baiyu 2014-04-21 11:13:45 +08:00
parent 1c69e80745
commit 36cd91401f
11 changed files with 3167 additions and 5 deletions

View File

@ -0,0 +1,108 @@
# encoding: utf-8
#
# Redmine - project management software
# Copyright (C) 2006-2013 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module UserScoreHelper
def calculate_collaboration_count(user)
issue_c = 0
issues = Issue.where('author_id = ?', user.id)
issues.each do |issue|
issue_c = issue_c + issue.journals.where("user_id <> ?", user.id).count
end
issue_c = issue_c + Journal.where("user_id = ?", user.id)
return issue_c
end
def calculate_influence_count(user)
watcher_count = watcher_users(User.current.id).count
end
def calculate_skill_count(user)
0
end
def calculate_level(user)
1
end
def calculate_activity_count(user)
# commit_count = user.changesets.count
# issue_details_count = 0
# issues = Issue.where('assigned_to_id = ?', user.id)
# issues.each do |issue|
# change_count = issue.journals.where("prop_key = ?", "done_ratio").count
# issue_details_count = change_count + issue_details_count
# end
# file_count = user.file_commit.count
# issue_count = Issue.where('author_id = ?', user.id).count
f = user.user_score.file
i = user.user_score.issue
f_max = UserScore.find_max_file
f_min = UserScore.find_min_file
i_max = UserScore.find_max_issue
i_min = UserScore.find_min_issue
score = 100 * ((f - f_min)/(f_max - f_min) + (i - i_min)/(i_max - i_min))
end
def calculate_file(user)
file_count = user.file_commit.count
issue_count = Issue.where('author_id = ?', user.id).count
return (file_count + issue_count)
end
def calculate_issue(user)
commit_count = user.changesets.count
issue_details_count = 0
issues = Issue.where('assigned_to_id = ?', user.id)
issues.each do |issue|
change_count = issue.journals.where("prop_key = ?", "done_ratio").count
issue_details_count = change_count + issue_details_count
end
return (commit_count + issue_details_count)
end
def calculate_user_score(user)
collaboration = calculate_collaboration_count(user)
influence = calculate_influence_count(user)
skill = calculate_skill_count(user)
activity = calculate_activity_count(user)
file = calculate_file(user)
issue = calculate_issue(user)
level = calculate_level(user)
user.user_score << UserScore.new(:collaboration => collaboration, :influence => influence, :skill => skill,
:activity => activity, :file => file, :issue => issue, :level => level)
end
def update_user_score(user)
collaboration = calculate_collaboration_count(user)
influence = calculate_influence_count(user)
skill = calculate_skill_count(user)
activity = calculate_activity_count(user)
file = calculate_file(user)
issue = calculate_issue(user)
level = calculate_level(user)
user.user_score.update_attributes(:collaboration => collaboration, :influence => influence, :skill => skill,
:activity => activity, :file => file, :issue => issue, :level => level)
end
end

View File

@ -90,6 +90,7 @@ class User < Principal
has_many :students_for_courses
has_many :courses, :through => :students_for_courses, :source => :project
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
has_many :file_commit, :class_name => 'Attachment', :foreign_key => 'author_id', :conditions => "container_tpye = 'Project' or container_type = 'Version'"
####
# added by bai
has_many :join_in_contests, :dependent => :destroy
@ -98,6 +99,7 @@ class User < Principal
has_many :wiki_contents, :foreign_key => 'author_id'
has_many :journals
has_many :messages, :foreign_key => 'author_id'
has_one :user_socre, :dependent => :destroy
# end
######added by nie

36
app/models/user_scores.rb Normal file
View File

@ -0,0 +1,36 @@
# Redmine - project management software
# Copyright (C) 2006-2013 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class UserScore < ActiveRecord::Base
belongs_to :user
def self.find_max_file
self.maximum(:file)
end
def self.find_min_file
self.minimum(:file)
end
def self.find_max_issue
self.maximum(:issue)
end
def self.find_min_issue
self.minimum(:file)
end
end

View File

@ -0,0 +1,13 @@
class CreateUserScore < ActiveRecord::Migration
def change
create_table :user_scores do |t|
t.integer :user_id, :null => false
t.integer :collaboration
t.integer :influence
t.integer :skill
t.integer :active
t.timestamps
end
end
end

View File

@ -0,0 +1,7 @@
class AddFiledToUserPreference < ActiveRecord::Migration
def change
add_column :user_scores, :level, :integer
add_column :user_scores, :file, :integer
add_column :user_scores, :issue, :integer
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140320022724) do
ActiveRecord::Schema.define(:version => 20140413022725) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@ -23,6 +23,15 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
create_table "apply_project_masters", :force => true do |t|
t.integer "user_id"
t.string "apply_type"
t.integer "apply_id"
t.integer "status"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "attachments", :force => true do |t|
t.integer "container_id"
t.string "container_type", :limit => 30
@ -62,6 +71,20 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
create_table "bak_mentioned", :primary_key => "Id", :force => true do |t|
t.string "this_real_name", :limit => 1000
t.integer "is_mentioned_in"
t.string "context", :limit => 2000
end
add_index "bak_mentioned", ["this_real_name", "is_mentioned_in"], :name => "name_mention", :length => {"this_real_name"=>900, "is_mentioned_in"=>nil}
add_index "bak_mentioned", ["this_real_name"], :name => "this_real_name"
add_index "bak_mentioned", ["this_real_name"], :name => "this_real_name_2"
add_index "bak_mentioned", ["this_real_name"], :name => "this_real_name_3", :length => {"this_real_name"=>900}
add_index "bak_mentioned", ["this_real_name"], :name => "this_real_name_4"
add_index "bak_mentioned", ["this_real_name"], :name => "this_real_name_5"
add_index "bak_mentioned", ["this_real_name"], :name => "this_real_name_6"
create_table "biding_projects", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
@ -101,6 +124,11 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "categories", :primary_key => "Id", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "proj_categories"
end
create_table "changes", :force => true do |t|
t.integer "changeset_id", :null => false
t.string "action", :limit => 1, :default => "", :null => false
@ -233,6 +261,14 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "eco_projects", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.integer "eco_proj_id"
t.datetime "date_collected"
end
add_index "eco_projects", ["proj_id"], :name => "proj_id"
create_table "enabled_modules", :force => true do |t|
t.integer "project_id"
t.string "name", :null => false
@ -254,6 +290,137 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "events", :primary_key => "event_id", :force => true do |t|
t.string "job_name"
t.datetime "event_time"
t.string "event_type", :limit => 20
end
create_table "fm_article", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "article_title", :limit => 16777215
t.text "article_link", :limit => 16777215
t.text "article_time", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_article", ["proj_id"], :name => "proj_id"
create_table "fm_bugtracker_link", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_bugtracker_link", ["proj_id"], :name => "proj_id"
create_table "fm_datametric_link", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_datametric_link", ["proj_id"], :name => "proj_id"
create_table "fm_dependency_link", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_dependency_link", ["proj_id"], :name => "proj_id"
create_table "fm_download_link", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "download_link", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_download_link", ["proj_id"], :name => "proj_id"
create_table "fm_heartbeat", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.float "popularity_score", :limit => 12
t.float "vitality_score", :limit => 12
t.integer "subscription"
t.integer "voting_score"
t.integer "voting_count"
t.datetime "date_collected"
end
add_index "fm_heartbeat", ["proj_id"], :name => "proj_id"
create_table "fm_license", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_license", ["proj_id"], :name => "proj_id"
create_table "fm_mailinglist_link", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_mailinglist_link", ["proj_id"], :name => "proj_id"
create_table "fm_operating_system", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_operating_system", ["proj_id"], :name => "proj_id"
create_table "fm_programming_language", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_programming_language", ["proj_id"], :name => "proj_id"
create_table "fm_project_spotlight", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.text "project_name", :limit => 16777215
t.text "project_spotlight_link", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_project_spotlight", ["proj_id"], :name => "proj_id"
create_table "fm_release", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.text "release_version", :limit => 16777215
t.text "release_time", :limit => 16777215
t.text "release_tag", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_release", ["proj_id"], :name => "proj_id"
create_table "fm_submit", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "submitter", :limit => 16777215
t.text "submitter_link", :limit => 16777215
t.text "submit_time", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_submit", ["proj_id"], :name => "proj_id"
create_table "fm_summary", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.text "description", :limit => 16777215
t.datetime "date_collected"
end
add_index "fm_summary", ["proj_id"], :name => "proj_id"
create_table "forums", :force => true do |t|
t.string "name", :null => false
t.string "description", :default => ""
@ -479,6 +646,22 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "news", ["created_on"], :name => "index_news_on_created_on"
add_index "news", ["project_id"], :name => "news_project_id"
create_table "no_uses", :force => true do |t|
t.integer "user_id", :null => false
t.string "no_use_type"
t.integer "no_use_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "ohloh_tagged", :force => true do |t|
t.integer "proj_id", :default => 0, :null => false
t.string "description", :limit => 100, :null => false
t.datetime "date_collected"
end
add_index "ohloh_tagged", ["proj_id"], :name => "proj_id"
create_table "open_id_authentication_associations", :force => true do |t|
t.integer "issued"
t.integer "lifetime"
@ -494,6 +677,19 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
t.string "salt", :null => false
end
create_table "open_source_projects", :force => true do |t|
t.string "name"
t.text "description"
t.integer "commit_count", :default => 0
t.integer "code_line", :default => 0
t.integer "users_count", :default => 0
t.date "last_commit_time"
t.string "url"
t.date "date_collected"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "praise_tread_caches", :force => true do |t|
t.integer "object_id", :null => false
t.string "object_type"
@ -573,6 +769,23 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "relative_memos", :force => true do |t|
t.integer "osp_id", :null => false
t.integer "parent_id"
t.string "subject", :null => false
t.text "content", :null => false
t.integer "author_id"
t.integer "replies_count", :default => 0
t.integer "last_reply_id"
t.boolean "lock", :default => false
t.boolean "sticky", :default => false
t.boolean "is_quote", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "viewed_count_crawl", :default => 0
t.integer "viewed_count_local", :default => 0
end
create_table "repositories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "url", :default => "", :null => false
@ -601,8 +814,6 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
create_table "schools", :force => true do |t|
t.string "name"
t.string "province"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "seems_rateable_cached_ratings", :force => true do |t|
@ -710,6 +921,22 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
add_index "tokens", ["value"], :name => "tokens_value", :unique => true
create_table "tprojects", :force => true do |t|
t.string "name", :limit => 1000, :default => "0"
t.text "description", :limit => 16777215
t.string "commit_count", :limit => 100, :default => "0"
t.string "code_line", :limit => 100
t.string "last_commit_time", :limit => 100
t.string "url", :limit => 1000
t.datetime "date_collected"
t.string "created_at", :limit => 100
t.string "updated_at", :limit => 100
t.integer "proj_id", :null => false
t.string "user_count", :limit => 100
end
add_index "tprojects", ["proj_id"], :name => "proj_id"
create_table "trackers", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_in_chlog", :default => false, :null => false
@ -758,6 +985,19 @@ ActiveRecord::Schema.define(:version => 20140320022724) do
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "user_scores", :force => true do |t|
t.integer "user_id", :null => false
t.integer "collaboration"
t.integer "influence"
t.integer "skill"
t.integer "active"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "level"
t.integer "file"
t.integer "issue"
end
create_table "user_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"

887
db/schema.rb.BASE.rb Normal file
View File

@ -0,0 +1,887 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20131224021723) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
t.string "act_type", :null => false
t.integer "user_id", :null => false
end
add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type"
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
create_table "attachments", :force => true do |t|
t.integer "container_id"
t.string "container_type", :limit => 30
t.string "filename", :default => "", :null => false
t.string "disk_filename", :default => "", :null => false
t.integer "filesize", :default => 0, :null => false
t.string "content_type", :default => ""
t.string "digest", :limit => 40, :default => "", :null => false
t.integer "downloads", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.string "description"
t.string "disk_directory"
end
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
create_table "auth_sources", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 60, :default => "", :null => false
t.string "host", :limit => 60
t.integer "port"
t.string "account"
t.string "account_password", :default => ""
t.string "base_dn"
t.string "attr_login", :limit => 30
t.string "attr_firstname", :limit => 30
t.string "attr_lastname", :limit => 30
t.string "attr_mail", :limit => 30
t.boolean "onthefly_register", :default => false, :null => false
t.boolean "tls", :default => false, :null => false
t.string "filter"
t.integer "timeout"
end
add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
create_table "biding_projects", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "bids", :force => true do |t|
t.string "name"
t.string "budget", :null => false
t.integer "author_id"
t.date "deadline"
t.string "description"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.integer "commit"
t.integer "reward_type"
t.integer "homework_type"
t.integer "parent_id"
t.string "password"
end
create_table "boards", :force => true do |t|
t.integer "project_id", :null => false
t.string "name", :default => "", :null => false
t.string "description"
t.integer "position", :default => 1
t.integer "topics_count", :default => 0, :null => false
t.integer "messages_count", :default => 0, :null => false
t.integer "last_message_id"
t.integer "parent_id"
end
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "changes", :force => true do |t|
t.integer "changeset_id", :null => false
t.string "action", :limit => 1, :default => "", :null => false
t.text "path", :null => false
t.text "from_path"
t.string "from_revision"
t.string "revision"
t.string "branch"
end
add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
create_table "changeset_parents", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "parent_id", :null => false
end
add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids"
add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
create_table "changesets", :force => true do |t|
t.integer "repository_id", :null => false
t.string "revision", :null => false
t.string "committer"
t.datetime "committed_on", :null => false
t.text "comments"
t.date "commit_date"
t.string "scmid"
t.integer "user_id"
end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
create_table "changesets_issues", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "issue_id", :null => false
end
add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
create_table "comments", :force => true do |t|
t.string "commented_type", :limit => 30, :default => "", :null => false
t.integer "commented_id", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.text "comments"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
create_table "courses", :force => true do |t|
t.integer "tea_id"
t.string "name"
t.integer "state"
t.string "code"
t.integer "time"
t.string "extra"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "location"
t.string "term"
t.string "string"
t.string "password"
t.string "setup_time"
t.string "endup_time"
t.string "class_period"
end
create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.string "field_format", :limit => 30, :default => "", :null => false
t.text "possible_values"
t.string "regexp", :default => ""
t.integer "min_length", :default => 0, :null => false
t.integer "max_length", :default => 0, :null => false
t.boolean "is_required", :default => false, :null => false
t.boolean "is_for_all", :default => false, :null => false
t.boolean "is_filter", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "searchable", :default => false
t.text "default_value"
t.boolean "editable", :default => true
t.boolean "visible", :default => true, :null => false
t.boolean "multiple", :default => false
end
add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
create_table "custom_fields_projects", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
end
add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true
create_table "custom_values", :force => true do |t|
t.string "customized_type", :limit => 30, :default => "", :null => false
t.integer "customized_id", :default => 0, :null => false
t.integer "custom_field_id", :default => 0, :null => false
t.text "value"
end
add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
create_table "documents", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "category_id", :default => 0, :null => false
t.string "title", :limit => 60, :default => "", :null => false
t.text "description"
t.datetime "created_on"
end
add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "enabled_modules", :force => true do |t|
t.integer "project_id"
t.string "name", :null => false
end
add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
create_table "enumerations", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "is_default", :default => false, :null => false
t.string "type"
t.boolean "active", :default => true, :null => false
t.integer "project_id"
t.integer "parent_id"
t.string "position_name", :limit => 30
end
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "forums", :force => true do |t|
t.string "name", :null => false
t.string "description", :default => ""
t.integer "topic_count", :default => 0
t.integer "memo_count", :default => 0
t.integer "last_memo_id", :default => 0
t.integer "creator_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "groups_users", :id => false, :force => true do |t|
t.integer "group_id", :null => false
t.integer "user_id", :null => false
end
add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
create_table "homework_attaches", :force => true do |t|
t.integer "bid_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "homework_for_courses", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
end
create_table "issue_categories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.integer "assigned_to_id"
end
add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
create_table "issue_relations", :force => true do |t|
t.integer "issue_from_id", :null => false
t.integer "issue_to_id", :null => false
t.string "relation_type", :default => "", :null => false
t.integer "delay"
end
add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true
add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
create_table "issue_statuses", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_closed", :default => false, :null => false
t.boolean "is_default", :default => false, :null => false
t.integer "position", :default => 1
t.integer "default_done_ratio"
end
add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
create_table "issues", :force => true do |t|
t.integer "tracker_id", :null => false
t.integer "project_id", :null => false
t.string "subject", :default => "", :null => false
t.text "description"
t.date "due_date"
t.integer "category_id"
t.integer "status_id", :null => false
t.integer "assigned_to_id"
t.integer "priority_id", :null => false
t.integer "fixed_version_id"
t.integer "author_id", :null => false
t.integer "lock_version", :default => 0, :null => false
t.datetime "created_on"
t.datetime "updated_on"
t.date "start_date"
t.integer "done_ratio", :default => 0, :null => false
t.float "estimated_hours"
t.integer "parent_id"
t.integer "root_id"
t.integer "lft"
t.integer "rgt"
t.boolean "is_private", :default => false, :null => false
t.datetime "closed_on"
end
add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
add_index "issues", ["project_id"], :name => "issues_project_id"
add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
create_table "join_in_contests", :force => true do |t|
t.integer "user_id"
t.integer "bid_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "journal_details", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_replies", :id => false, :force => true do |t|
t.integer "journal_id"
t.integer "user_id"
t.integer "reply_id"
end
add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id"
add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id"
add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id"
create_table "journals", :force => true do |t|
t.integer "journalized_id", :default => 0, :null => false
t.string "journalized_type", :limit => 30, :default => "", :null => false
t.integer "user_id", :default => 0, :null => false
t.text "notes"
t.datetime "created_on", :null => false
t.boolean "private_notes", :default => false, :null => false
end
add_index "journals", ["created_on"], :name => "index_journals_on_created_on"
add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id"
add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
create_table "journals_for_messages", :force => true do |t|
t.integer "jour_id"
t.string "jour_type"
t.integer "user_id"
t.text "notes"
t.integer "status"
t.integer "reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.string "m_parent_id"
t.boolean "is_readed"
t.integer "m_reply_count"
t.integer "m_reply_id"
end
create_table "member_roles", :force => true do |t|
t.integer "member_id", :null => false
t.integer "role_id", :null => false
t.integer "inherited_from"
end
add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
create_table "members", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.datetime "created_on"
t.boolean "mail_notification", :default => false, :null => false
end
add_index "members", ["project_id"], :name => "index_members_on_project_id"
add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
add_index "members", ["user_id"], :name => "index_members_on_user_id"
create_table "memos", :force => true do |t|
t.integer "forum_id", :null => false
t.integer "parent_id"
t.string "subject", :null => false
t.text "content", :null => false
t.integer "author_id", :null => false
t.integer "replies_count", :default => 0
t.integer "last_reply_id"
t.boolean "lock", :default => false
t.boolean "sticky", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "viewed_count", :default => 0
end
create_table "messages", :force => true do |t|
t.integer "board_id", :null => false
t.integer "parent_id"
t.string "subject", :default => "", :null => false
t.text "content"
t.integer "author_id"
t.integer "replies_count", :default => 0, :null => false
t.integer "last_reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.boolean "locked", :default => false
t.integer "sticky", :default => 0
end
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
add_index "messages", ["board_id"], :name => "messages_board_id"
add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
add_index "messages", ["parent_id"], :name => "messages_parent_id"
create_table "news", :force => true do |t|
t.integer "project_id"
t.string "title", :limit => 60, :default => "", :null => false
t.string "summary", :default => ""
t.text "description"
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.integer "comments_count", :default => 0, :null => false
end
add_index "news", ["author_id"], :name => "index_news_on_author_id"
add_index "news", ["created_on"], :name => "index_news_on_created_on"
add_index "news", ["project_id"], :name => "news_project_id"
create_table "open_id_authentication_associations", :force => true do |t|
t.integer "issued"
t.integer "lifetime"
t.string "handle"
t.string "assoc_type"
t.binary "server_url"
t.binary "secret"
end
create_table "open_id_authentication_nonces", :force => true do |t|
t.integer "timestamp", :null => false
t.string "server_url"
t.string "salt", :null => false
end
create_table "praise_tread_caches", :force => true do |t|
t.integer "object_id", :null => false
t.string "object_type"
t.integer "praise_num"
t.integer "tread_num"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "praise_treads", :force => true do |t|
t.integer "user_id", :null => false
t.integer "praise_tread_object_id"
t.string "praise_tread_object_type"
t.integer "praise_or_tread"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "project_infos", :force => true do |t|
t.integer "project_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "project_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"
t.integer "project_id"
t.integer "project_type"
t.float "grade", :default => 0.0
t.integer "course_ac_para", :default => 0
end
add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
create_table "projects", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "description"
t.string "homepage", :default => ""
t.boolean "is_public", :default => true, :null => false
t.integer "parent_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "identifier"
t.integer "status", :default => 1, :null => false
t.integer "lft"
t.integer "rgt"
t.boolean "inherit_members", :default => false, :null => false
t.integer "project_type"
t.boolean "hidden_repo", :default => false, :null => false
end
add_index "projects", ["lft"], :name => "index_projects_on_lft"
add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
create_table "projects_trackers", :id => false, :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
create_table "queries", :force => true do |t|
t.integer "project_id"
t.string "name", :default => "", :null => false
t.text "filters"
t.integer "user_id", :default => 0, :null => false
t.boolean "is_public", :default => false, :null => false
t.text "column_names"
t.text "sort_criteria"
t.string "group_by"
t.string "type"
end
add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "repositories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "url", :default => "", :null => false
t.string "login", :limit => 60, :default => ""
t.string "password", :default => ""
t.string "root_url", :default => ""
t.string "type"
t.string "path_encoding", :limit => 64
t.string "log_encoding", :limit => 64
t.text "extra_info"
t.string "identifier"
t.boolean "is_default", :default => false
end
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
create_table "roles", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "assignable", :default => true
t.integer "builtin", :default => 0, :null => false
t.text "permissions"
t.string "issues_visibility", :limit => 30, :default => "default", :null => false
end
create_table "seems_rateable_cached_ratings", :force => true do |t|
t.integer "cacheable_id", :limit => 8
t.string "cacheable_type"
t.float "avg", :null => false
t.integer "cnt", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "seems_rateable_rates", :force => true do |t|
t.integer "rater_id", :limit => 8
t.integer "rateable_id"
t.string "rateable_type"
t.float "stars", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "settings", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "value"
t.datetime "updated_on"
end
add_index "settings", ["name"], :name => "index_settings_on_name"
create_table "shares", :force => true do |t|
t.date "created_on"
t.string "url"
t.string "title"
t.integer "share_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "project_id"
t.integer "user_id"
t.string "description"
end
create_table "students_for_courses", :force => true do |t|
t.integer "student_id"
t.integer "course_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type"
t.string "context", :limit => 128
t.datetime "created_at"
end
add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
create_table "tags", :force => true do |t|
t.string "name"
end
create_table "teachers", :force => true do |t|
t.string "tea_name"
t.string "location"
t.integer "couurse_time"
t.integer "course_code"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "extra"
end
create_table "time_entries", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
t.integer "issue_id"
t.float "hours", :null => false
t.string "comments"
t.integer "activity_id", :null => false
t.date "spent_on", :null => false
t.integer "tyear", :null => false
t.integer "tmonth", :null => false
t.integer "tweek", :null => false
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
create_table "tokens", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.string "action", :limit => 30, :default => "", :null => false
t.string "value", :limit => 40, :default => "", :null => false
t.datetime "created_on", :null => false
end
add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
add_index "tokens", ["value"], :name => "tokens_value", :unique => true
create_table "trackers", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_in_chlog", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "is_in_roadmap", :default => true, :null => false
t.integer "fields_bits", :default => 0
end
create_table "user_extensions", :force => true do |t|
t.integer "user_id", :null => false
t.date "birthday"
t.string "brief_introduction"
t.integer "gender"
t.string "location"
t.string "occupation"
t.integer "work_experience"
t.integer "zip_code"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "technical_title"
t.integer "identity"
t.string "student_id"
t.string "teacher_realname"
t.string "student_realname"
t.string "location_city"
end
create_table "user_grades", :force => true do |t|
t.integer "user_id", :null => false
t.integer "project_id", :null => false
t.float "grade", :default => 0.0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade"
add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id"
add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id"
create_table "user_preferences", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.text "others"
t.boolean "hide_mail", :default => false
t.string "time_zone"
end
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "user_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.float "grade", :default => 0.0
end
add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count"
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
create_table "users", :force => true do |t|
t.string "login", :default => "", :null => false
t.string "hashed_password", :limit => 40, :default => "", :null => false
t.string "firstname", :limit => 30, :default => "", :null => false
t.string "lastname", :default => "", :null => false
t.string "mail", :limit => 60, :default => "", :null => false
t.boolean "admin", :default => false, :null => false
t.integer "status", :default => 1, :null => false
t.datetime "last_login_on"
t.string "language", :limit => 5, :default => ""
t.integer "auth_source_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "type"
t.string "identity_url"
t.string "mail_notification", :default => "", :null => false
t.string "salt", :limit => 64
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type"
create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false
t.string "description", :default => ""
t.date "effective_date"
t.datetime "created_on"
t.datetime "updated_on"
t.string "wiki_page_title"
t.string "status", :default => "open"
t.string "sharing", :default => "none", :null => false
end
add_index "versions", ["project_id"], :name => "versions_project_id"
add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
create_table "watchers", :force => true do |t|
t.string "watchable_type", :default => "", :null => false
t.integer "watchable_id", :default => 0, :null => false
t.integer "user_id"
end
add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
create_table "wiki_content_versions", :force => true do |t|
t.integer "wiki_content_id", :null => false
t.integer "page_id", :null => false
t.integer "author_id"
t.binary "data", :limit => 2147483647
t.string "compression", :limit => 6, :default => ""
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
create_table "wiki_contents", :force => true do |t|
t.integer "page_id", :null => false
t.integer "author_id"
t.text "text", :limit => 2147483647
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
create_table "wiki_pages", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title", :null => false
t.datetime "created_on", :null => false
t.boolean "protected", :default => false, :null => false
t.integer "parent_id"
end
add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
create_table "wiki_redirects", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title"
t.string "redirects_to"
t.datetime "created_on", :null => false
end
add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
create_table "wikis", :force => true do |t|
t.integer "project_id", :null => false
t.string "start_page", :null => false
t.integer "status", :default => 1, :null => false
end
add_index "wikis", ["project_id"], :name => "wikis_project_id"
create_table "workflows", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "old_status_id", :default => 0, :null => false
t.integer "new_status_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
t.boolean "assignee", :default => false, :null => false
t.boolean "author", :default => false, :null => false
t.string "type", :limit => 30
t.string "field_name", :limit => 30
t.string "rule", :limit => 30
end
add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
end

895
db/schema.rb.LOCAL.rb Normal file
View File

@ -0,0 +1,895 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140320022724) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
t.string "act_type", :null => false
t.integer "user_id", :null => false
end
add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type"
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
create_table "attachments", :force => true do |t|
t.integer "container_id"
t.string "container_type", :limit => 30
t.string "filename", :default => "", :null => false
t.string "disk_filename", :default => "", :null => false
t.integer "filesize", :default => 0, :null => false
t.string "content_type", :default => ""
t.string "digest", :limit => 40, :default => "", :null => false
t.integer "downloads", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.string "description"
t.string "disk_directory"
end
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
create_table "auth_sources", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 60, :default => "", :null => false
t.string "host", :limit => 60
t.integer "port"
t.string "account"
t.string "account_password", :default => ""
t.string "base_dn"
t.string "attr_login", :limit => 30
t.string "attr_firstname", :limit => 30
t.string "attr_lastname", :limit => 30
t.string "attr_mail", :limit => 30
t.boolean "onthefly_register", :default => false, :null => false
t.boolean "tls", :default => false, :null => false
t.string "filter"
t.integer "timeout"
end
add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
create_table "biding_projects", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "bids", :force => true do |t|
t.string "name"
t.string "budget", :null => false
t.integer "author_id"
t.date "deadline"
t.string "description"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.integer "commit"
t.integer "reward_type"
t.integer "homework_type"
t.integer "parent_id"
t.string "password"
end
create_table "boards", :force => true do |t|
t.integer "project_id", :null => false
t.string "name", :default => "", :null => false
t.string "description"
t.integer "position", :default => 1
t.integer "topics_count", :default => 0, :null => false
t.integer "messages_count", :default => 0, :null => false
t.integer "last_message_id"
t.integer "parent_id"
end
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "changes", :force => true do |t|
t.integer "changeset_id", :null => false
t.string "action", :limit => 1, :default => "", :null => false
t.text "path", :null => false
t.text "from_path"
t.string "from_revision"
t.string "revision"
t.string "branch"
end
add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
create_table "changeset_parents", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "parent_id", :null => false
end
add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids"
add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
create_table "changesets", :force => true do |t|
t.integer "repository_id", :null => false
t.string "revision", :null => false
t.string "committer"
t.datetime "committed_on", :null => false
t.text "comments"
t.date "commit_date"
t.string "scmid"
t.integer "user_id"
end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
create_table "changesets_issues", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "issue_id", :null => false
end
add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
create_table "comments", :force => true do |t|
t.string "commented_type", :limit => 30, :default => "", :null => false
t.integer "commented_id", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.text "comments"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
create_table "courses", :force => true do |t|
t.integer "tea_id"
t.string "name"
t.integer "state"
t.string "code"
t.integer "time"
t.string "extra"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "location"
t.string "term"
t.string "string"
t.string "password"
t.string "setup_time"
t.string "endup_time"
t.string "class_period"
t.integer "school_id"
end
create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.string "field_format", :limit => 30, :default => "", :null => false
t.text "possible_values"
t.string "regexp", :default => ""
t.integer "min_length", :default => 0, :null => false
t.integer "max_length", :default => 0, :null => false
t.boolean "is_required", :default => false, :null => false
t.boolean "is_for_all", :default => false, :null => false
t.boolean "is_filter", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "searchable", :default => false
t.text "default_value"
t.boolean "editable", :default => true
t.boolean "visible", :default => true, :null => false
t.boolean "multiple", :default => false
end
add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
create_table "custom_fields_projects", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
end
add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true
create_table "custom_values", :force => true do |t|
t.string "customized_type", :limit => 30, :default => "", :null => false
t.integer "customized_id", :default => 0, :null => false
t.integer "custom_field_id", :default => 0, :null => false
t.text "value"
end
add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
create_table "documents", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "category_id", :default => 0, :null => false
t.string "title", :limit => 60, :default => "", :null => false
t.text "description"
t.datetime "created_on"
end
add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "enabled_modules", :force => true do |t|
t.integer "project_id"
t.string "name", :null => false
end
add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
create_table "enumerations", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "is_default", :default => false, :null => false
t.string "type"
t.boolean "active", :default => true, :null => false
t.integer "project_id"
t.integer "parent_id"
t.string "position_name", :limit => 30
end
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "forums", :force => true do |t|
t.string "name", :null => false
t.string "description", :default => ""
t.integer "topic_count", :default => 0
t.integer "memo_count", :default => 0
t.integer "last_memo_id", :default => 0
t.integer "creator_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "groups_users", :id => false, :force => true do |t|
t.integer "group_id", :null => false
t.integer "user_id", :null => false
end
add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
create_table "homework_attaches", :force => true do |t|
t.integer "bid_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "homework_for_courses", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
end
create_table "issue_categories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.integer "assigned_to_id"
end
add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
create_table "issue_relations", :force => true do |t|
t.integer "issue_from_id", :null => false
t.integer "issue_to_id", :null => false
t.string "relation_type", :default => "", :null => false
t.integer "delay"
end
add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true
add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
create_table "issue_statuses", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_closed", :default => false, :null => false
t.boolean "is_default", :default => false, :null => false
t.integer "position", :default => 1
t.integer "default_done_ratio"
end
add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
create_table "issues", :force => true do |t|
t.integer "tracker_id", :null => false
t.integer "project_id", :null => false
t.string "subject", :default => "", :null => false
t.text "description"
t.date "due_date"
t.integer "category_id"
t.integer "status_id", :null => false
t.integer "assigned_to_id"
t.integer "priority_id", :null => false
t.integer "fixed_version_id"
t.integer "author_id", :null => false
t.integer "lock_version", :default => 0, :null => false
t.datetime "created_on"
t.datetime "updated_on"
t.date "start_date"
t.integer "done_ratio", :default => 0, :null => false
t.float "estimated_hours"
t.integer "parent_id"
t.integer "root_id"
t.integer "lft"
t.integer "rgt"
t.boolean "is_private", :default => false, :null => false
t.datetime "closed_on"
end
add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
add_index "issues", ["project_id"], :name => "issues_project_id"
add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
create_table "join_in_contests", :force => true do |t|
t.integer "user_id"
t.integer "bid_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "journal_details", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_replies", :id => false, :force => true do |t|
t.integer "journal_id"
t.integer "user_id"
t.integer "reply_id"
end
add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id"
add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id"
add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id"
create_table "journals", :force => true do |t|
t.integer "journalized_id", :default => 0, :null => false
t.string "journalized_type", :limit => 30, :default => "", :null => false
t.integer "user_id", :default => 0, :null => false
t.text "notes"
t.datetime "created_on", :null => false
t.boolean "private_notes", :default => false, :null => false
end
add_index "journals", ["created_on"], :name => "index_journals_on_created_on"
add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id"
add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
create_table "journals_for_messages", :force => true do |t|
t.integer "jour_id"
t.string "jour_type"
t.integer "user_id"
t.text "notes"
t.integer "status"
t.integer "reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.string "m_parent_id"
t.boolean "is_readed"
t.integer "m_reply_count"
t.integer "m_reply_id"
end
create_table "member_roles", :force => true do |t|
t.integer "member_id", :null => false
t.integer "role_id", :null => false
t.integer "inherited_from"
end
add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
create_table "members", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.datetime "created_on"
t.boolean "mail_notification", :default => false, :null => false
end
add_index "members", ["project_id"], :name => "index_members_on_project_id"
add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
add_index "members", ["user_id"], :name => "index_members_on_user_id"
create_table "memos", :force => true do |t|
t.integer "forum_id", :null => false
t.integer "parent_id"
t.string "subject", :null => false
t.text "content", :null => false
t.integer "author_id", :null => false
t.integer "replies_count", :default => 0
t.integer "last_reply_id"
t.boolean "lock", :default => false
t.boolean "sticky", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "viewed_count", :default => 0
end
create_table "messages", :force => true do |t|
t.integer "board_id", :null => false
t.integer "parent_id"
t.string "subject", :default => "", :null => false
t.text "content"
t.integer "author_id"
t.integer "replies_count", :default => 0, :null => false
t.integer "last_reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.boolean "locked", :default => false
t.integer "sticky", :default => 0
end
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
add_index "messages", ["board_id"], :name => "messages_board_id"
add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
add_index "messages", ["parent_id"], :name => "messages_parent_id"
create_table "news", :force => true do |t|
t.integer "project_id"
t.string "title", :limit => 60, :default => "", :null => false
t.string "summary", :default => ""
t.text "description"
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.integer "comments_count", :default => 0, :null => false
end
add_index "news", ["author_id"], :name => "index_news_on_author_id"
add_index "news", ["created_on"], :name => "index_news_on_created_on"
add_index "news", ["project_id"], :name => "news_project_id"
create_table "open_id_authentication_associations", :force => true do |t|
t.integer "issued"
t.integer "lifetime"
t.string "handle"
t.string "assoc_type"
t.binary "server_url"
t.binary "secret"
end
create_table "open_id_authentication_nonces", :force => true do |t|
t.integer "timestamp", :null => false
t.string "server_url"
t.string "salt", :null => false
end
create_table "praise_tread_caches", :force => true do |t|
t.integer "object_id", :null => false
t.string "object_type"
t.integer "praise_num"
t.integer "tread_num"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "praise_treads", :force => true do |t|
t.integer "user_id", :null => false
t.integer "praise_tread_object_id"
t.string "praise_tread_object_type"
t.integer "praise_or_tread"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "project_infos", :force => true do |t|
t.integer "project_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "project_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"
t.integer "project_id"
t.integer "project_type"
t.float "grade", :default => 0.0
t.integer "course_ac_para", :default => 0
end
add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
create_table "projects", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "description"
t.string "homepage", :default => ""
t.boolean "is_public", :default => true, :null => false
t.integer "parent_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "identifier"
t.integer "status", :default => 1, :null => false
t.integer "lft"
t.integer "rgt"
t.boolean "inherit_members", :default => false, :null => false
t.integer "project_type"
t.boolean "hidden_repo", :default => false, :null => false
end
add_index "projects", ["lft"], :name => "index_projects_on_lft"
add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
create_table "projects_trackers", :id => false, :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
create_table "queries", :force => true do |t|
t.integer "project_id"
t.string "name", :default => "", :null => false
t.text "filters"
t.integer "user_id", :default => 0, :null => false
t.boolean "is_public", :default => false, :null => false
t.text "column_names"
t.text "sort_criteria"
t.string "group_by"
t.string "type"
end
add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "repositories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "url", :default => "", :null => false
t.string "login", :limit => 60, :default => ""
t.string "password", :default => ""
t.string "root_url", :default => ""
t.string "type"
t.string "path_encoding", :limit => 64
t.string "log_encoding", :limit => 64
t.text "extra_info"
t.string "identifier"
t.boolean "is_default", :default => false
end
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
create_table "roles", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "assignable", :default => true
t.integer "builtin", :default => 0, :null => false
t.text "permissions"
t.string "issues_visibility", :limit => 30, :default => "default", :null => false
end
create_table "schools", :force => true do |t|
t.string "name"
t.string "province"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "seems_rateable_cached_ratings", :force => true do |t|
t.integer "cacheable_id", :limit => 8
t.string "cacheable_type"
t.float "avg", :null => false
t.integer "cnt", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "seems_rateable_rates", :force => true do |t|
t.integer "rater_id", :limit => 8
t.integer "rateable_id"
t.string "rateable_type"
t.float "stars", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "settings", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "value"
t.datetime "updated_on"
end
add_index "settings", ["name"], :name => "index_settings_on_name"
create_table "shares", :force => true do |t|
t.date "created_on"
t.string "url"
t.string "title"
t.integer "share_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "project_id"
t.integer "user_id"
t.string "description"
end
create_table "students_for_courses", :force => true do |t|
t.integer "student_id"
t.integer "course_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type"
t.string "context", :limit => 128
t.datetime "created_at"
end
add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
create_table "tags", :force => true do |t|
t.string "name"
end
create_table "teachers", :force => true do |t|
t.string "tea_name"
t.string "location"
t.integer "couurse_time"
t.integer "course_code"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "extra"
end
create_table "time_entries", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
t.integer "issue_id"
t.float "hours", :null => false
t.string "comments"
t.integer "activity_id", :null => false
t.date "spent_on", :null => false
t.integer "tyear", :null => false
t.integer "tmonth", :null => false
t.integer "tweek", :null => false
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
create_table "tokens", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.string "action", :limit => 30, :default => "", :null => false
t.string "value", :limit => 40, :default => "", :null => false
t.datetime "created_on", :null => false
end
add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
add_index "tokens", ["value"], :name => "tokens_value", :unique => true
create_table "trackers", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_in_chlog", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "is_in_roadmap", :default => true, :null => false
t.integer "fields_bits", :default => 0
end
create_table "user_extensions", :force => true do |t|
t.integer "user_id", :null => false
t.date "birthday"
t.string "brief_introduction"
t.integer "gender"
t.string "location"
t.string "occupation"
t.integer "work_experience"
t.integer "zip_code"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "technical_title"
t.integer "identity"
t.string "student_id"
t.string "teacher_realname"
t.string "student_realname"
t.string "location_city"
end
create_table "user_grades", :force => true do |t|
t.integer "user_id", :null => false
t.integer "project_id", :null => false
t.float "grade", :default => 0.0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade"
add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id"
add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id"
create_table "user_preferences", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.text "others"
t.boolean "hide_mail", :default => false
t.string "time_zone"
end
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "user_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.float "grade", :default => 0.0
end
add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count"
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
create_table "users", :force => true do |t|
t.string "login", :default => "", :null => false
t.string "hashed_password", :limit => 40, :default => "", :null => false
t.string "firstname", :limit => 30, :default => "", :null => false
t.string "lastname", :default => "", :null => false
t.string "mail", :limit => 60, :default => "", :null => false
t.boolean "admin", :default => false, :null => false
t.integer "status", :default => 1, :null => false
t.datetime "last_login_on"
t.string "language", :limit => 5, :default => ""
t.integer "auth_source_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "type"
t.string "identity_url"
t.string "mail_notification", :default => "", :null => false
t.string "salt", :limit => 64
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type"
create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false
t.string "description", :default => ""
t.date "effective_date"
t.datetime "created_on"
t.datetime "updated_on"
t.string "wiki_page_title"
t.string "status", :default => "open"
t.string "sharing", :default => "none", :null => false
end
add_index "versions", ["project_id"], :name => "versions_project_id"
add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
create_table "watchers", :force => true do |t|
t.string "watchable_type", :default => "", :null => false
t.integer "watchable_id", :default => 0, :null => false
t.integer "user_id"
end
add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
create_table "wiki_content_versions", :force => true do |t|
t.integer "wiki_content_id", :null => false
t.integer "page_id", :null => false
t.integer "author_id"
t.binary "data", :limit => 2147483647
t.string "compression", :limit => 6, :default => ""
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
create_table "wiki_contents", :force => true do |t|
t.integer "page_id", :null => false
t.integer "author_id"
t.text "text", :limit => 2147483647
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
create_table "wiki_pages", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title", :null => false
t.datetime "created_on", :null => false
t.boolean "protected", :default => false, :null => false
t.integer "parent_id"
end
add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
create_table "wiki_redirects", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title"
t.string "redirects_to"
t.datetime "created_on", :null => false
end
add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
create_table "wikis", :force => true do |t|
t.integer "project_id", :null => false
t.string "start_page", :null => false
t.integer "status", :default => 1, :null => false
end
add_index "wikis", ["project_id"], :name => "wikis_project_id"
create_table "workflows", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "old_status_id", :default => 0, :null => false
t.integer "new_status_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
t.boolean "assignee", :default => false, :null => false
t.boolean "author", :default => false, :null => false
t.string "type", :limit => 30
t.string "field_name", :limit => 30
t.string "rule", :limit => 30
end
add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
end

958
db/schema.rb.REMOTE.rb Normal file
View File

@ -0,0 +1,958 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20140411005214) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
t.string "act_type", :null => false
t.integer "user_id", :null => false
end
add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type"
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
create_table "attachments", :force => true do |t|
t.integer "container_id"
t.string "container_type", :limit => 30
t.string "filename", :default => "", :null => false
t.string "disk_filename", :default => "", :null => false
t.integer "filesize", :default => 0, :null => false
t.string "content_type", :default => ""
t.string "digest", :limit => 40, :default => "", :null => false
t.integer "downloads", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.string "description"
t.string "disk_directory"
end
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
create_table "auth_sources", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 60, :default => "", :null => false
t.string "host", :limit => 60
t.integer "port"
t.string "account"
t.string "account_password", :default => ""
t.string "base_dn"
t.string "attr_login", :limit => 30
t.string "attr_firstname", :limit => 30
t.string "attr_lastname", :limit => 30
t.string "attr_mail", :limit => 30
t.boolean "onthefly_register", :default => false, :null => false
t.boolean "tls", :default => false, :null => false
t.string "filter"
t.integer "timeout"
end
add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type"
create_table "biding_projects", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "bids", :force => true do |t|
t.string "name"
t.string "budget", :null => false
t.integer "author_id"
t.date "deadline"
t.string "description"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.integer "commit"
t.integer "reward_type"
t.integer "homework_type"
t.integer "parent_id"
t.string "password"
end
create_table "boards", :force => true do |t|
t.integer "project_id", :null => false
t.string "name", :default => "", :null => false
t.string "description"
t.integer "position", :default => 1
t.integer "topics_count", :default => 0, :null => false
t.integer "messages_count", :default => 0, :null => false
t.integer "last_message_id"
t.integer "parent_id"
end
add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id"
add_index "boards", ["project_id"], :name => "boards_project_id"
create_table "changes", :force => true do |t|
t.integer "changeset_id", :null => false
t.string "action", :limit => 1, :default => "", :null => false
t.text "path", :null => false
t.text "from_path"
t.string "from_revision"
t.string "revision"
t.string "branch"
end
add_index "changes", ["changeset_id"], :name => "changesets_changeset_id"
create_table "changeset_parents", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "parent_id", :null => false
end
add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids"
add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
create_table "changesets", :force => true do |t|
t.integer "repository_id", :null => false
t.string "revision", :null => false
t.string "committer"
t.datetime "committed_on", :null => false
t.text "comments"
t.date "commit_date"
t.string "scmid"
t.integer "user_id"
end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true
add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid"
add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id"
add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id"
create_table "changesets_issues", :id => false, :force => true do |t|
t.integer "changeset_id", :null => false
t.integer "issue_id", :null => false
end
add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true
create_table "comments", :force => true do |t|
t.string "commented_type", :limit => 30, :default => "", :null => false
t.integer "commented_id", :default => 0, :null => false
t.integer "author_id", :default => 0, :null => false
t.text "comments"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "comments", ["author_id"], :name => "index_comments_on_author_id"
add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type"
create_table "contesting_projects", :force => true do |t|
t.integer "project_id"
t.string "contest_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "contesting_softapplications", :force => true do |t|
t.integer "softapplication_id"
t.integer "contest_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "contests", :force => true do |t|
t.string "name"
t.integer "budget"
t.integer "author_id"
t.date "deadline"
t.string "description"
t.integer "commit"
t.string "password"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
create_table "courses", :force => true do |t|
t.integer "tea_id"
t.string "name"
t.integer "state"
t.string "code"
t.integer "time"
t.string "extra"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "location"
t.string "term"
t.string "string"
t.string "password"
t.string "setup_time"
t.string "endup_time"
t.string "class_period"
t.integer "school_id"
end
create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.string "field_format", :limit => 30, :default => "", :null => false
t.text "possible_values"
t.string "regexp", :default => ""
t.integer "min_length", :default => 0, :null => false
t.integer "max_length", :default => 0, :null => false
t.boolean "is_required", :default => false, :null => false
t.boolean "is_for_all", :default => false, :null => false
t.boolean "is_filter", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "searchable", :default => false
t.text "default_value"
t.boolean "editable", :default => true
t.boolean "visible", :default => true, :null => false
t.boolean "multiple", :default => false
end
add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type"
create_table "custom_fields_projects", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
end
add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true
create_table "custom_fields_trackers", :id => false, :force => true do |t|
t.integer "custom_field_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true
create_table "custom_values", :force => true do |t|
t.string "customized_type", :limit => 30, :default => "", :null => false
t.integer "customized_id", :default => 0, :null => false
t.integer "custom_field_id", :default => 0, :null => false
t.text "value"
end
add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id"
add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized"
create_table "documents", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "category_id", :default => 0, :null => false
t.string "title", :limit => 60, :default => "", :null => false
t.text "description"
t.datetime "created_on"
end
add_index "documents", ["category_id"], :name => "index_documents_on_category_id"
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
create_table "enabled_modules", :force => true do |t|
t.integer "project_id"
t.string "name", :null => false
end
add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id"
create_table "enumerations", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "is_default", :default => false, :null => false
t.string "type"
t.boolean "active", :default => true, :null => false
t.integer "project_id"
t.integer "parent_id"
t.string "position_name", :limit => 30
end
add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type"
add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id"
create_table "forums", :force => true do |t|
t.string "name", :null => false
t.string "description", :default => ""
t.integer "topic_count", :default => 0
t.integer "memo_count", :default => 0
t.integer "last_memo_id", :default => 0
t.integer "creator_id", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "groups_users", :id => false, :force => true do |t|
t.integer "group_id", :null => false
t.integer "user_id", :null => false
end
add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true
create_table "homework_attaches", :force => true do |t|
t.integer "bid_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "homework_for_courses", :force => true do |t|
t.integer "project_id"
t.integer "bid_id"
end
create_table "issue_categories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :limit => 30, :default => "", :null => false
t.integer "assigned_to_id"
end
add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id"
add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id"
create_table "issue_relations", :force => true do |t|
t.integer "issue_from_id", :null => false
t.integer "issue_to_id", :null => false
t.string "relation_type", :default => "", :null => false
t.integer "delay"
end
add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true
add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id"
add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id"
create_table "issue_statuses", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_closed", :default => false, :null => false
t.boolean "is_default", :default => false, :null => false
t.integer "position", :default => 1
t.integer "default_done_ratio"
end
add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed"
add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default"
add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position"
create_table "issues", :force => true do |t|
t.integer "tracker_id", :null => false
t.integer "project_id", :null => false
t.string "subject", :default => "", :null => false
t.text "description"
t.date "due_date"
t.integer "category_id"
t.integer "status_id", :null => false
t.integer "assigned_to_id"
t.integer "priority_id", :null => false
t.integer "fixed_version_id"
t.integer "author_id", :null => false
t.integer "lock_version", :default => 0, :null => false
t.datetime "created_on"
t.datetime "updated_on"
t.date "start_date"
t.integer "done_ratio", :default => 0, :null => false
t.float "estimated_hours"
t.integer "parent_id"
t.integer "root_id"
t.integer "lft"
t.integer "rgt"
t.boolean "is_private", :default => false, :null => false
t.datetime "closed_on"
end
add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id"
add_index "issues", ["author_id"], :name => "index_issues_on_author_id"
add_index "issues", ["category_id"], :name => "index_issues_on_category_id"
add_index "issues", ["created_on"], :name => "index_issues_on_created_on"
add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id"
add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id"
add_index "issues", ["project_id"], :name => "issues_project_id"
add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt"
add_index "issues", ["status_id"], :name => "index_issues_on_status_id"
add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id"
create_table "join_in_competitions", :force => true do |t|
t.integer "user_id"
t.integer "competition_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "join_in_contests", :force => true do |t|
t.integer "user_id"
t.integer "bid_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "journal_details", :force => true do |t|
t.integer "journal_id", :default => 0, :null => false
t.string "property", :limit => 30, :default => "", :null => false
t.string "prop_key", :limit => 30, :default => "", :null => false
t.text "old_value"
t.text "value"
end
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
create_table "journal_replies", :id => false, :force => true do |t|
t.integer "journal_id"
t.integer "user_id"
t.integer "reply_id"
end
add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id"
add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id"
add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id"
create_table "journals", :force => true do |t|
t.integer "journalized_id", :default => 0, :null => false
t.string "journalized_type", :limit => 30, :default => "", :null => false
t.integer "user_id", :default => 0, :null => false
t.text "notes"
t.datetime "created_on", :null => false
t.boolean "private_notes", :default => false, :null => false
end
add_index "journals", ["created_on"], :name => "index_journals_on_created_on"
add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id"
add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id"
add_index "journals", ["user_id"], :name => "index_journals_on_user_id"
create_table "journals_for_messages", :force => true do |t|
t.integer "jour_id"
t.string "jour_type"
t.integer "user_id"
t.text "notes"
t.integer "status"
t.integer "reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.string "m_parent_id"
t.boolean "is_readed"
t.integer "m_reply_count"
t.integer "m_reply_id"
end
create_table "member_roles", :force => true do |t|
t.integer "member_id", :null => false
t.integer "role_id", :null => false
t.integer "inherited_from"
end
add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id"
add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id"
create_table "members", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.integer "project_id", :default => 0, :null => false
t.datetime "created_on"
t.boolean "mail_notification", :default => false, :null => false
end
add_index "members", ["project_id"], :name => "index_members_on_project_id"
add_index "members", ["user_id", "project_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
add_index "members", ["user_id"], :name => "index_members_on_user_id"
create_table "memos", :force => true do |t|
t.integer "forum_id", :null => false
t.integer "parent_id"
t.string "subject", :null => false
t.text "content", :null => false
t.integer "author_id", :null => false
t.integer "replies_count", :default => 0
t.integer "last_reply_id"
t.boolean "lock", :default => false
t.boolean "sticky", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "viewed_count", :default => 0
end
create_table "messages", :force => true do |t|
t.integer "board_id", :null => false
t.integer "parent_id"
t.string "subject", :default => "", :null => false
t.text "content"
t.integer "author_id"
t.integer "replies_count", :default => 0, :null => false
t.integer "last_reply_id"
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
t.boolean "locked", :default => false
t.integer "sticky", :default => 0
end
add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
add_index "messages", ["board_id"], :name => "messages_board_id"
add_index "messages", ["created_on"], :name => "index_messages_on_created_on"
add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id"
add_index "messages", ["parent_id"], :name => "messages_parent_id"
create_table "news", :force => true do |t|
t.integer "project_id"
t.string "title", :limit => 60, :default => "", :null => false
t.string "summary", :default => ""
t.text "description"
t.integer "author_id", :default => 0, :null => false
t.datetime "created_on"
t.integer "comments_count", :default => 0, :null => false
end
add_index "news", ["author_id"], :name => "index_news_on_author_id"
add_index "news", ["created_on"], :name => "index_news_on_created_on"
add_index "news", ["project_id"], :name => "news_project_id"
create_table "open_id_authentication_associations", :force => true do |t|
t.integer "issued"
t.integer "lifetime"
t.string "handle"
t.string "assoc_type"
t.binary "server_url"
t.binary "secret"
end
create_table "open_id_authentication_nonces", :force => true do |t|
t.integer "timestamp", :null => false
t.string "server_url"
t.string "salt", :null => false
end
create_table "praise_tread_caches", :force => true do |t|
t.integer "object_id", :null => false
t.string "object_type"
t.integer "praise_num"
t.integer "tread_num"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "praise_treads", :force => true do |t|
t.integer "user_id", :null => false
t.integer "praise_tread_object_id"
t.string "praise_tread_object_type"
t.integer "praise_or_tread"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "project_infos", :force => true do |t|
t.integer "project_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "project_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"
t.integer "project_id"
t.integer "project_type"
t.float "grade", :default => 0.0
t.integer "course_ac_para", :default => 0
end
add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade"
create_table "projects", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "description"
t.string "homepage", :default => ""
t.boolean "is_public", :default => true, :null => false
t.integer "parent_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "identifier"
t.integer "status", :default => 1, :null => false
t.integer "lft"
t.integer "rgt"
t.boolean "inherit_members", :default => false, :null => false
t.integer "project_type"
t.boolean "hidden_repo", :default => false, :null => false
end
add_index "projects", ["lft"], :name => "index_projects_on_lft"
add_index "projects", ["rgt"], :name => "index_projects_on_rgt"
create_table "projects_trackers", :id => false, :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.integer "tracker_id", :default => 0, :null => false
end
add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true
add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id"
create_table "queries", :force => true do |t|
t.integer "project_id"
t.string "name", :default => "", :null => false
t.text "filters"
t.integer "user_id", :default => 0, :null => false
t.boolean "is_public", :default => false, :null => false
t.text "column_names"
t.text "sort_criteria"
t.string "group_by"
t.string "type"
end
add_index "queries", ["project_id"], :name => "index_queries_on_project_id"
add_index "queries", ["user_id"], :name => "index_queries_on_user_id"
create_table "repositories", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "url", :default => "", :null => false
t.string "login", :limit => 60, :default => ""
t.string "password", :default => ""
t.string "root_url", :default => ""
t.string "type"
t.string "path_encoding", :limit => 64
t.string "log_encoding", :limit => 64
t.text "extra_info"
t.string "identifier"
t.boolean "is_default", :default => false
end
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
create_table "roles", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.integer "position", :default => 1
t.boolean "assignable", :default => true
t.integer "builtin", :default => 0, :null => false
t.text "permissions"
t.string "issues_visibility", :limit => 30, :default => "default", :null => false
end
create_table "schools", :force => true do |t|
t.string "name"
t.string "province"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "seems_rateable_cached_ratings", :force => true do |t|
t.integer "cacheable_id", :limit => 8
t.string "cacheable_type"
t.float "avg", :null => false
t.integer "cnt", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "seems_rateable_rates", :force => true do |t|
t.integer "rater_id", :limit => 8
t.integer "rateable_id"
t.string "rateable_type"
t.float "stars", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "settings", :force => true do |t|
t.string "name", :default => "", :null => false
t.text "value"
t.datetime "updated_on"
end
add_index "settings", ["name"], :name => "index_settings_on_name"
create_table "shares", :force => true do |t|
t.date "created_on"
t.string "url"
t.string "title"
t.integer "share_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "project_id"
t.integer "user_id"
t.string "description"
end
create_table "softapplications", :force => true do |t|
t.string "name"
t.string "description"
t.integer "app_type_id"
t.string "app_type_name"
t.string "android_min_version_available"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "contest_id"
t.integer "softapplication_id"
t.integer "is_public"
end
create_table "students_for_courses", :force => true do |t|
t.integer "student_id"
t.integer "course_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type"
t.string "context", :limit => 128
t.datetime "created_at"
end
add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
create_table "tags", :force => true do |t|
t.string "name"
end
create_table "teachers", :force => true do |t|
t.string "tea_name"
t.string "location"
t.integer "couurse_time"
t.integer "course_code"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "extra"
end
create_table "time_entries", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
t.integer "issue_id"
t.float "hours", :null => false
t.string "comments"
t.integer "activity_id", :null => false
t.date "spent_on", :null => false
t.integer "tyear", :null => false
t.integer "tmonth", :null => false
t.integer "tweek", :null => false
t.datetime "created_on", :null => false
t.datetime "updated_on", :null => false
end
add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id"
add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on"
add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id"
add_index "time_entries", ["project_id"], :name => "time_entries_project_id"
add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id"
create_table "tokens", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.string "action", :limit => 30, :default => "", :null => false
t.string "value", :limit => 40, :default => "", :null => false
t.datetime "created_on", :null => false
end
add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id"
add_index "tokens", ["value"], :name => "tokens_value", :unique => true
create_table "trackers", :force => true do |t|
t.string "name", :limit => 30, :default => "", :null => false
t.boolean "is_in_chlog", :default => false, :null => false
t.integer "position", :default => 1
t.boolean "is_in_roadmap", :default => true, :null => false
t.integer "fields_bits", :default => 0
end
create_table "user_extensions", :force => true do |t|
t.integer "user_id", :null => false
t.date "birthday"
t.string "brief_introduction"
t.integer "gender"
t.string "location"
t.string "occupation"
t.integer "work_experience"
t.integer "zip_code"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "technical_title"
t.integer "identity"
t.string "student_id"
t.string "teacher_realname"
t.string "student_realname"
t.string "location_city"
end
create_table "user_grades", :force => true do |t|
t.integer "user_id", :null => false
t.integer "project_id", :null => false
t.float "grade", :default => 0.0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade"
add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id"
add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id"
create_table "user_preferences", :force => true do |t|
t.integer "user_id", :default => 0, :null => false
t.text "others"
t.boolean "hide_mail", :default => false
t.string "time_zone"
end
add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id"
create_table "user_scores", :force => true do |t|
t.integer "user_id", :null => false
t.integer "collaboration"
t.integer "influence"
t.integer "skill"
t.integer "active"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "user_statuses", :force => true do |t|
t.integer "changesets_count"
t.integer "watchers_count"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.float "grade", :default => 0.0
end
add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count"
add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade"
add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count"
create_table "users", :force => true do |t|
t.string "login", :default => "", :null => false
t.string "hashed_password", :limit => 40, :default => "", :null => false
t.string "firstname", :limit => 30, :default => "", :null => false
t.string "lastname", :default => "", :null => false
t.string "mail", :limit => 60, :default => "", :null => false
t.boolean "admin", :default => false, :null => false
t.integer "status", :default => 1, :null => false
t.datetime "last_login_on"
t.string "language", :limit => 5, :default => ""
t.integer "auth_source_id"
t.datetime "created_on"
t.datetime "updated_on"
t.string "type"
t.string "identity_url"
t.string "mail_notification", :default => "", :null => false
t.string "salt", :limit => 64
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type"
create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false
t.string "description", :default => ""
t.date "effective_date"
t.datetime "created_on"
t.datetime "updated_on"
t.string "wiki_page_title"
t.string "status", :default => "open"
t.string "sharing", :default => "none", :null => false
end
add_index "versions", ["project_id"], :name => "versions_project_id"
add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
create_table "watchers", :force => true do |t|
t.string "watchable_type", :default => "", :null => false
t.integer "watchable_id", :default => 0, :null => false
t.integer "user_id"
end
add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type"
add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id"
add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type"
create_table "wiki_content_versions", :force => true do |t|
t.integer "wiki_content_id", :null => false
t.integer "page_id", :null => false
t.integer "author_id"
t.binary "data", :limit => 2147483647
t.string "compression", :limit => 6, :default => ""
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on"
add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid"
create_table "wiki_contents", :force => true do |t|
t.integer "page_id", :null => false
t.integer "author_id"
t.text "text", :limit => 2147483647
t.string "comments", :default => ""
t.datetime "updated_on", :null => false
t.integer "version", :null => false
end
add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id"
add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id"
create_table "wiki_pages", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title", :null => false
t.datetime "created_on", :null => false
t.boolean "protected", :default => false, :null => false
t.integer "parent_id"
end
add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id"
add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title"
add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id"
create_table "wiki_redirects", :force => true do |t|
t.integer "wiki_id", :null => false
t.string "title"
t.string "redirects_to"
t.datetime "created_on", :null => false
end
add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title"
add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id"
create_table "wikis", :force => true do |t|
t.integer "project_id", :null => false
t.string "start_page", :null => false
t.integer "status", :default => 1, :null => false
end
add_index "wikis", ["project_id"], :name => "wikis_project_id"
create_table "workflows", :force => true do |t|
t.integer "tracker_id", :default => 0, :null => false
t.integer "old_status_id", :default => 0, :null => false
t.integer "new_status_id", :default => 0, :null => false
t.integer "role_id", :default => 0, :null => false
t.boolean "assignee", :default => false, :null => false
t.boolean "author", :default => false, :null => false
t.string "type", :limit => 30
t.string "field_name", :limit => 30
t.string "rule", :limit => 30
end
add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id"
add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id"
add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status"
add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id"
end

9
test/fixtures/join_in_contests.yml vendored Normal file
View File

@ -0,0 +1,9 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
one:
user_id: 1
bid_id: 1
two:
user_id: 1
bid_id: 1

View File

@ -0,0 +1,7 @@
require 'test_helper'
class JoinInContestTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end