support pool version archive
This commit is contained in:
77
app/models/pool_archive.rb
Normal file
77
app/models/pool_archive.rb
Normal file
@@ -0,0 +1,77 @@
|
||||
class PoolArchive < ActiveRecord::Base
|
||||
establish_connection "archive_#{Rails.env}".to_sym
|
||||
self.table_name = "pool_versions"
|
||||
|
||||
module SearchMethods
|
||||
def for_user(user_id)
|
||||
where("updater_id = ?", user_id)
|
||||
end
|
||||
|
||||
def search(params)
|
||||
q = where("true")
|
||||
return q if params.blank?
|
||||
|
||||
if params[:updater_id].present?
|
||||
q = q.for_user(params[:updater_id].to_i)
|
||||
end
|
||||
|
||||
if params[:updater_name].present?
|
||||
q = q.where("updater_id = ?", User.name_to_id(params[:updater_name]))
|
||||
end
|
||||
|
||||
if params[:pool_id].present?
|
||||
q = q.where("pool_id = ?", params[:pool_id].to_i)
|
||||
end
|
||||
|
||||
q
|
||||
end
|
||||
end
|
||||
|
||||
extend SearchMethods
|
||||
|
||||
def self.enabled?
|
||||
Danbooru.config.aws_sqs_archives_url.present?
|
||||
end
|
||||
|
||||
def self.sqs_service
|
||||
SqsService.new(Danbooru.config.aws_sqs_archives_url)
|
||||
end
|
||||
|
||||
def self.queue(pool)
|
||||
# queue updates to sqs so that if archives goes down for whatever reason it won't
|
||||
# block pool updates
|
||||
raise "Archive service is not configured" if !enabled?
|
||||
|
||||
json = {
|
||||
pool_id: pool.id,
|
||||
post_ids: pool.post_ids.scan(/\d+/).map(&:to_i),
|
||||
updater_id: CurrentUser.id,
|
||||
updater_ip_addr: CurrentUser.ip_addr.to_s,
|
||||
created_at: pool.created_at.try(:iso8601),
|
||||
updated_at: pool.updated_at.try(:iso8601),
|
||||
description: pool.description,
|
||||
name: pool.name,
|
||||
is_active: pool.is_active?,
|
||||
is_deleted: pool.is_deleted?,
|
||||
category: pool.category
|
||||
}
|
||||
msg = "add pool version\n#{json.to_json}"
|
||||
sqs_service.send_message(msg)
|
||||
end
|
||||
|
||||
def pool
|
||||
Pool.find(pool_id)
|
||||
end
|
||||
|
||||
def updater
|
||||
User.find(updater_id)
|
||||
end
|
||||
|
||||
def updater_name
|
||||
User.id_to_name(updater_id)
|
||||
end
|
||||
|
||||
def pretty_name
|
||||
name.tr("_", " ")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user