2016-08-25 15:55:36 +08:00
|
|
|
# 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 => 20160824073554) 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
|
|
|
|
t.integer "activity_container_id"
|
|
|
|
t.string "activity_container_type", :default => ""
|
|
|
|
t.datetime "created_at"
|
|
|
|
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 "activity_notifies", :force => true do |t|
|
|
|
|
t.integer "activity_container_id"
|
|
|
|
t.string "activity_container_type"
|
|
|
|
t.integer "activity_id"
|
|
|
|
t.string "activity_type"
|
|
|
|
t.integer "notify_to"
|
|
|
|
t.datetime "created_on"
|
|
|
|
t.integer "is_read"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "activity_notifies", ["activity_container_id", "activity_container_type"], :name => "index_an_activity_container_id"
|
|
|
|
add_index "activity_notifies", ["created_on"], :name => "index_an_created_on"
|
|
|
|
add_index "activity_notifies", ["notify_to"], :name => "index_an_notify_to"
|
|
|
|
|
|
|
|
create_table "api_keys", :force => true do |t|
|
|
|
|
t.string "access_token"
|
|
|
|
t.datetime "expires_at"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.boolean "active", :default => true
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
|
|
|
|
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
|
|
|
|
|
|
|
|
create_table "applied_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "applied_id"
|
|
|
|
t.string "applied_type"
|
|
|
|
t.integer "viewed", :default => 0
|
|
|
|
t.integer "status", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.string "name"
|
|
|
|
t.integer "applied_user_id"
|
|
|
|
t.integer "role"
|
|
|
|
t.integer "project_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "applied_projects", :force => true do |t|
|
|
|
|
t.integer "project_id", :null => false
|
|
|
|
t.integer "user_id", :null => false
|
|
|
|
t.integer "role", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "apply_add_schools", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.string "province"
|
|
|
|
t.string "city"
|
|
|
|
t.string "address"
|
|
|
|
t.string "remarks"
|
|
|
|
t.integer "school_id"
|
|
|
|
t.integer "status", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "user_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "apply_homeworks", :force => true do |t|
|
|
|
|
t.integer "status"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "apply_homeworks", ["homework_common_id"], :name => "index_apply_homeworks_on_homework_common_id"
|
|
|
|
add_index "apply_homeworks", ["user_id"], :name => "index_apply_homeworks_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 "apply_resources", :force => true do |t|
|
|
|
|
t.integer "status"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "attachment_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "container_id"
|
|
|
|
t.string "container_type"
|
|
|
|
t.text "content"
|
|
|
|
t.integer "apply_user_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "at_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "at_message_id"
|
|
|
|
t.string "at_message_type"
|
|
|
|
t.boolean "viewed", :default => false
|
|
|
|
t.string "container_type"
|
|
|
|
t.integer "container_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "sender_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "at_messages", ["user_id"], :name => "index_at_messages_on_user_id"
|
|
|
|
|
|
|
|
create_table "attachment_histories", :force => true do |t|
|
|
|
|
t.integer "container_id"
|
|
|
|
t.string "container_type"
|
|
|
|
t.string "filename", :default => ""
|
|
|
|
t.string "disk_filename", :default => ""
|
|
|
|
t.integer "filesize", :default => 0
|
|
|
|
t.string "content_type", :default => ""
|
|
|
|
t.string "digest", :limit => 40, :default => ""
|
|
|
|
t.integer "downloads", :default => 0
|
|
|
|
t.integer "author_id"
|
|
|
|
t.datetime "created_on"
|
|
|
|
t.string "description"
|
|
|
|
t.string "disk_directory"
|
|
|
|
t.integer "attachtype"
|
|
|
|
t.integer "is_public"
|
|
|
|
t.integer "copy_from"
|
|
|
|
t.integer "quotes"
|
|
|
|
t.integer "version"
|
|
|
|
t.integer "attachment_id"
|
|
|
|
t.integer "is_publish", :default => 1
|
|
|
|
t.date "publish_time"
|
|
|
|
end
|
|
|
|
|
|
|
|
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"
|
|
|
|
t.integer "attachtype", :default => 1
|
|
|
|
t.integer "is_public", :default => 1
|
|
|
|
t.integer "copy_from"
|
|
|
|
t.integer "quotes"
|
|
|
|
t.integer "is_publish", :default => 1
|
|
|
|
t.date "publish_time"
|
|
|
|
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 "attachmentstypes", :force => true do |t|
|
|
|
|
t.integer "typeId", :null => false
|
|
|
|
t.string "typeName", :limit => 50
|
|
|
|
end
|
|
|
|
|
|
|
|
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.text "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"
|
|
|
|
t.integer "is_evaluation"
|
|
|
|
t.integer "proportion", :default => 60
|
|
|
|
t.integer "comment_status", :default => 0
|
|
|
|
t.integer "evaluation_num", :default => 3
|
|
|
|
t.integer "open_anonymous_evaluation", :default => 1
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "blog_comments", :force => true do |t|
|
|
|
|
t.integer "blog_id", :null => false
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.string "title", :default => "", :null => false
|
|
|
|
t.text "content"
|
|
|
|
t.integer "author_id"
|
|
|
|
t.integer "comments_count", :default => 0, :null => false
|
|
|
|
t.integer "last_comment_id"
|
|
|
|
t.datetime "created_on", :null => false
|
|
|
|
t.datetime "updated_on", :null => false
|
|
|
|
t.boolean "locked", :default => false
|
|
|
|
t.integer "sticky", :default => 0
|
|
|
|
t.integer "reply_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "blogs", :force => true do |t|
|
|
|
|
t.string "name", :default => "", :null => false
|
|
|
|
t.text "description"
|
|
|
|
t.integer "position", :default => 1
|
|
|
|
t.integer "article_count", :default => 0, :null => false
|
|
|
|
t.integer "comments_count", :default => 0, :null => false
|
|
|
|
t.integer "last_comments_id"
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.integer "author_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "homepage_id"
|
|
|
|
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"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "org_subfield_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 "bug_to_osps", :force => true do |t|
|
|
|
|
t.integer "osp_id"
|
|
|
|
t.integer "relative_memo_id"
|
|
|
|
t.string "description"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
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 "code_review_assignments", :force => true do |t|
|
|
|
|
t.integer "issue_id"
|
|
|
|
t.integer "change_id"
|
|
|
|
t.integer "attachment_id"
|
|
|
|
t.string "file_path"
|
|
|
|
t.string "rev"
|
|
|
|
t.string "rev_to"
|
|
|
|
t.string "action_type"
|
|
|
|
t.integer "changeset_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "code_review_project_settings", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "tracker_id"
|
|
|
|
t.datetime "created_at"
|
|
|
|
t.datetime "updated_at"
|
|
|
|
t.integer "updated_by"
|
|
|
|
t.boolean "hide_code_review_tab", :default => false
|
|
|
|
t.integer "auto_relation", :default => 1
|
|
|
|
t.integer "assignment_tracker_id"
|
|
|
|
t.text "auto_assign"
|
|
|
|
t.integer "lock_version", :default => 0, :null => false
|
|
|
|
t.boolean "tracker_in_review_dialog", :default => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "code_review_user_settings", :force => true do |t|
|
|
|
|
t.integer "user_id", :default => 0, :null => false
|
|
|
|
t.integer "mail_notification", :default => 0, :null => false
|
|
|
|
t.datetime "created_at"
|
|
|
|
t.datetime "updated_at"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "code_reviews", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "change_id"
|
|
|
|
t.datetime "created_at"
|
|
|
|
t.datetime "updated_at"
|
|
|
|
t.integer "line"
|
|
|
|
t.integer "updated_by_id"
|
|
|
|
t.integer "lock_version", :default => 0, :null => false
|
|
|
|
t.integer "status_changed_from"
|
|
|
|
t.integer "status_changed_to"
|
|
|
|
t.integer "issue_id"
|
|
|
|
t.string "action_type"
|
|
|
|
t.string "file_path"
|
|
|
|
t.string "rev"
|
|
|
|
t.string "rev_to"
|
|
|
|
t.integer "attachment_id"
|
|
|
|
t.integer "file_count", :default => 0, :null => false
|
|
|
|
t.boolean "diff_all"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "code_tests", :force => true do |t|
|
|
|
|
t.integer "homework_id"
|
|
|
|
t.integer "wait_time", :default => 0
|
|
|
|
t.integer "language"
|
|
|
|
t.integer "status"
|
|
|
|
t.integer "time_used", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "student_work_id", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
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
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.integer "comments_count", :default => 0
|
|
|
|
t.integer "reply_id"
|
|
|
|
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 "commits", :force => true do |t|
|
|
|
|
t.integer "repository_id"
|
|
|
|
t.string "version"
|
|
|
|
t.string "committer"
|
|
|
|
t.text "comments"
|
|
|
|
t.datetime "committed_on"
|
|
|
|
t.integer "project_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "contest_notifications", :force => true do |t|
|
|
|
|
t.text "title"
|
|
|
|
t.text "content"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
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 "contestnotifications", :force => true do |t|
|
|
|
|
t.integer "contest_id"
|
|
|
|
t.string "title"
|
|
|
|
t.string "summary"
|
|
|
|
t.text "description"
|
|
|
|
t.integer "author_id"
|
|
|
|
t.integer "notificationcomments_count"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "contests", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.string "budget", :default => ""
|
|
|
|
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 "course_activities", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "course_act_id"
|
|
|
|
t.string "course_act_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "course_activities", ["course_id", "course_act_id", "course_act_type", "created_at"], :name => "course_act_index"
|
|
|
|
|
|
|
|
create_table "course_attachments", :force => true do |t|
|
|
|
|
t.string "filename"
|
|
|
|
t.string "disk_filename"
|
|
|
|
t.integer "filesize"
|
|
|
|
t.string "content_type"
|
|
|
|
t.string "digest"
|
|
|
|
t.integer "downloads"
|
|
|
|
t.string "author_id"
|
|
|
|
t.string "integer"
|
|
|
|
t.string "description"
|
|
|
|
t.string "disk_directory"
|
|
|
|
t.integer "attachtype"
|
|
|
|
t.integer "is_public"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "container_id", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "course_contributor_scores", :force => true do |t|
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "message_num", :default => 0
|
|
|
|
t.integer "message_reply_num", :default => 0
|
|
|
|
t.integer "news_reply_num", :default => 0
|
|
|
|
t.integer "resource_num", :default => 0
|
|
|
|
t.integer "journal_num", :default => 0
|
|
|
|
t.integer "journal_reply_num", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "total_score", :default => 0
|
|
|
|
t.integer "homework_journal_num", :default => 0
|
|
|
|
t.integer "news_num", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "course_groups", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "course_infos", :force => true do |t|
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "course_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "course_message_id"
|
|
|
|
t.string "course_message_type"
|
|
|
|
t.integer "viewed"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.text "content"
|
|
|
|
t.integer "status"
|
|
|
|
t.integer "apply_user_id"
|
|
|
|
t.integer "apply_result"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "course_messages", ["course_message_type"], :name => "index_course_messages_on_course_message_type"
|
|
|
|
add_index "course_messages", ["user_id", "course_id", "created_at"], :name => "index_course_messages_on_user_id_and_course_id_and_created_at"
|
|
|
|
|
|
|
|
create_table "course_statuses", :force => true do |t|
|
|
|
|
t.integer "changesets_count"
|
|
|
|
t.integer "watchers_count"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.float "grade", :default => 0.0
|
|
|
|
t.integer "course_ac_para", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :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"
|
|
|
|
t.text "description"
|
|
|
|
t.integer "status", :default => 1
|
|
|
|
t.integer "attachmenttype", :default => 2
|
|
|
|
t.integer "lft"
|
|
|
|
t.integer "rgt"
|
|
|
|
t.integer "is_public", :limit => 1, :default => 1
|
|
|
|
t.integer "inherit_members", :limit => 1, :default => 1
|
|
|
|
t.integer "open_student", :default => 0
|
|
|
|
t.integer "outline", :default => 0
|
|
|
|
t.integer "publish_resource", :default => 0
|
|
|
|
t.integer "is_delete", :default => 0
|
|
|
|
t.integer "end_time"
|
|
|
|
t.string "end_term"
|
|
|
|
t.integer "is_excellent", :default => 0
|
|
|
|
t.integer "excellent_option", :default => 0
|
|
|
|
t.integer "is_copy", :default => 0
|
|
|
|
t.integer "visits", :default => 0
|
|
|
|
t.integer "syllabus_id"
|
|
|
|
t.string "invite_code"
|
|
|
|
t.string "qrcode"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true
|
|
|
|
add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id"
|
|
|
|
|
|
|
|
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 "delayed_jobs", :force => true do |t|
|
|
|
|
t.integer "priority", :default => 0, :null => false
|
|
|
|
t.integer "attempts", :default => 0, :null => false
|
|
|
|
t.text "handler", :null => false
|
|
|
|
t.text "last_error"
|
|
|
|
t.datetime "run_at"
|
|
|
|
t.datetime "locked_at"
|
|
|
|
t.datetime "failed_at"
|
|
|
|
t.string "locked_by"
|
|
|
|
t.string "queue"
|
|
|
|
t.datetime "created_at"
|
|
|
|
t.datetime "updated_at"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
|
|
|
|
|
|
|
create_table "discuss_demos", :force => true do |t|
|
|
|
|
t.string "title"
|
|
|
|
t.text "body"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
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"
|
|
|
|
t.integer "user_id", :default => 0
|
|
|
|
t.integer "is_public", :default => 1
|
|
|
|
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 "dts", :primary_key => "Num", :force => true do |t|
|
|
|
|
t.string "Defect", :limit => 50
|
|
|
|
t.string "Category", :limit => 50
|
|
|
|
t.string "File"
|
|
|
|
t.string "Method"
|
|
|
|
t.string "Module", :limit => 20
|
|
|
|
t.string "Variable", :limit => 50
|
|
|
|
t.integer "StartLine"
|
|
|
|
t.integer "IPLine"
|
|
|
|
t.string "IPLineCode", :limit => 200
|
|
|
|
t.string "Judge", :limit => 15
|
|
|
|
t.integer "Review", :limit => 1
|
|
|
|
t.string "Description"
|
|
|
|
t.text "PreConditions", :limit => 2147483647
|
|
|
|
t.text "TraceInfo", :limit => 2147483647
|
|
|
|
t.text "Code", :limit => 2147483647
|
|
|
|
t.integer "project_id"
|
|
|
|
t.datetime "created_at"
|
|
|
|
t.datetime "updated_at"
|
|
|
|
t.integer "id", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "editor_of_documents", :force => true do |t|
|
|
|
|
t.integer "editor_id"
|
|
|
|
t.integer "org_document_comment_id"
|
|
|
|
t.datetime "created_at"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "enabled_modules", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.string "name", :null => false
|
|
|
|
t.integer "course_id"
|
|
|
|
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 "exercise_answers", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "exercise_question_id"
|
|
|
|
t.integer "exercise_choice_id"
|
|
|
|
t.text "answer_text"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "exercise_choices", :force => true do |t|
|
|
|
|
t.integer "exercise_question_id"
|
|
|
|
t.text "choice_text"
|
|
|
|
t.integer "choice_position"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "exercise_questions", :force => true do |t|
|
|
|
|
t.text "question_title"
|
|
|
|
t.integer "question_type"
|
|
|
|
t.integer "question_number"
|
|
|
|
t.integer "exercise_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "question_score"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "exercise_standard_answers", :force => true do |t|
|
|
|
|
t.integer "exercise_question_id"
|
|
|
|
t.integer "exercise_choice_id"
|
|
|
|
t.text "answer_text"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "exercise_users", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "exercise_id"
|
|
|
|
t.integer "score"
|
|
|
|
t.datetime "start_at"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.datetime "end_at"
|
|
|
|
t.integer "status"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "exercises", :force => true do |t|
|
|
|
|
t.text "exercise_name"
|
|
|
|
t.text "exercise_description"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "exercise_status"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "time"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.datetime "publish_time"
|
|
|
|
t.datetime "end_time"
|
|
|
|
t.integer "show_result"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "first_pages", :force => true do |t|
|
|
|
|
t.string "web_title"
|
|
|
|
t.string "title"
|
|
|
|
t.text "description"
|
|
|
|
t.string "page_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "sort_type"
|
|
|
|
t.integer "image_width", :default => 107
|
|
|
|
t.integer "image_height", :default => 63
|
|
|
|
t.integer "show_course", :default => 1
|
|
|
|
t.integer "show_contest", :default => 1
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "forge_activities", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "forge_act_id"
|
|
|
|
t.string "forge_act_type"
|
|
|
|
t.integer "org_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "forge_activities", ["forge_act_id"], :name => "index_forge_activities_on_forge_act_id"
|
|
|
|
add_index "forge_activities", ["project_id", "forge_act_id", "created_at", "forge_act_type"], :name => "forge_act_index"
|
|
|
|
|
|
|
|
create_table "forge_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "forge_message_id"
|
|
|
|
t.string "forge_message_type"
|
|
|
|
t.integer "viewed"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.string "secret_key"
|
|
|
|
t.integer "status"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type"
|
|
|
|
add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at"
|
|
|
|
|
|
|
|
create_table "forums", :force => true do |t|
|
|
|
|
t.string "name", :null => false
|
|
|
|
t.text "description"
|
|
|
|
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
|
|
|
|
t.integer "sticky"
|
|
|
|
t.integer "locked"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "forwards", :force => true do |t|
|
|
|
|
t.integer "from_id"
|
|
|
|
t.string "from_type"
|
|
|
|
t.integer "to_id"
|
|
|
|
t.string "to_type"
|
|
|
|
t.datetime "created_at"
|
|
|
|
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"
|
|
|
|
t.string "name"
|
|
|
|
t.text "description"
|
|
|
|
t.integer "state"
|
|
|
|
t.integer "project_id", :default => 0
|
|
|
|
t.float "score", :default => 0.0
|
|
|
|
t.integer "is_teacher_score", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "homework_attaches", ["bid_id"], :name => "index_homework_attaches_on_bid_id"
|
|
|
|
|
|
|
|
create_table "homework_commons", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.text "description"
|
|
|
|
t.date "publish_time"
|
|
|
|
t.date "end_time"
|
|
|
|
t.integer "homework_type", :default => 1
|
|
|
|
t.string "late_penalty"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "teacher_priority", :default => 1
|
|
|
|
t.integer "anonymous_comment", :default => 0
|
|
|
|
t.integer "quotes", :default => 0
|
|
|
|
t.integer "is_open", :default => 0
|
|
|
|
t.datetime "simi_time"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "homework_commons", ["course_id", "id"], :name => "index_homework_commons_on_course_id_and_id"
|
|
|
|
|
|
|
|
create_table "homework_detail_groups", :force => true do |t|
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.integer "min_num"
|
|
|
|
t.integer "max_num"
|
|
|
|
t.integer "base_on_project"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "homework_detail_groups", ["homework_common_id"], :name => "index_homework_detail_groups_on_homework_common_id"
|
|
|
|
|
|
|
|
create_table "homework_detail_manuals", :force => true do |t|
|
|
|
|
t.float "ta_proportion"
|
|
|
|
t.integer "comment_status"
|
|
|
|
t.date "evaluation_start"
|
|
|
|
t.date "evaluation_end"
|
|
|
|
t.integer "evaluation_num"
|
|
|
|
t.integer "absence_penalty", :default => 1
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "homework_detail_programings", :force => true do |t|
|
|
|
|
t.string "language"
|
|
|
|
t.text "standard_code", :limit => 2147483647
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.float "ta_proportion", :default => 0.1
|
|
|
|
t.integer "question_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "homework_evaluations", :force => true do |t|
|
|
|
|
t.string "user_id"
|
|
|
|
t.string "homework_attach_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "homework_for_courses", :force => true do |t|
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "bid_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "homework_for_courses", ["bid_id"], :name => "index_homework_for_courses_on_bid_id"
|
|
|
|
add_index "homework_for_courses", ["course_id"], :name => "index_homework_for_courses_on_course_id"
|
|
|
|
|
|
|
|
create_table "homework_tests", :force => true do |t|
|
|
|
|
t.text "input"
|
|
|
|
t.text "output"
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "result"
|
|
|
|
t.text "error_msg"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "homework_users", :force => true do |t|
|
|
|
|
t.string "homework_attach_id"
|
|
|
|
t.string "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "invite_lists", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.string "mail"
|
|
|
|
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"
|
|
|
|
t.integer "project_issues_index"
|
|
|
|
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
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.integer "comments_count", :default => 0
|
|
|
|
t.integer "reply_id"
|
|
|
|
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"
|
|
|
|
t.integer "is_comprehensive_evaluation"
|
|
|
|
t.integer "private", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "kindeditor_assets", :force => true do |t|
|
|
|
|
t.string "asset"
|
|
|
|
t.integer "file_size"
|
|
|
|
t.string "file_type"
|
|
|
|
t.integer "owner_id"
|
|
|
|
t.string "asset_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "owner_type", :default => 0
|
|
|
|
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"
|
|
|
|
t.integer "is_current", :default => 1
|
|
|
|
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
|
|
|
|
t.datetime "created_on"
|
|
|
|
t.boolean "mail_notification", :default => false, :null => false
|
|
|
|
t.integer "course_id", :default => -1
|
|
|
|
t.integer "course_group_id", :default => 0
|
|
|
|
t.integer "is_collect", :default => 1
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "members", ["project_id"], :name => "index_members_on_project_id"
|
|
|
|
add_index "members", ["user_id", "project_id", "course_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 "memo_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "forum_id"
|
|
|
|
t.integer "memo_id"
|
|
|
|
t.string "memo_type"
|
|
|
|
t.integer "viewed"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "memo_messages", ["memo_id", "memo_type"], :name => "index_memo_messages_on_memo_id_and_memo_type"
|
|
|
|
add_index "memo_messages", ["user_id", "forum_id", "created_at"], :name => "index_memo_messages_on_user_id_and_forum_id_and_created_at"
|
|
|
|
|
|
|
|
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 "message_alls", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "message_id"
|
|
|
|
t.string "message_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "message_alls", ["message_type"], :name => "index_message_alls_on_message_type"
|
|
|
|
add_index "message_alls", ["user_id", "message_id", "created_at"], :name => "index_message_alls_on_user_id_and_message_id_and_created_at"
|
|
|
|
|
|
|
|
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
|
|
|
|
t.integer "reply_id"
|
|
|
|
t.integer "quotes"
|
|
|
|
t.integer "status", :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
|
|
|
|
t.integer "course_id"
|
|
|
|
t.integer "sticky", :default => 0
|
|
|
|
t.integer "org_subfield_id"
|
|
|
|
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 "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 "notificationcomments", :force => true do |t|
|
|
|
|
t.string "notificationcommented_type"
|
|
|
|
t.integer "notificationcommented_id"
|
|
|
|
t.integer "author_id"
|
|
|
|
t.text "notificationcomments"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "onclick_times", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "onclick_time"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
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 "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 "option_numbers", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "memo"
|
|
|
|
t.integer "messages_for_issues"
|
|
|
|
t.integer "issues_status"
|
|
|
|
t.integer "replay_for_message"
|
|
|
|
t.integer "replay_for_memo"
|
|
|
|
t.integer "follow"
|
|
|
|
t.integer "tread"
|
|
|
|
t.integer "praise_by_one"
|
|
|
|
t.integer "praise_by_two"
|
|
|
|
t.integer "praise_by_three"
|
|
|
|
t.integer "tread_by_one"
|
|
|
|
t.integer "tread_by_two"
|
|
|
|
t.integer "tread_by_three"
|
|
|
|
t.integer "changeset"
|
|
|
|
t.integer "document"
|
|
|
|
t.integer "attachment"
|
|
|
|
t.integer "issue_done_ratio"
|
|
|
|
t.integer "post_issue"
|
|
|
|
t.integer "score_type"
|
|
|
|
t.integer "total_score"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "project_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_activities", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "org_act_id"
|
|
|
|
t.string "org_act_type"
|
|
|
|
t.integer "container_id"
|
|
|
|
t.string "container_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_courses", :force => true do |t|
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.integer "course_id"
|
|
|
|
t.datetime "created_at"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_document_comments", :force => true do |t|
|
|
|
|
t.text "title"
|
|
|
|
t.text "content"
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.integer "creator_id"
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.integer "reply_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.boolean "locked", :default => false
|
|
|
|
t.integer "sticky", :default => 0
|
|
|
|
t.integer "org_subfield_id"
|
|
|
|
t.integer "status", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_member_roles", :force => true do |t|
|
|
|
|
t.integer "org_member_id"
|
|
|
|
t.integer "role_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_members", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "sender_id"
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.string "message_type"
|
|
|
|
t.integer "message_id"
|
|
|
|
t.integer "viewed"
|
|
|
|
t.string "content"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "status", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_projects", :force => true do |t|
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.integer "project_id"
|
|
|
|
t.datetime "created_at"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_subfield_messages", :force => true do |t|
|
|
|
|
t.integer "org_subfield_id"
|
|
|
|
t.integer "message_id"
|
|
|
|
t.string "message_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "org_subfields", :force => true do |t|
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.integer "priority"
|
|
|
|
t.string "name"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.string "field_type"
|
|
|
|
t.integer "hide", :default => 0
|
|
|
|
t.integer "status", :default => 1
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "organizations", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.text "description"
|
|
|
|
t.integer "creator_id"
|
|
|
|
t.integer "home_id"
|
|
|
|
t.boolean "is_public"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.boolean "allow_guest_download", :default => true
|
|
|
|
t.integer "visits", :default => 0
|
|
|
|
t.integer "show_mode", :default => 0
|
|
|
|
t.integer "allow_teacher", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "phone_app_versions", :force => true do |t|
|
|
|
|
t.string "version"
|
|
|
|
t.text "description"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "poll_answers", :force => true do |t|
|
|
|
|
t.integer "poll_question_id"
|
|
|
|
t.text "answer_text"
|
|
|
|
t.integer "answer_position"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "poll_questions", :force => true do |t|
|
|
|
|
t.string "question_title"
|
|
|
|
t.integer "question_type"
|
|
|
|
t.integer "is_necessary"
|
|
|
|
t.integer "poll_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "question_number"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "poll_users", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "poll_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "poll_votes", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "poll_question_id"
|
|
|
|
t.integer "poll_answer_id"
|
|
|
|
t.text "vote_text"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "polls", :force => true do |t|
|
|
|
|
t.string "polls_name"
|
|
|
|
t.string "polls_type"
|
|
|
|
t.integer "polls_group_id"
|
|
|
|
t.integer "polls_status"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "published_at"
|
|
|
|
t.datetime "closed_at"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.text "polls_description"
|
|
|
|
t.integer "show_result", :default => 1
|
|
|
|
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 "principal_activities", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "principal_id"
|
|
|
|
t.integer "principal_act_id"
|
|
|
|
t.string "principal_act_type"
|
|
|
|
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_scores", :force => true do |t|
|
|
|
|
t.string "project_id"
|
|
|
|
t.integer "score"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "issue_num", :default => 0
|
|
|
|
t.integer "issue_journal_num", :default => 0
|
|
|
|
t.integer "news_num", :default => 0
|
|
|
|
t.integer "documents_num", :default => 0
|
|
|
|
t.integer "changeset_num", :default => 0
|
|
|
|
t.integer "board_message_num", :default => 0
|
|
|
|
t.integer "board_num", :default => 0
|
|
|
|
t.integer "attach_num", :default => 0
|
|
|
|
t.datetime "commit_time"
|
|
|
|
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 "projecting_softapplictions", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "softapplication_id"
|
|
|
|
t.integer "project_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
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
|
|
|
|
t.integer "attachmenttype", :default => 1
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "dts_test", :default => 0
|
|
|
|
t.string "enterprise_name"
|
|
|
|
t.integer "organization_id"
|
|
|
|
t.integer "project_new_type"
|
|
|
|
t.integer "gpid"
|
|
|
|
t.integer "forked_from_project_id"
|
|
|
|
t.integer "forked_count"
|
|
|
|
t.integer "commits_count", :default => 0
|
|
|
|
t.integer "publish_resource", :default => 0
|
|
|
|
t.integer "issues_count", :default => 0
|
|
|
|
t.integer "attachments_count", :default => 0
|
|
|
|
t.integer "boards_count", :default => 0
|
|
|
|
t.integer "news_count", :default => 0
|
|
|
|
t.integer "acts_count", :default => 0
|
|
|
|
t.integer "journals_count", :default => 0
|
|
|
|
t.integer "boards_reply_count", :default => 0
|
|
|
|
t.integer "visits", :default => 0
|
|
|
|
t.integer "hot", :default => 0
|
|
|
|
t.string "invite_code"
|
|
|
|
t.string "qrcode"
|
|
|
|
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 "pull_requests", :force => true do |t|
|
|
|
|
t.integer "pull_request_id"
|
|
|
|
t.integer "gpid"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "quality_analyses", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.string "author_login"
|
|
|
|
t.string "rep_identifier"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "sonar_version", :default => 0
|
|
|
|
t.string "path"
|
|
|
|
t.string "branch"
|
|
|
|
t.string "language"
|
|
|
|
t.string "sonar_name"
|
|
|
|
end
|
|
|
|
|
|
|
|
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 "relative_memo_to_open_source_projects", :force => true do |t|
|
|
|
|
t.integer "osp_id"
|
|
|
|
t.integer "relative_memo_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "relative_memos", :force => true do |t|
|
|
|
|
t.integer "osp_id"
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.string "subject", :null => false
|
|
|
|
t.text "content", :limit => 16777215, :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
|
|
|
|
t.string "url"
|
|
|
|
t.string "username"
|
|
|
|
t.string "userhomeurl"
|
|
|
|
t.date "date_collected"
|
|
|
|
t.string "topic_resource"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "rep_statics", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "commits_num"
|
|
|
|
t.string "uname"
|
|
|
|
t.string "email"
|
|
|
|
t.integer "add"
|
|
|
|
t.integer "del"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "changeset"
|
|
|
|
end
|
|
|
|
|
|
|
|
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
|
|
|
|
t.boolean "hidden", :default => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"
|
|
|
|
|
|
|
|
create_table "rich_rich_files", :force => true do |t|
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.string "rich_file_file_name"
|
|
|
|
t.string "rich_file_content_type"
|
|
|
|
t.integer "rich_file_file_size"
|
|
|
|
t.datetime "rich_file_updated_at"
|
|
|
|
t.string "owner_type"
|
|
|
|
t.integer "owner_id"
|
|
|
|
t.text "uri_cache"
|
|
|
|
t.string "simplified_type", :default => "file"
|
|
|
|
end
|
|
|
|
|
|
|
|
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
|
|
|
|
t.string "logo_link"
|
|
|
|
t.string "pinyin"
|
|
|
|
t.integer "school_type", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "secdomains", :force => true do |t|
|
|
|
|
t.integer "sub_type"
|
|
|
|
t.string "subname"
|
|
|
|
t.integer "pid", :default => 0
|
|
|
|
t.string "desc"
|
|
|
|
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
|
|
|
|
t.integer "is_teacher_score", :default => 0
|
|
|
|
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 "shield_activities", :force => true do |t|
|
|
|
|
t.string "container_type"
|
|
|
|
t.integer "container_id"
|
|
|
|
t.string "shield_type"
|
|
|
|
t.integer "shield_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "shield_wechat_messages", :force => true do |t|
|
|
|
|
t.integer "container_id"
|
|
|
|
t.string "container_type"
|
|
|
|
t.integer "shield_id"
|
|
|
|
t.string "shield_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "softapplications", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.text "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"
|
|
|
|
t.string "application_developers"
|
|
|
|
t.string "deposit_project_url"
|
|
|
|
t.string "deposit_project"
|
|
|
|
t.integer "project_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "sonar_errors", :force => true do |t|
|
|
|
|
t.integer "project_id"
|
|
|
|
t.string "jenkins_job_name"
|
|
|
|
t.text "output"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "ssos", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.string "openid"
|
|
|
|
t.string "name"
|
|
|
|
t.string "password"
|
|
|
|
t.string "email"
|
|
|
|
t.integer "sex"
|
|
|
|
t.string "school"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "ssos", ["user_id"], :name => "index_ssos_on_user_id"
|
|
|
|
|
|
|
|
create_table "student_work_projects", :force => true do |t|
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.integer "student_work_id"
|
|
|
|
t.integer "project_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "is_leader"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "student_work_projects", ["homework_common_id"], :name => "index_student_work_projects_on_homework_common_id"
|
|
|
|
add_index "student_work_projects", ["project_id"], :name => "index_student_work_projects_on_project_id"
|
|
|
|
add_index "student_work_projects", ["student_work_id"], :name => "index_student_work_projects_on_student_work_id"
|
|
|
|
add_index "student_work_projects", ["user_id"], :name => "index_student_work_projects_on_user_id"
|
|
|
|
|
|
|
|
create_table "student_work_tests", :force => true do |t|
|
|
|
|
t.integer "student_work_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "status", :default => 9
|
|
|
|
t.text "results"
|
|
|
|
t.text "src"
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "student_works", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.text "description", :limit => 2147483647
|
|
|
|
t.integer "homework_common_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.float "final_score"
|
|
|
|
t.float "teacher_score"
|
|
|
|
t.float "student_score"
|
|
|
|
t.float "teaching_asistant_score"
|
|
|
|
t.integer "project_id", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "late_penalty", :default => 0
|
|
|
|
t.integer "absence_penalty", :default => 0
|
|
|
|
t.float "system_score", :default => 0.0
|
|
|
|
t.boolean "is_test", :default => false
|
|
|
|
t.integer "simi_id"
|
|
|
|
t.integer "simi_value"
|
|
|
|
t.float "work_score"
|
|
|
|
t.integer "work_status", :default => 0
|
|
|
|
t.datetime "commit_time"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id"
|
|
|
|
|
|
|
|
create_table "student_works_evaluation_distributions", :force => true do |t|
|
|
|
|
t.integer "student_work_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "student_works_scores", :force => true do |t|
|
|
|
|
t.integer "student_work_id"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "score"
|
|
|
|
t.text "comment"
|
|
|
|
t.integer "reviewer_role"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
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
|
|
|
|
|
|
|
|
add_index "students_for_courses", ["course_id"], :name => "index_students_for_courses_on_course_id"
|
|
|
|
add_index "students_for_courses", ["student_id"], :name => "index_students_for_courses_on_student_id"
|
|
|
|
|
|
|
|
create_table "sub_document_comments", :force => true do |t|
|
|
|
|
t.text "content"
|
|
|
|
t.text "title"
|
|
|
|
t.integer "sub_domain_id"
|
|
|
|
t.integer "creator_id"
|
|
|
|
t.integer "parent_id"
|
|
|
|
t.integer "reply_id"
|
|
|
|
t.integer "locked"
|
|
|
|
t.integer "sticky"
|
|
|
|
t.integer "org_subfield_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "sub_domains", :force => true do |t|
|
|
|
|
t.integer "org_subfield_id"
|
|
|
|
t.integer "priority", :default => 0
|
|
|
|
t.string "name"
|
|
|
|
t.string "field_type"
|
|
|
|
t.integer "hide", :default => 0
|
|
|
|
t.integer "status", :default => 0
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "subfield_subdomain_dirs", :force => true do |t|
|
|
|
|
t.integer "org_subfield_id"
|
|
|
|
t.string "name"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "syllabuses", :force => true do |t|
|
|
|
|
t.string "title"
|
|
|
|
t.text "description"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.string "eng_name"
|
|
|
|
t.integer "syllabus_type"
|
|
|
|
t.integer "credit"
|
|
|
|
t.integer "hours"
|
|
|
|
t.integer "theory_hours"
|
|
|
|
t.integer "practice_hours"
|
|
|
|
t.string "applicable_major"
|
|
|
|
t.string "pre_course"
|
|
|
|
t.integer "visits", :default => 0
|
|
|
|
t.integer "des_status", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "syllabuses", ["user_id"], :name => "index_syllabuses_on_user_id"
|
|
|
|
|
|
|
|
create_table "system_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.string "content"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.text "description"
|
|
|
|
t.string "subject"
|
|
|
|
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"
|
|
|
|
add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type"
|
|
|
|
|
|
|
|
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_actions", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.string "action_type"
|
|
|
|
t.integer "action_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "user_activities", :force => true do |t|
|
|
|
|
t.string "act_type"
|
|
|
|
t.integer "act_id"
|
|
|
|
t.string "container_type"
|
|
|
|
t.integer "container_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "user_id"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "user_activities", ["act_id", "act_type", "container_id", "created_at"], :name => "user_act_index"
|
|
|
|
|
|
|
|
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"
|
|
|
|
t.integer "school_id"
|
|
|
|
t.string "description", :default => ""
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "user_feedback_messages", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "journals_for_message_id"
|
|
|
|
t.string "journals_for_message_type"
|
|
|
|
t.integer "viewed"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "user_feedback_messages", ["journals_for_message_id"], :name => "index_user_feedback_messages_on_journals_for_message_id"
|
|
|
|
add_index "user_feedback_messages", ["user_id", "created_at"], :name => "index_user_feedback_messages_on_user_id_and_created_at"
|
|
|
|
|
|
|
|
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_levels", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "level"
|
|
|
|
end
|
|
|
|
|
|
|
|
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_score_details", :force => true do |t|
|
|
|
|
t.integer "current_user_id"
|
|
|
|
t.integer "target_user_id"
|
|
|
|
t.string "score_type"
|
|
|
|
t.string "score_action"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "old_score"
|
|
|
|
t.integer "new_score"
|
|
|
|
t.integer "current_user_level"
|
|
|
|
t.integer "target_user_level"
|
|
|
|
t.integer "score_changeable_obj_id"
|
|
|
|
t.string "score_changeable_obj_type"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
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 "user_wechats", :force => true do |t|
|
|
|
|
t.integer "subscribe"
|
|
|
|
t.string "openid"
|
|
|
|
t.string "nickname"
|
|
|
|
t.integer "sex"
|
|
|
|
t.string "language"
|
|
|
|
t.string "city"
|
|
|
|
t.string "province"
|
|
|
|
t.string "country"
|
|
|
|
t.string "headimgurl"
|
|
|
|
t.string "subscribe_time"
|
|
|
|
t.string "unionid"
|
|
|
|
t.string "remark"
|
|
|
|
t.integer "groupid"
|
|
|
|
t.integer "user_id"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
t.integer "bindtype", :default => 0
|
|
|
|
end
|
|
|
|
|
|
|
|
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
|
|
|
|
t.integer "gid"
|
|
|
|
t.integer "visits", :default => 0
|
|
|
|
t.integer "excellent_teacher", :default => 0
|
|
|
|
t.integer "excellent_student", :default => 0
|
|
|
|
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 "visitors", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "master_id"
|
|
|
|
t.datetime "updated_on"
|
|
|
|
t.datetime "created_on"
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "visitors", ["master_id"], :name => "index_visitors_master_id"
|
|
|
|
add_index "visitors", ["updated_on"], :name => "index_visitors_updated_on"
|
|
|
|
add_index "visitors", ["user_id"], :name => "index_visitors_user_id"
|
|
|
|
|
|
|
|
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 "web_footer_companies", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.string "logo_size"
|
|
|
|
t.string "url"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "web_footer_oranizers", :force => true do |t|
|
|
|
|
t.string "name"
|
|
|
|
t.text "description"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "wechat_logs", :force => true do |t|
|
|
|
|
t.string "openid", :null => false
|
|
|
|
t.text "request_raw"
|
|
|
|
t.text "response_raw"
|
|
|
|
t.text "session_raw"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
add_index "wechat_logs", ["openid"], :name => "index_wechat_logs_on_openid"
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
|
|
|
create_table "works_categories", :force => true do |t|
|
|
|
|
t.string "category"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
create_table "zip_packs", :force => true do |t|
|
|
|
|
t.integer "user_id"
|
|
|
|
t.integer "homework_id"
|
|
|
|
t.string "file_digest"
|
|
|
|
t.string "file_path"
|
|
|
|
t.integer "pack_times", :default => 1
|
|
|
|
t.integer "pack_size", :default => 0
|
|
|
|
t.text "file_digests"
|
|
|
|
t.datetime "created_at", :null => false
|
|
|
|
t.datetime "updated_at", :null => false
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|