|
- # == Schema Information
- #
- # Table name: mirrors
- #
- # id :integer not null, primary key
- # repo_id :integer
- # status :integer default("0"), not null
- # interval :integer
- # next_update_time :datetime
- # created_at :datetime not null
- # updated_at :datetime not null
- # sync_num :integer default("1")
- #
-
- class Mirror < ApplicationRecord
-
- # 0 - succeeded, 1 - waiting, 2 - failed
- # 0: 同步镜像成功;1: 正在同步镜像;2: 同步失败; 默认值为0
- enum status: { succeeded: 0, waiting: 1, failed: 2 }
-
- after_update :websocket_boardcast, if: :saved_change_to_status?
-
- belongs_to :repository, foreign_key: :repo_id
-
- def set_status!(status=Mirror.statuses[:succeeded])
- update_column(:status, status)
- end
-
- def numerical_for_status
- self.class.name.constantize.statuses["#{self.status}"]
- end
-
- private
- def websocket_boardcast
- BroadcastMirrorRepoMsgJob.perform_later(self.repository.id)
- end
- end
|