implement post change report

This commit is contained in:
r888888888
2016-09-07 14:35:35 -07:00
parent 62773852f7
commit e539fdecff
8 changed files with 21 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
require "big_query" require "big_query"
module BigQuery module GoogleBigQuery
class Base class Base
def query(q) def query(q)
client.query(q) client.query(q)
@@ -20,7 +20,7 @@ module BigQuery
def client_options def client_options
@_client_options ||= { @_client_options ||= {
google_key_path: "/var/www/danbooru/shared/google-key.json", google_key_path: Danbooru.config.google_api_json_key_path,
google_data_set: "danbooru_#{Rails.env}" google_data_set: "danbooru_#{Rails.env}"
} }
end end
@@ -28,5 +28,9 @@ module BigQuery
def google_config def google_config
@_google_config ||= JSON.parse(File.read(client_options[:google_key_path])) @_google_config ||= JSON.parse(File.read(client_options[:google_key_path]))
end end
def data_set
client_options[:google_data_set]
end
end end
end end

View File

@@ -1,15 +1,15 @@
module BigQuery module GoogleBigQuery
class PostVersion < Base class PostVersion < Base
def find_removed(tag, limit = 1_000) def find_removed(tag, limit = 1_000)
tag = escape(tag) tag = escape(tag)
limit = limit.to_i limit = limit.to_i
query("select id, post_id, updated_at, updater_id, updater_ip_addr, tags, added_tags, removed_tags, parent_id, rating, source from [danbooru_#{Rails.env}.post_versions] where regexp_match(removed_tags, \"(?:^| )#{tag}(?:$| )\") order by updated_at desc limit #{limit}") query("select id, post_id, updated_at, updater_id, updater_ip_addr, tags, added_tags, removed_tags, parent_id, rating, source from [#{data_set}.post_versions] where regexp_match(removed_tags, \"(?:^| )#{tag}(?:$| )\") order by updated_at desc limit #{limit}")
end end
def find_added(tag, limit = 1_000) def find_added(tag, limit = 1_000)
tag = escape(tag) tag = escape(tag)
limit = limit.to_i limit = limit.to_i
query("select id, post_id, updated_at, updater_id, updater_ip_addr, tags, added_tags, removed_tags, parent_id, rating, source from [danbooru_#{Rails.env}.post_versions] where regexp_match(added_tags, \"(?:^| )#{tag}(?:$| )\") order by updated_at desc limit #{limit}") query("select id, post_id, updated_at, updater_id, updater_ip_addr, tags, added_tags, removed_tags, parent_id, rating, source from [#{data_set}.post_versions] where regexp_match(added_tags, \"(?:^| )#{tag}(?:$| )\") order by updated_at desc limit #{limit}")
end end
end end
end end

View File

@@ -6,13 +6,13 @@ module Reports
@tag = tag @tag = tag
if query_type == "added" if query_type == "added"
@query = BigQuery::PostVersion.new.find_added(tag) @query = GoogleBigQuery::PostVersion.new.find_added(tag)
else else
@query = BigQuery::PostVersion.new.find_removed(tag) @query = GoogleBigQuery::PostVersion.new.find_removed(tag)
end end
end end
def mock_version(raw) def mock_version(row)
PostVersion.new.tap do |x| PostVersion.new.tap do |x|
x.id = row["f"][0]["v"] x.id = row["f"][0]["v"]
x.post_id = row["f"][1]["v"] x.post_id = row["f"][1]["v"]

View File

@@ -50,4 +50,3 @@
</table> </table>
</div> </div>
<%= numbered_paginator(post_versions) %>

View File

@@ -6,6 +6,8 @@
<%= render "post_sets/blank" %> <%= render "post_sets/blank" %>
<% else %> <% else %>
<%= render "listing", :post_versions => @post_versions %> <%= render "listing", :post_versions => @post_versions %>
<%= numbered_paginator(@post_versions) %>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@@ -10,7 +10,7 @@
<%= text_field_tag "tag" %> <%= text_field_tag "tag" %>
<%= select_tag "type", options_for_select(%w(added removed)) %> <%= select_tag "type", options_for_select(%w(added removed)) %>
</div> </div>
<%= submit_tag "Submit", :data => { :disable_with => "Submitting..." } %> <%= submit_tag "Submit" %>
<% end %> <% end %>
</div> </div>

View File

@@ -1,5 +1,5 @@
<div id="c-reports"> <div id="c-post-versions">
<div id="a-post-versions"> <div id="a-index">
<h1>Post Changes Report</h1> <h1>Post Changes Report</h1>
<p>Only the 1,000 most recent changes are displayed.</p> <p>Only the 1,000 most recent changes are displayed.</p>

View File

@@ -421,6 +421,10 @@ module Danbooru
def google_api_project def google_api_project
end end
def google_api_json_key_path
"/var/www/danbooru/shared/config/google-key.json"
end
# AWS config options # AWS config options
def aws_access_key_id def aws_access_key_id
nil nil