????

Your IP : 3.133.129.118


Current Path : C:/inetpub/vhost/redmine.gdtvietnam.com/db/
Upload File :
Current File : C:/inetpub/vhost/redmine.gdtvietnam.com/db/schema.rb

# 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.
#
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 2023_10_12_112407) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "agile_colors", force: :cascade do |t|
    t.string "container_type", limit: 255
    t.bigint "container_id"
    t.string "color", limit: 255
    t.index ["container_id"], name: "idx_37704_index_agile_colors_on_container_id"
    t.index ["container_type"], name: "idx_37704_index_agile_colors_on_container_type"
  end

  create_table "agile_data", force: :cascade do |t|
    t.bigint "issue_id"
    t.bigint "position"
    t.bigint "story_points"
    t.bigint "agile_sprint_id"
    t.index ["issue_id"], name: "idx_37713_index_agile_data_on_issue_id"
    t.index ["position"], name: "idx_37713_index_agile_data_on_position"
  end

  create_table "agile_sprints", force: :cascade do |t|
    t.bigint "project_id"
    t.string "name", limit: 255, null: false
    t.text "description"
    t.bigint "status", default: 0, null: false
    t.date "start_date", null: false
    t.date "end_date", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.bigint "sharing", default: 0, null: false
  end

  create_table "attachments", force: :cascade do |t|
    t.bigint "container_id"
    t.string "container_type", limit: 30
    t.string "filename", limit: 255, default: "", null: false
    t.string "disk_filename", limit: 255, default: "", null: false
    t.bigint "filesize", default: 0, null: false
    t.string "content_type", limit: 255, default: ""
    t.string "digest", limit: 64, default: "", null: false
    t.bigint "downloads", default: 0, null: false
    t.bigint "author_id", default: 0, null: false
    t.datetime "created_on"
    t.string "description", limit: 255
    t.string "disk_directory", limit: 255
    t.index ["author_id"], name: "idx_37733_index_attachments_on_author_id"
    t.index ["container_id", "container_type"], name: "idx_37733_index_attachments_on_container_id_and_container_type"
    t.index ["created_on"], name: "idx_37733_index_attachments_on_created_on"
    t.index ["disk_filename"], name: "idx_37733_index_attachments_on_disk_filename"
  end

  create_table "auth_sources", force: :cascade do |t|
    t.string "type", limit: 30, default: "", null: false
    t.string "name", limit: 60, default: "", null: false
    t.string "host", limit: 60
    t.bigint "port"
    t.string "account", limit: 255
    t.string "account_password", limit: 255, default: ""
    t.string "base_dn", limit: 255
    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.text "filter"
    t.bigint "timeout"
    t.boolean "verify_peer", default: true, null: false
    t.index ["id", "type"], name: "idx_37750_index_auth_sources_on_id_and_type"
  end

  create_table "boards", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.string "name", limit: 255, default: "", null: false
    t.string "description", limit: 255
    t.bigint "position"
    t.bigint "topics_count", default: 0, null: false
    t.bigint "messages_count", default: 0, null: false
    t.bigint "last_message_id"
    t.bigint "parent_id"
    t.index ["last_message_id"], name: "idx_37770_index_boards_on_last_message_id"
    t.index ["project_id"], name: "idx_37770_boards_project_id"
  end

  create_table "changes", force: :cascade do |t|
    t.bigint "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", limit: 255
    t.string "revision", limit: 255
    t.string "branch", limit: 255
    t.index ["changeset_id"], name: "idx_37781_changesets_changeset_id"
  end

  create_table "changeset_parents", id: false, force: :cascade do |t|
    t.bigint "changeset_id", null: false
    t.bigint "parent_id", null: false
    t.index ["changeset_id"], name: "idx_37803_changeset_parents_changeset_ids"
    t.index ["parent_id"], name: "idx_37803_changeset_parents_parent_ids"
  end

  create_table "changesets", force: :cascade do |t|
    t.bigint "repository_id", null: false
    t.string "revision", limit: 255, null: false
    t.string "committer", limit: 255
    t.datetime "committed_on", null: false
    t.text "comments"
    t.date "commit_date"
    t.string "scmid", limit: 255
    t.bigint "user_id"
    t.index ["committed_on"], name: "idx_37792_index_changesets_on_committed_on"
    t.index ["repository_id", "revision"], name: "idx_37792_changesets_repos_rev", unique: true
    t.index ["repository_id", "scmid"], name: "idx_37792_changesets_repos_scmid"
    t.index ["repository_id"], name: "idx_37792_index_changesets_on_repository_id"
    t.index ["user_id"], name: "idx_37792_index_changesets_on_user_id"
  end

  create_table "changesets_issues", id: false, force: :cascade do |t|
    t.bigint "changeset_id", null: false
    t.bigint "issue_id", null: false
    t.index ["changeset_id", "issue_id"], name: "idx_37800_changesets_issues_ids", unique: true
    t.index ["issue_id"], name: "idx_37800_index_changesets_issues_on_issue_id"
  end

  create_table "checklist_template_categories", force: :cascade do |t|
    t.string "name", limit: 255
    t.bigint "position", default: 1
  end

  create_table "checklist_templates", force: :cascade do |t|
    t.string "name", limit: 255
    t.bigint "project_id"
    t.bigint "category_id"
    t.bigint "user_id"
    t.boolean "is_public"
    t.text "template_items"
    t.boolean "is_default", default: false
    t.bigint "tracker_id"
    t.index ["tracker_id"], name: "idx_37818_index_checklist_templates_on_tracker_id"
  end

  create_table "checklists", force: :cascade do |t|
    t.boolean "is_done", default: false
    t.string "subject", limit: 512
    t.bigint "position", default: 1
    t.bigint "issue_id", null: false
    t.datetime "created_at"
    t.datetime "updated_at"
    t.boolean "is_section", default: false
  end

  create_table "comments", force: :cascade do |t|
    t.string "commented_type", limit: 30, default: "", null: false
    t.bigint "commented_id", default: 0, null: false
    t.bigint "author_id", default: 0, null: false
    t.text "content"
    t.datetime "created_on", null: false
    t.datetime "updated_on", null: false
    t.index ["author_id"], name: "idx_37834_index_comments_on_author_id"
    t.index ["commented_id", "commented_type"], name: "idx_37834_index_comments_on_commented_id_and_commented_type"
  end

  create_table "custom_field_enumerations", force: :cascade do |t|
    t.bigint "custom_field_id", null: false
    t.string "name", limit: 255, null: false
    t.boolean "active", default: true, null: false
    t.bigint "position", default: 1, null: false
  end

  create_table "custom_fields", force: :cascade 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", limit: 255, default: ""
    t.bigint "min_length"
    t.bigint "max_length"
    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.bigint "position"
    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
    t.text "format_store"
    t.text "description"
    t.index ["id", "type"], name: "idx_37844_index_custom_fields_on_id_and_type"
  end

  create_table "custom_fields_projects", id: false, force: :cascade do |t|
    t.bigint "custom_field_id", default: 0, null: false
    t.bigint "project_id", default: 0, null: false
    t.index ["custom_field_id", "project_id"], name: "idx_37861_index_custom_fields_projects_on_custom_field_id_and_p", unique: true
  end

  create_table "custom_fields_roles", id: false, force: :cascade do |t|
    t.bigint "custom_field_id", null: false
    t.bigint "role_id", null: false
    t.index ["custom_field_id", "role_id"], name: "idx_37866_custom_fields_roles_ids", unique: true
  end

  create_table "custom_fields_trackers", id: false, force: :cascade do |t|
    t.bigint "custom_field_id", default: 0, null: false
    t.bigint "tracker_id", default: 0, null: false
    t.index ["custom_field_id", "tracker_id"], name: "idx_37869_index_custom_fields_trackers_on_custom_field_id_and_t", unique: true
  end

  create_table "custom_values", force: :cascade do |t|
    t.string "customized_type", limit: 30, default: "", null: false
    t.bigint "customized_id", default: 0, null: false
    t.bigint "custom_field_id", default: 0, null: false
    t.text "value"
    t.index ["custom_field_id"], name: "idx_37882_index_custom_values_on_custom_field_id"
    t.index ["customized_type", "customized_id", "custom_field_id"], name: "custom_values_customized_custom_field"
    t.index ["customized_type", "customized_id"], name: "idx_37882_custom_values_customized"
  end

  create_table "dayoffs", id: :serial, force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "leave_type_id", null: false
    t.boolean "approved", default: false, null: false
    t.datetime "start_date", null: false
    t.datetime "end_date"
    t.float "hours_per_day"
    t.text "notes"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["leave_type_id"], name: "index_dayoffs_on_leave_type_id"
    t.index ["user_id"], name: "index_dayoffs_on_user_id"
  end

  create_table "departments", id: :serial, force: :cascade do |t|
    t.integer "parent_id"
    t.integer "lft"
    t.integer "rgt"
    t.string "name"
    t.text "background"
    t.integer "head_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["head_id"], name: "index_departments_on_head_id"
    t.index ["parent_id", "lft", "rgt"], name: "index_departments_on_parent_id_and_lft_and_rgt"
  end

  create_table "documents", force: :cascade do |t|
    t.bigint "project_id", default: 0, null: false
    t.bigint "category_id", default: 0, null: false
    t.string "title", limit: 255, default: "", null: false
    t.text "description"
    t.datetime "created_on"
    t.index ["category_id"], name: "idx_37892_index_documents_on_category_id"
    t.index ["created_on"], name: "idx_37892_index_documents_on_created_on"
    t.index ["project_id"], name: "idx_37892_documents_project_id"
  end

  create_table "drive_entries", force: :cascade do |t|
    t.bigint "project_id"
    t.bigint "parent_id"
    t.bigint "author_id", null: false
    t.string "name", limit: 255
    t.boolean "shared", default: false, null: false
    t.text "description"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.bigint "version", default: 1, null: false
    t.string "version_name", limit: 255
    t.bigint "comments_count", default: 0, null: false
    t.string "hashed_password", limit: 40, default: "", null: false
    t.string "salt", limit: 64
    t.index ["author_id"], name: "idx_37902_index_drive_entries_on_author_id"
    t.index ["parent_id"], name: "idx_37902_index_drive_entries_on_parent_id"
    t.index ["project_id"], name: "idx_37902_index_drive_entries_on_project_id"
  end

  create_table "email_addresses", force: :cascade do |t|
    t.bigint "user_id", null: false
    t.string "address", limit: 255, null: false
    t.boolean "is_default", default: false, null: false
    t.boolean "notify", default: true, null: false
    t.datetime "created_on", null: false
    t.datetime "updated_on", null: false
    t.index ["user_id"], name: "idx_37914_index_email_addresses_on_user_id"
  end

  create_table "enabled_modules", force: :cascade do |t|
    t.bigint "project_id"
    t.string "name", limit: 255, null: false
    t.index ["project_id"], name: "idx_37921_enabled_modules_project_id"
  end

  create_table "enumerations", force: :cascade do |t|
    t.string "name", limit: 30, default: "", null: false
    t.bigint "position"
    t.boolean "is_default", default: false, null: false
    t.string "type", limit: 255
    t.boolean "active", default: true, null: false
    t.bigint "project_id"
    t.bigint "parent_id"
    t.string "position_name", limit: 30
    t.index ["id", "type"], name: "idx_37926_index_enumerations_on_id_and_type"
    t.index ["project_id"], name: "idx_37926_index_enumerations_on_project_id"
  end

  create_table "groups_users", id: false, force: :cascade do |t|
    t.bigint "group_id", null: false
    t.bigint "user_id", null: false
    t.index ["group_id", "user_id"], name: "idx_37935_groups_users_ids", unique: true
  end

  create_table "import_items", force: :cascade do |t|
    t.bigint "import_id", null: false
    t.bigint "position", null: false
    t.bigint "obj_id"
    t.text "message"
    t.string "unique_id", limit: 255
    t.index ["import_id", "unique_id"], name: "idx_37949_index_import_items_on_import_id_and_unique_id"
  end

  create_table "imports", force: :cascade do |t|
    t.string "type", limit: 255
    t.bigint "user_id", null: false
    t.string "filename", limit: 255
    t.text "settings"
    t.bigint "total_items"
    t.boolean "finished", default: false, null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "issue_categories", force: :cascade do |t|
    t.bigint "project_id", default: 0, null: false
    t.string "name", limit: 60, default: "", null: false
    t.bigint "assigned_to_id"
    t.index ["assigned_to_id"], name: "idx_37968_index_issue_categories_on_assigned_to_id"
    t.index ["project_id"], name: "idx_37968_issue_categories_project_id"
  end

  create_table "issue_drive_files", force: :cascade do |t|
    t.bigint "issue_id"
    t.bigint "drive_entry_id"
    t.datetime "created_at", null: false
    t.index ["drive_entry_id", "issue_id"], name: "idx_37975_index_issue_drive_files_on_drive_entry_id_and_issue_i", unique: true
    t.index ["issue_id"], name: "idx_37975_fk_rails_b84756815b"
  end

  create_table "issue_relations", force: :cascade do |t|
    t.bigint "issue_from_id", null: false
    t.bigint "issue_to_id", null: false
    t.string "relation_type", limit: 255, default: "", null: false
    t.bigint "delay"
    t.index ["issue_from_id", "issue_to_id"], name: "idx_37980_index_issue_relations_on_issue_from_id_and_issue_to_i", unique: true
    t.index ["issue_from_id"], name: "idx_37980_index_issue_relations_on_issue_from_id"
    t.index ["issue_to_id"], name: "idx_37980_index_issue_relations_on_issue_to_id"
  end

  create_table "issue_statuses", force: :cascade do |t|
    t.string "name", limit: 30, default: "", null: false
    t.boolean "is_closed", default: false, null: false
    t.bigint "position"
    t.bigint "default_done_ratio"
    t.string "description"
    t.index ["is_closed"], name: "idx_37986_index_issue_statuses_on_is_closed"
    t.index ["position"], name: "idx_37986_index_issue_statuses_on_position"
  end

  create_table "issues", force: :cascade do |t|
    t.bigint "tracker_id", null: false
    t.bigint "project_id", null: false
    t.string "subject", limit: 255, default: "", null: false
    t.text "description"
    t.date "due_date"
    t.bigint "category_id"
    t.bigint "status_id", null: false
    t.bigint "assigned_to_id"
    t.bigint "priority_id", null: false
    t.bigint "fixed_version_id"
    t.bigint "author_id", null: false
    t.bigint "lock_version", default: 0, null: false
    t.datetime "created_on"
    t.datetime "updated_on"
    t.date "start_date"
    t.bigint "done_ratio", default: 0, null: false
    t.float "estimated_hours"
    t.bigint "parent_id"
    t.bigint "root_id"
    t.bigint "lft"
    t.bigint "rgt"
    t.boolean "is_private", default: false, null: false
    t.datetime "closed_on"
    t.index ["assigned_to_id"], name: "idx_37957_index_issues_on_assigned_to_id"
    t.index ["author_id"], name: "idx_37957_index_issues_on_author_id"
    t.index ["category_id"], name: "idx_37957_index_issues_on_category_id"
    t.index ["created_on"], name: "idx_37957_index_issues_on_created_on"
    t.index ["fixed_version_id"], name: "idx_37957_index_issues_on_fixed_version_id"
    t.index ["parent_id"], name: "idx_37957_index_issues_on_parent_id"
    t.index ["priority_id"], name: "idx_37957_index_issues_on_priority_id"
    t.index ["project_id"], name: "idx_37957_issues_project_id"
    t.index ["root_id", "lft", "rgt"], name: "idx_37957_index_issues_on_root_id_and_lft_and_rgt"
    t.index ["status_id"], name: "idx_37957_index_issues_on_status_id"
    t.index ["tracker_id"], name: "idx_37957_index_issues_on_tracker_id"
  end

  create_table "journal_details", force: :cascade do |t|
    t.bigint "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"
    t.index ["journal_id"], name: "idx_38004_journal_details_journal_id"
  end

  create_table "journals", force: :cascade do |t|
    t.bigint "journalized_id", default: 0, null: false
    t.string "journalized_type", limit: 30, default: "", null: false
    t.bigint "user_id", default: 0, null: false
    t.text "notes"
    t.datetime "created_on", null: false
    t.boolean "private_notes", default: false, null: false
    t.datetime "updated_on"
    t.integer "updated_by_id"
    t.index ["created_on"], name: "idx_37993_index_journals_on_created_on"
    t.index ["journalized_id", "journalized_type"], name: "idx_37993_journals_journalized_id"
    t.index ["journalized_id"], name: "idx_37993_index_journals_on_journalized_id"
    t.index ["user_id"], name: "idx_37993_index_journals_on_user_id"
  end

  create_table "leave_types", id: :serial, force: :cascade do |t|
    t.string "name"
    t.string "color"
    t.boolean "paid"
    t.boolean "approvable"
  end

  create_table "member_roles", force: :cascade do |t|
    t.bigint "member_id", null: false
    t.bigint "role_id", null: false
    t.bigint "inherited_from"
    t.index ["inherited_from"], name: "idx_38022_index_member_roles_on_inherited_from"
    t.index ["member_id"], name: "idx_38022_index_member_roles_on_member_id"
    t.index ["role_id"], name: "idx_38022_index_member_roles_on_role_id"
  end

  create_table "members", force: :cascade do |t|
    t.bigint "user_id", default: 0, null: false
    t.bigint "project_id", default: 0, null: false
    t.datetime "created_on"
    t.boolean "mail_notification", default: false, null: false
    t.index ["project_id"], name: "idx_38014_index_members_on_project_id"
    t.index ["user_id", "project_id"], name: "idx_38014_index_members_on_user_id_and_project_id", unique: true
    t.index ["user_id"], name: "idx_38014_index_members_on_user_id"
  end

  create_table "messages", force: :cascade do |t|
    t.bigint "board_id", null: false
    t.bigint "parent_id"
    t.string "subject", limit: 255, default: "", null: false
    t.text "content"
    t.bigint "author_id"
    t.bigint "replies_count", default: 0, null: false
    t.bigint "last_reply_id"
    t.datetime "created_on", null: false
    t.datetime "updated_on", null: false
    t.boolean "locked", default: false
    t.bigint "sticky", default: 0
    t.index ["author_id"], name: "idx_38027_index_messages_on_author_id"
    t.index ["board_id"], name: "idx_38027_messages_board_id"
    t.index ["created_on"], name: "idx_38027_index_messages_on_created_on"
    t.index ["last_reply_id"], name: "idx_38027_index_messages_on_last_reply_id"
    t.index ["parent_id"], name: "idx_38027_messages_parent_id"
  end

  create_table "news", force: :cascade do |t|
    t.bigint "project_id"
    t.string "title", limit: 60, default: "", null: false
    t.string "summary", limit: 255, default: ""
    t.text "description"
    t.bigint "author_id", default: 0, null: false
    t.datetime "created_on"
    t.bigint "comments_count", default: 0, null: false
    t.index ["author_id"], name: "idx_38038_index_news_on_author_id"
    t.index ["created_on"], name: "idx_38038_index_news_on_created_on"
    t.index ["project_id"], name: "idx_38038_news_project_id"
  end

  create_table "people_announcements", id: :serial, force: :cascade do |t|
    t.text "description"
    t.date "start_date"
    t.date "end_date"
    t.string "frequency"
    t.string "kind"
    t.boolean "active", default: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "department_id"
    t.index ["department_id"], name: "index_people_announcements_on_department_id"
  end

  create_table "people_holidays", id: :serial, force: :cascade do |t|
    t.string "name"
    t.date "start_date"
    t.date "end_date"
    t.text "description"
    t.boolean "is_workday"
    t.datetime "created_on"
    t.datetime "updated_on"
  end

  create_table "people_information", primary_key: "user_id", id: :serial, force: :cascade do |t|
    t.string "phone"
    t.string "address"
    t.string "skype"
    t.date "birthday"
    t.string "job_title"
    t.string "company"
    t.string "middlename"
    t.integer "gender", limit: 2
    t.string "twitter"
    t.string "facebook"
    t.string "linkedin"
    t.text "background"
    t.date "appearance_date"
    t.integer "department_id"
    t.boolean "is_system", default: false
    t.integer "manager_id"
    t.float "workday_length"
    t.index ["workday_length"], name: "index_people_information_on_workday_length"
  end

  create_table "people_work_experiences", id: :serial, force: :cascade do |t|
    t.string "previous_company_name"
    t.string "job_title"
    t.datetime "from_date"
    t.datetime "to_date"
    t.text "description"
    t.integer "user_id"
    t.index ["user_id"], name: "index_people_work_experiences_on_user_id"
  end

  create_table "projects", force: :cascade do |t|
    t.string "name", limit: 255, default: "", null: false
    t.text "description"
    t.string "homepage", limit: 255, default: ""
    t.boolean "is_public", default: true, null: false
    t.bigint "parent_id"
    t.datetime "created_on"
    t.datetime "updated_on"
    t.string "identifier", limit: 255
    t.bigint "status", default: 1, null: false
    t.bigint "lft"
    t.bigint "rgt"
    t.boolean "inherit_members", default: false, null: false
    t.bigint "default_version_id"
    t.bigint "default_assigned_to_id"
    t.integer "default_issue_query_id"
    t.index ["lft"], name: "idx_38066_index_projects_on_lft"
    t.index ["rgt"], name: "idx_38066_index_projects_on_rgt"
  end

  create_table "projects_trackers", id: false, force: :cascade do |t|
    t.bigint "project_id", default: 0, null: false
    t.bigint "tracker_id", default: 0, null: false
    t.index ["project_id", "tracker_id"], name: "idx_38078_projects_trackers_unique", unique: true
    t.index ["project_id"], name: "idx_38078_projects_trackers_project_id"
  end

  create_table "queries", force: :cascade do |t|
    t.bigint "project_id"
    t.string "name", limit: 255, default: "", null: false
    t.text "filters"
    t.bigint "user_id", default: 0, null: false
    t.text "column_names"
    t.text "sort_criteria"
    t.string "group_by", limit: 255
    t.string "type", limit: 255
    t.bigint "visibility", default: 0
    t.text "options"
    t.index ["project_id"], name: "idx_38084_index_queries_on_project_id"
    t.index ["user_id"], name: "idx_38084_index_queries_on_user_id"
  end

  create_table "queries_roles", id: false, force: :cascade do |t|
    t.bigint "query_id", null: false
    t.bigint "role_id", null: false
    t.index ["query_id", "role_id"], name: "idx_38095_queries_roles_ids", unique: true
  end

  create_table "repositories", force: :cascade do |t|
    t.bigint "project_id", default: 0, null: false
    t.string "url", limit: 255, default: "", null: false
    t.string "login", limit: 60, default: ""
    t.string "password", limit: 255, default: ""
    t.string "root_url", limit: 255, default: ""
    t.string "type", limit: 255
    t.string "path_encoding", limit: 64
    t.string "log_encoding", limit: 64
    t.text "extra_info"
    t.string "identifier", limit: 255
    t.boolean "is_default", default: false
    t.datetime "created_on"
    t.index ["project_id"], name: "idx_38099_index_repositories_on_project_id"
  end

  create_table "rich_rich_files", force: :cascade do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string "rich_file_file_name", limit: 255
    t.string "rich_file_content_type", limit: 255
    t.bigint "rich_file_file_size"
    t.datetime "rich_file_updated_at"
    t.string "owner_type", limit: 255
    t.bigint "owner_id"
    t.text "uri_cache"
    t.string "simplified_type", limit: 255, default: "file"
  end

  create_table "roles", force: :cascade do |t|
    t.string "name", limit: 255, default: "", null: false
    t.bigint "position"
    t.boolean "assignable", default: true
    t.bigint "builtin", default: 0, null: false
    t.text "permissions"
    t.string "issues_visibility", limit: 30, default: "default", null: false
    t.string "users_visibility", limit: 30, default: "all", null: false
    t.string "time_entries_visibility", limit: 30, default: "all", null: false
    t.boolean "all_roles_managed", default: true, null: false
    t.text "settings"
    t.integer "default_time_entry_activity_id"
  end

  create_table "roles_managed_roles", id: false, force: :cascade do |t|
    t.bigint "role_id", null: false
    t.bigint "managed_role_id", null: false
    t.index ["role_id", "managed_role_id"], name: "idx_38140_index_roles_managed_roles_on_role_id_and_managed_role", unique: true
  end

  create_table "settings", force: :cascade do |t|
    t.string "name", limit: 255, default: "", null: false
    t.text "value"
    t.datetime "updated_on"
    t.index ["name"], name: "idx_38147_index_settings_on_name"
  end

  create_table "taggings", force: :cascade do |t|
    t.bigint "tag_id"
    t.bigint "taggable_id"
    t.string "taggable_type", limit: 255
    t.datetime "created_at"
    t.index ["tag_id"], name: "idx_38155_index_taggings_on_tag_id"
    t.index ["taggable_id", "taggable_type"], name: "idx_38155_index_taggings_on_taggable_id_and_taggable_type"
  end

  create_table "tags", force: :cascade do |t|
    t.string "name", limit: 255
  end

  create_table "theme_changer_user_settings", force: :cascade do |t|
    t.bigint "user_id"
    t.string "theme", limit: 255
    t.datetime "updated_at"
  end

  create_table "time_entries", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.bigint "author_id"
    t.bigint "user_id", null: false
    t.bigint "issue_id"
    t.float "hours", null: false
    t.string "comments", limit: 1024
    t.bigint "activity_id", null: false
    t.date "spent_on", null: false
    t.bigint "tyear", null: false
    t.bigint "tmonth", null: false
    t.bigint "tweek", null: false
    t.datetime "created_on", null: false
    t.datetime "updated_on", null: false
    t.index ["activity_id"], name: "idx_38173_index_time_entries_on_activity_id"
    t.index ["created_on"], name: "idx_38173_index_time_entries_on_created_on"
    t.index ["issue_id"], name: "idx_38173_time_entries_issue_id"
    t.index ["project_id"], name: "idx_38173_time_entries_project_id"
    t.index ["user_id"], name: "idx_38173_index_time_entries_on_user_id"
  end

  create_table "tokens", force: :cascade do |t|
    t.bigint "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
    t.datetime "updated_on"
    t.index ["user_id"], name: "idx_38181_index_tokens_on_user_id"
    t.index ["value"], name: "idx_38181_tokens_value", unique: true
  end

  create_table "trackers", force: :cascade do |t|
    t.string "name", limit: 30, default: "", null: false
    t.string "description", limit: 255
    t.bigint "position"
    t.boolean "is_in_roadmap", default: true, null: false
    t.bigint "fields_bits", default: 0
    t.bigint "default_status_id"
  end

  create_table "user_preferences", force: :cascade do |t|
    t.bigint "user_id", default: 0, null: false
    t.text "others"
    t.boolean "hide_mail", default: true
    t.string "time_zone", limit: 255
    t.index ["user_id"], name: "idx_38220_index_user_preferences_on_user_id"
  end

  create_table "users", force: :cascade do |t|
    t.string "login", limit: 255, default: "", null: false
    t.string "hashed_password", limit: 40, default: "", null: false
    t.string "firstname", limit: 30, default: "", null: false
    t.string "lastname", limit: 255, default: "", null: false
    t.boolean "admin", default: false, null: false
    t.bigint "status", default: 1, null: false
    t.datetime "last_login_on"
    t.string "language", limit: 5, default: ""
    t.bigint "auth_source_id"
    t.datetime "created_on"
    t.datetime "updated_on"
    t.string "type", limit: 255
    t.string "mail_notification", limit: 255, default: "", null: false
    t.string "salt", limit: 64
    t.boolean "must_change_passwd", default: false, null: false
    t.datetime "passwd_changed_on"
    t.string "twofa_scheme", limit: 255
    t.string "twofa_totp_key", limit: 255
    t.bigint "twofa_totp_last_used_at"
    t.boolean "twofa_required", default: false
    t.index ["auth_source_id"], name: "idx_38199_index_users_on_auth_source_id"
    t.index ["firstname", "lastname"], name: "index_users_on_firstname_and_lastname"
    t.index ["id", "type"], name: "idx_38199_index_users_on_id_and_type"
    t.index ["lastname", "firstname"], name: "index_users_on_lastname_and_firstname"
    t.index ["type"], name: "idx_38199_index_users_on_type"
  end

  create_table "versions", force: :cascade do |t|
    t.bigint "project_id", default: 0, null: false
    t.string "name", limit: 255, default: "", null: false
    t.string "description", limit: 255, default: ""
    t.date "effective_date"
    t.datetime "created_on"
    t.datetime "updated_on"
    t.string "wiki_page_title", limit: 255
    t.string "status", limit: 255, default: "open"
    t.string "sharing", limit: 255, default: "none", null: false
    t.index ["project_id"], name: "idx_38230_versions_project_id"
    t.index ["sharing"], name: "idx_38230_index_versions_on_sharing"
  end

  create_table "viewings", force: :cascade do |t|
    t.bigint "viewer_id"
    t.bigint "viewed_id"
    t.string "viewed_type", limit: 255
    t.string "ip", limit: 24
    t.datetime "created_at"
    t.index ["viewed_type", "viewed_id"], name: "idx_38243_index_viewings_on_viewed_type_and_viewed_id"
    t.index ["viewer_id"], name: "idx_38243_index_viewings_on_viewer_id"
  end

  create_table "watchers", force: :cascade do |t|
    t.string "watchable_type", limit: 255, default: "", null: false
    t.bigint "watchable_id", default: 0, null: false
    t.bigint "user_id"
    t.index ["user_id", "watchable_type"], name: "idx_38250_watchers_user_id_type"
    t.index ["user_id"], name: "idx_38250_index_watchers_on_user_id"
    t.index ["watchable_id", "watchable_type"], name: "idx_38250_index_watchers_on_watchable_id_and_watchable_type"
  end

  create_table "wiki_content_versions", force: :cascade do |t|
    t.bigint "wiki_content_id", null: false
    t.bigint "page_id", null: false
    t.bigint "author_id"
    t.binary "data"
    t.string "compression", limit: 6, default: ""
    t.string "comments", limit: 1024, default: ""
    t.datetime "updated_on", null: false
    t.bigint "version", null: false
    t.index ["updated_on"], name: "idx_38271_index_wiki_content_versions_on_updated_on"
    t.index ["wiki_content_id"], name: "idx_38271_wiki_content_versions_wcid"
  end

  create_table "wiki_contents", force: :cascade do |t|
    t.bigint "page_id", null: false
    t.bigint "author_id"
    t.text "text"
    t.string "comments", limit: 1024, default: ""
    t.datetime "updated_on", null: false
    t.bigint "version", null: false
    t.index ["author_id"], name: "idx_38263_index_wiki_contents_on_author_id"
    t.index ["page_id"], name: "idx_38263_wiki_contents_page_id"
  end

  create_table "wiki_pages", force: :cascade do |t|
    t.bigint "wiki_id", null: false
    t.string "title", limit: 255, null: false
    t.datetime "created_on", null: false
    t.boolean "protected", default: false, null: false
    t.bigint "parent_id"
    t.index ["parent_id"], name: "idx_38280_index_wiki_pages_on_parent_id"
    t.index ["wiki_id", "title"], name: "idx_38280_wiki_pages_wiki_id_title"
    t.index ["wiki_id"], name: "idx_38280_index_wiki_pages_on_wiki_id"
  end

  create_table "wiki_redirects", force: :cascade do |t|
    t.bigint "wiki_id", null: false
    t.string "title", limit: 255
    t.string "redirects_to", limit: 255
    t.datetime "created_on", null: false
    t.bigint "redirects_to_wiki_id", null: false
    t.index ["wiki_id", "title"], name: "idx_38286_wiki_redirects_wiki_id_title"
    t.index ["wiki_id"], name: "idx_38286_index_wiki_redirects_on_wiki_id"
  end

  create_table "wikis", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.string "start_page", limit: 255, null: false
    t.bigint "status", default: 1, null: false
    t.index ["project_id"], name: "idx_38257_wikis_project_id"
  end

  create_table "workflows", force: :cascade do |t|
    t.bigint "tracker_id", default: 0, null: false
    t.bigint "old_status_id", default: 0, null: false
    t.bigint "new_status_id", default: 0, null: false
    t.bigint "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
    t.index ["new_status_id"], name: "idx_38295_index_workflows_on_new_status_id"
    t.index ["old_status_id"], name: "idx_38295_index_workflows_on_old_status_id"
    t.index ["role_id", "tracker_id", "old_status_id"], name: "idx_38295_wkfs_role_tracker_old_status"
    t.index ["role_id"], name: "idx_38295_index_workflows_on_role_id"
    t.index ["tracker_id"], name: "idx_38295_index_workflows_on_tracker_id"
  end

  add_foreign_key "dayoffs", "leave_types"
  add_foreign_key "dayoffs", "users"
  add_foreign_key "drive_entries", "projects", on_update: :restrict, on_delete: :restrict
  add_foreign_key "drive_entries", "users", column: "author_id", on_update: :restrict, on_delete: :restrict
  add_foreign_key "issue_drive_files", "drive_entries", on_update: :restrict, on_delete: :restrict
  add_foreign_key "issue_drive_files", "issues", on_update: :restrict, on_delete: :restrict
end