| @@ -17,7 +17,7 @@ | |||
| # disk_directory :string(255) | |||
| # attachtype :integer default("1") | |||
| # is_public :integer default("1") | |||
| # copy_from :integer | |||
| # copy_from :string(255) | |||
| # quotes :integer default("0") | |||
| # is_publish :integer default("1") | |||
| # publish_time :datetime | |||
| @@ -26,15 +26,15 @@ | |||
| # cloud_url :string(255) default("") | |||
| # course_second_category_id :integer default("0") | |||
| # delay_publish :boolean default("0") | |||
| # link :string(255) | |||
| # clone_id :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_attachments_on_author_id (author_id) | |||
| # index_attachments_on_clone_id (clone_id) | |||
| # index_attachments_on_container_id_and_container_type (container_id,container_type) | |||
| # index_attachments_on_course_second_category_id (course_second_category_id) | |||
| # index_attachments_on_created_on (created_on) | |||
| # index_attachments_on_is_public (is_public) | |||
| # index_attachments_on_quotes (quotes) | |||
| # | |||
| class Attachment < ApplicationRecord | |||
| @@ -1,3 +1,21 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: chart_rules | |||
| # | |||
| # id :integer not null, primary key | |||
| # rule_type :string(255) | |||
| # content :text(65535) | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # competition_id :integer | |||
| # competition_stage_id :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_chart_rules_on_competition_id (competition_id) | |||
| # index_chart_rules_on_competition_stage_id (competition_stage_id) | |||
| # | |||
| class ChartRule < ApplicationRecord | |||
| validates :content, length: { maximum: 1000, too_long: "不能超过1000个字符" } | |||
| @@ -1,3 +1,22 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: stages | |||
| # | |||
| # id :integer not null | |||
| # subject_id :integer | |||
| # name :string(255) | |||
| # description :text(65535) | |||
| # user_id :integer | |||
| # position :integer | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # shixuns_count :integer default("0") | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_stages_on_subject_id (subject_id) | |||
| # | |||
| class Ci::Stage < Ci::RemoteBase | |||
| self.primary_key = 'stage_id' | |||
| @@ -39,13 +39,14 @@ | |||
| # business :boolean default("0") | |||
| # profile_completed :boolean default("0") | |||
| # laboratory_id :integer | |||
| # platform :string(255) default("0") | |||
| # gitea_token :string(255) | |||
| # gitea_uid :integer | |||
| # is_shixun_marker :boolean default("0") | |||
| # admin_visitable :boolean default("0") | |||
| # collaborator :boolean default("0") | |||
| # gitea_uid :integer | |||
| # is_sync_pwd :boolean default("1") | |||
| # watchers_count :integer default("0") | |||
| # devops_step :integer default("0") | |||
| # gitea_token :string(255) | |||
| # | |||
| # Indexes | |||
| # | |||
| @@ -53,8 +54,9 @@ | |||
| # index_users_on_homepage_engineer (homepage_engineer) | |||
| # index_users_on_homepage_teacher (homepage_teacher) | |||
| # index_users_on_laboratory_id (laboratory_id) | |||
| # index_users_on_login (login) | |||
| # index_users_on_mail (mail) | |||
| # index_users_on_login (login) UNIQUE | |||
| # index_users_on_mail (mail) UNIQUE | |||
| # index_users_on_phone (phone) UNIQUE | |||
| # index_users_on_type (type) | |||
| # | |||
| @@ -1,3 +1,38 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: discusses | |||
| # | |||
| # id :integer not null, primary key | |||
| # user_id :integer | |||
| # dis_type :string(255) | |||
| # dis_id :integer | |||
| # content :text(65535) | |||
| # parent_id :integer | |||
| # root_id :integer | |||
| # praise_count :integer | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # challenge_id :integer | |||
| # reward :integer | |||
| # hidden :boolean default("0") | |||
| # last_reply_id :integer | |||
| # position :integer | |||
| # praises_count :integer default("0") | |||
| # sticky :boolean default("0") | |||
| # course_sticky :boolean default("0") | |||
| # course_hidden :boolean default("0") | |||
| # copy_message_id :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_discusses_on_challenge_id (challenge_id) | |||
| # index_discusses_on_copy_message_id (copy_message_id) | |||
| # index_discusses_on_course_hidden (course_hidden) | |||
| # index_discusses_on_course_sticky (course_sticky) | |||
| # index_discusses_on_dis_id_and_dis_type (dis_id,dis_type) | |||
| # index_discusses_on_user_id (user_id) | |||
| # | |||
| class Discuss < ApplicationRecord | |||
| default_scope { order(created_at: :desc) } | |||
| @@ -1,5 +1,24 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: forge_activities | |||
| # | |||
| # id :integer not null, primary key | |||
| # user_id :integer | |||
| # project_id :integer | |||
| # forge_act_id :integer | |||
| # forge_act_type :string(255) | |||
| # org_id :integer | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # | |||
| # Indexes | |||
| # | |||
| # forge_act_index (project_id,forge_act_id,created_at,forge_act_type) | |||
| # index_forge_activities_on_forge_act_id (forge_act_id) | |||
| # | |||
| class ForgeActivity < ApplicationRecord | |||
| belongs_to :user | |||
| belongs_to :project | |||
| belongs_to :forge_act, polymorphic: true | |||
| end | |||
| end | |||
| @@ -1,3 +1,17 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: helps | |||
| # | |||
| # id :integer not null, primary key | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # about_us :text(65535) | |||
| # agreement :text(65535) | |||
| # status :text(65535) | |||
| # help_center :text(65535) | |||
| # join_us :text(65535) | |||
| # | |||
| class Help < ApplicationRecord | |||
| end | |||
| end | |||
| @@ -10,6 +10,12 @@ | |||
| # sync_course :boolean default("0") | |||
| # sync_subject :boolean default("0") | |||
| # sync_shixun :boolean default("0") | |||
| # is_local :boolean default("0") | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_laboratories_on_identifier (identifier) UNIQUE | |||
| # index_laboratories_on_school_id (school_id) | |||
| # | |||
| class Laboratory < ApplicationRecord | |||
| @@ -6,6 +6,10 @@ | |||
| # laboratory_id :integer | |||
| # config :text(65535) | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_laboratory_settings_on_laboratory_id (laboratory_id) | |||
| # | |||
| class LaboratorySetting < ApplicationRecord | |||
| belongs_to :laboratory | |||
| @@ -7,7 +7,6 @@ | |||
| # content :text(65535) | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # is_secret :boolean default("0") | |||
| # | |||
| class License < ApplicationRecord | |||
| @@ -1,3 +1,27 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: live_links | |||
| # | |||
| # id :integer not null, primary key | |||
| # course_id :integer | |||
| # user_id :integer | |||
| # url :string(255) | |||
| # description :text(65535) | |||
| # on_status :boolean default("0") | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # course_name :string(255) | |||
| # platform :string(255) | |||
| # live_time :datetime | |||
| # duration :integer | |||
| # position :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_live_links_on_course_id (course_id) | |||
| # index_live_links_on_user_id (user_id) | |||
| # | |||
| class LiveLink < ApplicationRecord | |||
| # belongs_to :course | |||
| belongs_to :user | |||
| @@ -11,7 +11,6 @@ | |||
| # course_group_id :integer default("0") | |||
| # is_collect :integer default("1") | |||
| # graduation_group_id :integer default("0") | |||
| # is_apply_signature :boolean default("0") | |||
| # | |||
| # Indexes | |||
| # | |||
| @@ -1,3 +1,18 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: message_details | |||
| # | |||
| # id :integer not null, primary key | |||
| # content :text(4294967295) | |||
| # message_id :integer | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_message_details_on_message_id (message_id) | |||
| # | |||
| class MessageDetail < ApplicationRecord | |||
| # belongs_to :message, :touch => true | |||
| validates :content, length: { maximum: 10000, too_long: "内容不能超过10000个字符" } | |||
| @@ -39,13 +39,14 @@ | |||
| # business :boolean default("0") | |||
| # profile_completed :boolean default("0") | |||
| # laboratory_id :integer | |||
| # platform :string(255) default("0") | |||
| # gitea_token :string(255) | |||
| # gitea_uid :integer | |||
| # is_shixun_marker :boolean default("0") | |||
| # admin_visitable :boolean default("0") | |||
| # collaborator :boolean default("0") | |||
| # gitea_uid :integer | |||
| # is_sync_pwd :boolean default("1") | |||
| # watchers_count :integer default("0") | |||
| # devops_step :integer default("0") | |||
| # gitea_token :string(255) | |||
| # | |||
| # Indexes | |||
| # | |||
| @@ -53,8 +54,9 @@ | |||
| # index_users_on_homepage_engineer (homepage_engineer) | |||
| # index_users_on_homepage_teacher (homepage_teacher) | |||
| # index_users_on_laboratory_id (laboratory_id) | |||
| # index_users_on_login (login) | |||
| # index_users_on_mail (mail) | |||
| # index_users_on_login (login) UNIQUE | |||
| # index_users_on_mail (mail) UNIQUE | |||
| # index_users_on_phone (phone) UNIQUE | |||
| # index_users_on_type (type) | |||
| # | |||
| @@ -37,8 +37,6 @@ | |||
| # rep_identifier :string(255) | |||
| # project_category_id :integer | |||
| # project_language_id :integer | |||
| # license_id :integer | |||
| # ignore_id :integer | |||
| # praises_count :integer default("0") | |||
| # watchers_count :integer default("0") | |||
| # issues_count :integer default("0") | |||
| @@ -52,8 +50,11 @@ | |||
| # open_devops_count :integer default("0") | |||
| # recommend :boolean default("0") | |||
| # platform :integer default("0") | |||
| # license_id :integer | |||
| # ignore_id :integer | |||
| # default_branch :string(255) default("master") | |||
| # website :string(255) | |||
| # lesson_url :string(255) | |||
| # | |||
| # Indexes | |||
| # | |||
| @@ -70,10 +71,6 @@ | |||
| # index_projects_on_updated_on (updated_on) | |||
| # | |||
| class Project < ApplicationRecord | |||
| include Matchable | |||
| include Publicable | |||
| @@ -8,11 +8,6 @@ | |||
| # projects_count :integer default("0") | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # ancestry :string(255) | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_project_categories_on_ancestry (ancestry) | |||
| # | |||
| class ProjectCategory < ApplicationRecord | |||
| @@ -25,7 +25,6 @@ | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_repositories_on_identifier (identifier) | |||
| # index_repositories_on_project_id (project_id) | |||
| # index_repositories_on_user_id (user_id) | |||
| # | |||
| @@ -1,3 +1,39 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: schools | |||
| # | |||
| # id :integer not null, primary key | |||
| # name :string(255) | |||
| # province :string(255) | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # logo_link :string(255) | |||
| # pinyin :string(255) | |||
| # school_type :integer default("0") | |||
| # city :string(255) | |||
| # address :string(255) | |||
| # auto_users_trial :boolean default("0") | |||
| # shool_code :string(255) | |||
| # authorization_time :datetime | |||
| # ec_auth :integer default("0") | |||
| # identifier :string(255) | |||
| # is_online :boolean default("0") | |||
| # video_name :string(255) | |||
| # video_desc :string(255) | |||
| # course_link :string(255) | |||
| # course_name :string(255) | |||
| # partner_id :integer | |||
| # customer_id :integer | |||
| # school_property_id :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_schools_on_customer_id (customer_id) | |||
| # index_schools_on_identifier (identifier) | |||
| # index_schools_on_partner_id (partner_id) | |||
| # index_schools_on_school_property_id (school_property_id) | |||
| # | |||
| class School < ApplicationRecord | |||
| has_many :departments, dependent: :destroy | |||
| @@ -1,4 +1,87 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: courses | |||
| # | |||
| # id :integer not null, primary key | |||
| # tea_id :integer | |||
| # name :string(255) | |||
| # state :integer | |||
| # code :string(255) | |||
| # time :integer | |||
| # extra :string(255) | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # location :string(255) | |||
| # term :string(255) | |||
| # string :string(255) | |||
| # password :string(255) | |||
| # setup_time :string(255) | |||
| # endup_time :string(255) | |||
| # class_period :integer default("0") | |||
| # school_id :integer | |||
| # description :text(65535) | |||
| # status :integer default("1") | |||
| # attachmenttype :integer default("2") | |||
| # lft :integer | |||
| # rgt :integer | |||
| # is_public :integer default("1") | |||
| # inherit_members :integer default("1") | |||
| # open_student :integer default("0") | |||
| # outline :integer default("0") | |||
| # publish_resource :integer default("0") | |||
| # is_delete :integer default("0") | |||
| # end_time :integer | |||
| # end_term :string(255) | |||
| # is_excellent :integer default("0") | |||
| # excellent_option :integer default("0") | |||
| # is_copy :integer default("0") | |||
| # visits :integer default("0") | |||
| # syllabus_id :integer | |||
| # invite_code :string(255) | |||
| # qrcode :string(255) | |||
| # qrcode_expiretime :integer default("0") | |||
| # invite_code_halt :integer default("0") | |||
| # os_allow :integer default("0") | |||
| # credit :float(24) | |||
| # is_end :boolean default("0") | |||
| # end_date :date | |||
| # choose_group_allow :boolean default("0") | |||
| # homepage_show :boolean default("0") | |||
| # course_list_id :integer | |||
| # members_count :integer default("0") | |||
| # homework_commons_count :integer default("0") | |||
| # show_unit :boolean default("0") | |||
| # teacher_list :string(255) default("老师") | |||
| # student_list :string(255) default("学生") | |||
| # is_hidden :boolean default("0") | |||
| # course_members_count :integer default("0") | |||
| # course_groups_count :integer default("0") | |||
| # authentication :boolean default("0") | |||
| # professional_certification :boolean default("0") | |||
| # graduation_topics_count :integer default("0") | |||
| # graduation_tasks_count :integer default("0") | |||
| # polls_count :integer default("0") | |||
| # exercises_count :integer default("0") | |||
| # start_date :date | |||
| # subject_id :integer default("0") | |||
| # excellent :boolean default("0") | |||
| # email_notify :boolean default("0") | |||
| # sticky :boolean default("0") | |||
| # sticky_time :datetime | |||
| # laboratory_id :integer | |||
| # mooc_course_id :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_courses_on_invite_code (invite_code) UNIQUE | |||
| # index_courses_on_laboratory_id (laboratory_id) | |||
| # index_courses_on_mooc_course_id (mooc_course_id) | |||
| # index_courses_on_school_id_and_is_delete (school_id,is_delete) | |||
| # index_courses_on_subject_id (subject_id) | |||
| # index_courses_on_tea_id (tea_id) | |||
| # | |||
| class Trustie::Course < Trustie::Database | |||
| has_many :course_groups, class_name: "Trustie::CourseGroup" | |||
| has_many :homework_commons, class_name: "Trustie::HomeworkCommon" | |||
| end | |||
| end | |||
| @@ -1,3 +1,25 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: course_groups | |||
| # | |||
| # id :integer not null, primary key | |||
| # name :string(255) | |||
| # course_id :integer | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # members_count :integer | |||
| # invite_code :string(255) | |||
| # position :integer default("0") | |||
| # course_members_count :integer default("0") | |||
| # invite_code_halt :boolean default("0") | |||
| # invite_code_set :integer default("0") | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_course_groups_on_course_id (course_id) | |||
| # index_course_groups_on_invite_code (invite_code) UNIQUE | |||
| # | |||
| class Trustie::CourseGroup < Trustie::Database | |||
| belongs_to :course, class_name: "Trustie::Course" | |||
| end | |||
| end | |||
| @@ -1,3 +1,54 @@ | |||
| # == Schema Information | |||
| # | |||
| # Table name: homework_commons | |||
| # | |||
| # id :integer not null, primary key | |||
| # name :string(255) | |||
| # user_id :integer | |||
| # description :text(65535) | |||
| # publish_time :datetime | |||
| # end_time :datetime | |||
| # homework_type :integer default("1") | |||
| # late_penalty :string(255) default("0") | |||
| # course_id :integer | |||
| # created_at :datetime not null | |||
| # updated_at :datetime not null | |||
| # teacher_priority :integer default("1") | |||
| # anonymous_comment :boolean default("0") | |||
| # quotes :integer default("0") | |||
| # is_open :integer default("0") | |||
| # simi_time :datetime | |||
| # score_open :boolean default("0") | |||
| # anonymous_appeal :boolean default("0") | |||
| # homework_bank_id :integer | |||
| # is_update :boolean default("0") | |||
| # is_public :boolean default("0") | |||
| # reference_answer :text(65535) | |||
| # answer_public :boolean default("0") | |||
| # archive_time :datetime | |||
| # allow_late :boolean default("0") | |||
| # late_time :datetime | |||
| # work_public :boolean default("0") | |||
| # explanation :text(65535) | |||
| # unified_setting :boolean default("1") | |||
| # comment_public :boolean default("1") | |||
| # course_homework_category_id :integer | |||
| # work_efficiency :boolean default("0") | |||
| # eff_score :float(24) default("0") | |||
| # max_efficiency :float(24) default("0") | |||
| # course_second_category_id :integer default("0") | |||
| # calculation_time :datetime | |||
| # position :integer default("0") | |||
| # total_score :float(24) default("100") | |||
| # category_position :integer default("0") | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_homework_commons_on_course_id_and_id (course_id,id) | |||
| # index_homework_commons_on_course_second_category_id (course_second_category_id) | |||
| # index_homework_commons_on_homework_bank_id (homework_bank_id) | |||
| # | |||
| class Trustie::HomeworkCommon < Trustie::Database | |||
| belongs_to :course, class_name: "Trustie::Course" | |||
| end | |||
| end | |||
| @@ -39,13 +39,14 @@ | |||
| # business :boolean default("0") | |||
| # profile_completed :boolean default("0") | |||
| # laboratory_id :integer | |||
| # platform :string(255) default("0") | |||
| # gitea_token :string(255) | |||
| # gitea_uid :integer | |||
| # is_shixun_marker :boolean default("0") | |||
| # admin_visitable :boolean default("0") | |||
| # collaborator :boolean default("0") | |||
| # gitea_uid :integer | |||
| # is_sync_pwd :boolean default("1") | |||
| # watchers_count :integer default("0") | |||
| # devops_step :integer default("0") | |||
| # gitea_token :string(255) | |||
| # | |||
| # Indexes | |||
| # | |||
| @@ -53,8 +54,9 @@ | |||
| # index_users_on_homepage_engineer (homepage_engineer) | |||
| # index_users_on_homepage_teacher (homepage_teacher) | |||
| # index_users_on_laboratory_id (laboratory_id) | |||
| # index_users_on_login (login) | |||
| # index_users_on_mail (mail) | |||
| # index_users_on_login (login) UNIQUE | |||
| # index_users_on_mail (mail) UNIQUE | |||
| # index_users_on_phone (phone) UNIQUE | |||
| # index_users_on_type (type) | |||
| # | |||
| @@ -190,6 +192,10 @@ class User < Owner | |||
| validate :validate_sensitive_string | |||
| validate :validate_password_length | |||
| def name | |||
| login | |||
| end | |||
| # 删除自动登录的token,一旦退出下次会提示需要登录 | |||
| def delete_autologin_token(value) | |||
| Token.where(:user_id => id, :action => 'autologin', :value => value).delete_all | |||
| @@ -12,7 +12,9 @@ | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_user_actions_on_ip (ip) | |||
| # index_user_actions_on_ip (ip) | |||
| # index_user_actions_on_user_id (user_id) | |||
| # index_user_actions_on_user_id_and_action_type (user_id,action_type) | |||
| # | |||
| class UserAction < ApplicationRecord | |||
| @@ -10,10 +10,13 @@ | |||
| # updated_at :datetime not null | |||
| # register_status :integer default("0") | |||
| # action_status :integer default("0") | |||
| # is_delete :boolean default("0") | |||
| # user_id :integer | |||
| # | |||
| # Indexes | |||
| # | |||
| # index_user_agents_on_ip (ip) UNIQUE | |||
| # index_user_agents_on_ip (ip) | |||
| # index_user_agents_on_user_id (user_id) | |||
| # | |||
| class UserAgent < ApplicationRecord | |||
| @@ -22,6 +22,9 @@ | |||
| # school_id :integer | |||
| # description :string(255) default("") | |||
| # department_id :integer | |||
| # honor :text(65535) | |||
| # edu_background :integer | |||
| # edu_entry_year :integer | |||
| # | |||
| # Indexes | |||
| # | |||