bulk revert
This commit is contained in:
@@ -3,34 +3,50 @@ module GoogleBigQuery
|
||||
def find_removed(tag, limit = 1_000)
|
||||
tag = escape(tag)
|
||||
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 [#{data_set}.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 #{remove_tag_condition(tag)} order by updated_at desc limit #{limit}")
|
||||
end
|
||||
|
||||
def find_added(tag, limit = 1_000)
|
||||
tag = escape(tag)
|
||||
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 [#{data_set}.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 #{add_tag_condition(tag)} order by updated_at desc limit #{limit}")
|
||||
end
|
||||
|
||||
def find(user_id, added_tags, removed_tags, limit = 1_000)
|
||||
def add_tag_condition(t)
|
||||
es = escape(t)
|
||||
"regexp_match(added_tags, \"(?:^| )#{es}(?:$| )\")"
|
||||
end
|
||||
|
||||
def remove_tag_condition(t)
|
||||
es = escape(t)
|
||||
"regexp_match(removed_tags, \"(?:^| )#{es}(?:$| )\")"
|
||||
end
|
||||
|
||||
def find(user_id, added_tags, removed_tags, min_version_id, max_version_id, limit = 1_000)
|
||||
constraints = []
|
||||
|
||||
constraints << "updater_id = #{user_id.to_i}"
|
||||
|
||||
if added_tags
|
||||
added_tags.scan(/\S+/).each do |tag|
|
||||
escaped = escape(tag)
|
||||
constraints << "regexp_match(added_tags, \"(?:^| )#{escaped}(?:$| )\")"
|
||||
constraints << add_tag_condition(tag)
|
||||
end
|
||||
end
|
||||
|
||||
if removed_tags
|
||||
removed_tags.scan(/\S+/).each do |tag|
|
||||
escaped = escape(tag)
|
||||
constraints << "not regexp_match(added_tags, \"(?:^| )#{escaped}(?:$| )\")"
|
||||
constraints << remove_tag_condition(tag)
|
||||
end
|
||||
end
|
||||
|
||||
if min_version_id
|
||||
constraints << "id >= #{min_version_id.to_i}"
|
||||
end
|
||||
|
||||
if max_version_id
|
||||
constraints << "id <= #{max_version_id.to_i}"
|
||||
end
|
||||
|
||||
limit = limit.to_i
|
||||
sql = "select id from [#{data_set}.post_versions] where " + constraints.join(" and ") + " order by updated_at desc limit #{limit}"
|
||||
result = query(sql)
|
||||
|
||||
Reference in New Issue
Block a user