diff --git a/app.rb b/app.rb index 8206bc54..d1c71372 100644 --- a/app.rb +++ b/app.rb @@ -463,9 +463,9 @@ def browse_sites_dataset case params[:sort_by] when 'hits' - site_dataset.order!(:hits.desc, :updated_at.desc) + site_dataset.order!(:hits.desc, :site_updated_at.desc) when 'views' - site_dataset.order!(:views.desc, :updated_at.desc) + site_dataset.order!(:views.desc, :site_updated_at.desc) when 'newest' site_dataset.order!(:created_at.desc, :views.desc) when 'oldest' @@ -474,14 +474,14 @@ def browse_sites_dataset site_dataset.where! 'random() < 0.01' when 'last_updated' params[:sort_by] = 'last_updated' - site_dataset.order!(:updated_at.desc, :views.desc) + site_dataset.order!(:site_updated_at.desc, :views.desc) else if params[:tag] params[:sort_by] = 'views' - site_dataset.order!(:views.desc, :updated_at.desc) + site_dataset.order!(:views.desc, :site_updated_at.desc) else params[:sort_by] = 'last_updated' - site_dataset.order!(:updated_at.desc, :views.desc) + site_dataset.order!(:site_updated_at.desc, :views.desc) end end @@ -591,8 +591,7 @@ post '/create' do password: params[:password], email: params[:email], new_tags_string: params[:tags], - ip: request.ip, - created_at: Time.now + ip: request.ip ) black_box_answered = BlackBox.valid? params[:blackbox_answer], request.ip @@ -1376,7 +1375,7 @@ def api_info_for(site) views: site.views, hits: site.hits, created_at: site.created_at.rfc2822, - last_updated: site.updated_at.rfc2822, + last_updated: site.site_updated_at ? site.site_updated_at.rfc2822 : nil, domain: site.domain, tags: site.tags.collect {|t| t.name} } diff --git a/environment.rb b/environment.rb index ab9f9611..4095bccc 100644 --- a/environment.rb +++ b/environment.rb @@ -89,7 +89,7 @@ Sequel.extension :migration Sequel::Model.plugin :validation_helpers Sequel::Model.plugin :force_encoding, 'UTF-8' Sequel::Model.plugin :defaults_setter -Sequel::Model.plugin :timestamps, create: :created_at, update: :DONT_UPDATE +Sequel::Model.plugin :create_timestamp Sequel.default_timezone = 'UTC' Sequel::Migrator.apply DB, './migrations' diff --git a/ext/sequel/plugins/create_timestamp.rb b/ext/sequel/plugins/create_timestamp.rb new file mode 100644 index 00000000..8d27d1ef --- /dev/null +++ b/ext/sequel/plugins/create_timestamp.rb @@ -0,0 +1,8 @@ +module Sequel::Plugins::CreateTimestamp + module InstanceMethods + def before_create + self.created_at = Time.now if respond_to?(:created_at) && !self.created_at + super + end + end +end \ No newline at end of file diff --git a/ext/sequel/paranoid_delete.rb b/ext/sequel/plugins/paranoid_delete.rb similarity index 100% rename from ext/sequel/paranoid_delete.rb rename to ext/sequel/plugins/paranoid_delete.rb diff --git a/migrations/050_add_site_files.rb b/migrations/050_add_site_files.rb new file mode 100644 index 00000000..af9cae97 --- /dev/null +++ b/migrations/050_add_site_files.rb @@ -0,0 +1,17 @@ +Sequel.migration do + up { + DB.create_table! :site_files do + Integer :site_id, index: true + String :path + Bigint :size + String :sha1_hash + Boolean :is_directory, default: false + DateTime :created_at + DateTime :updated_at + end + } + + down { + DB.drop_table :site_files + } +end \ No newline at end of file diff --git a/migrations/051_add_site_updated_at.rb b/migrations/051_add_site_updated_at.rb new file mode 100644 index 00000000..e5333662 --- /dev/null +++ b/migrations/051_add_site_updated_at.rb @@ -0,0 +1,9 @@ +Sequel.migration do + up { + DB.add_column :sites, :site_updated_at, DateTime, index: true + } + + down { + DB.drop_column :sites, :site_updated_at + } +end \ No newline at end of file diff --git a/models/site.rb b/models/site.rb index 9e981108..91e1c255 100644 --- a/models/site.rb +++ b/models/site.rb @@ -492,6 +492,8 @@ class Site < Sequel::Model end self.site_changed = true + self.site_updated_at = Time.now + self.updated_at = Time.now save_changes(validate: false) end @@ -536,7 +538,6 @@ class Site < Sequel::Model def increment_changed_count self.changed_count += 1 - self.updated_at = Time.now save_changes(validate: false) end