From a5a163ecdd7ec38ee206a08842ee061e4e77a583 Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 2 Aug 2024 11:38:18 +0100 Subject: [PATCH] Rename exports table --- app/models/export.rb | 2 ++ app/models/logs_export.rb | 2 -- app/services/exports/export_service.rb | 2 +- .../exports/lettings_log_export_service.rb | 12 ++++++------ app/services/exports/user_export_service.rb | 12 ++++++------ .../20240802093255_rename_export_table.rb | 5 +++++ db/schema.rb | 18 +++++++++--------- .../lettings_log_export_service_spec.rb | 16 ++++++++-------- .../exports/user_export_service_spec.rb | 14 +++++++------- 9 files changed, 44 insertions(+), 39 deletions(-) create mode 100644 app/models/export.rb delete mode 100644 app/models/logs_export.rb create mode 100644 db/migrate/20240802093255_rename_export_table.rb diff --git a/app/models/export.rb b/app/models/export.rb new file mode 100644 index 000000000..2ee04fe3d --- /dev/null +++ b/app/models/export.rb @@ -0,0 +1,2 @@ +class Export < ApplicationRecord +end diff --git a/app/models/logs_export.rb b/app/models/logs_export.rb deleted file mode 100644 index 0ae2e4179..000000000 --- a/app/models/logs_export.rb +++ /dev/null @@ -1,2 +0,0 @@ -class LogsExport < ApplicationRecord -end diff --git a/app/services/exports/export_service.rb b/app/services/exports/export_service.rb index 82d23b46b..288c7513a 100644 --- a/app/services/exports/export_service.rb +++ b/app/services/exports/export_service.rb @@ -24,7 +24,7 @@ module Exports def get_daily_run_number today = Time.zone.today - LogsExport.where(created_at: today.beginning_of_day..today.end_of_day).select(:started_at).distinct.count + 1 + Export.where(created_at: today.beginning_of_day..today.end_of_day).select(:started_at).distinct.count + 1 end def write_master_manifest(daily_run, archive_datetimes) diff --git a/app/services/exports/lettings_log_export_service.rb b/app/services/exports/lettings_log_export_service.rb index a8ffa2f51..07ed4425b 100644 --- a/app/services/exports/lettings_log_export_service.rb +++ b/app/services/exports/lettings_log_export_service.rb @@ -11,9 +11,9 @@ module Exports def export_xml_lettings_logs(full_update: false, collection_year: nil) archives_for_manifest = {} - recent_export = LogsExport.order("started_at").last + recent_export = Export.order("started_at").last collection_years_to_export(collection_year).each do |collection| - base_number = LogsExport.where(empty_export: false, collection:).maximum(:base_number) || 1 + base_number = Export.where(empty_export: false, collection:).maximum(:base_number) || 1 export = build_export_run(collection, base_number, full_update) archives = write_export_archive(export, collection, recent_export, full_update) @@ -30,22 +30,22 @@ module Exports def build_export_run(collection, base_number, full_update) @logger.info("Building export run for #{collection}") - previous_exports_with_data = LogsExport.where(collection:, empty_export: false) + previous_exports_with_data = Export.where(collection:, empty_export: false) increment_number = previous_exports_with_data.where(base_number:).maximum(:increment_number) || 1 if full_update - base_number += 1 if LogsExport.any? # Only increment when it's not the first run + base_number += 1 if Export.any? # Only increment when it's not the first run increment_number = 1 else increment_number += 1 end if previous_exports_with_data.empty? - return LogsExport.new(collection:, base_number:, started_at: @start_time) + return Export.new(collection:, base_number:, started_at: @start_time) end - LogsExport.new(collection:, started_at: @start_time, base_number:, increment_number:) + Export.new(collection:, started_at: @start_time, base_number:, increment_number:) end def get_archive_name(collection, base_number, increment) diff --git a/app/services/exports/user_export_service.rb b/app/services/exports/user_export_service.rb index d9f06451e..8dbb3214b 100644 --- a/app/services/exports/user_export_service.rb +++ b/app/services/exports/user_export_service.rb @@ -10,10 +10,10 @@ module Exports end def export_xml_users(full_update: false) - recent_export = LogsExport.order("started_at").last + recent_export = Export.order("started_at").last collection = "users" - base_number = LogsExport.where(empty_export: false, collection:).maximum(:base_number) || 1 + base_number = Export.where(empty_export: false, collection:).maximum(:base_number) || 1 export = build_export_run(collection, base_number, full_update) archives_for_manifest = write_export_archive(export, collection, recent_export, full_update) @@ -27,22 +27,22 @@ module Exports def build_export_run(collection, base_number, full_update) @logger.info("Building export run for #{collection}") - previous_exports_with_data = LogsExport.where(collection:, empty_export: false) + previous_exports_with_data = Export.where(collection:, empty_export: false) increment_number = previous_exports_with_data.where(base_number:).maximum(:increment_number) || 1 if full_update - base_number += 1 if LogsExport.any? # Only increment when it's not the first run + base_number += 1 if Export.any? # Only increment when it's not the first run increment_number = 1 else increment_number += 1 end if previous_exports_with_data.empty? - return LogsExport.new(collection:, base_number:, started_at: @start_time) + return Export.new(collection:, base_number:, started_at: @start_time) end - LogsExport.new(collection:, started_at: @start_time, base_number:, increment_number:) + Export.new(collection:, started_at: @start_time, base_number:, increment_number:) end def get_archive_name(collection, base_number, increment) diff --git a/db/migrate/20240802093255_rename_export_table.rb b/db/migrate/20240802093255_rename_export_table.rb new file mode 100644 index 000000000..68c14d0a9 --- /dev/null +++ b/db/migrate/20240802093255_rename_export_table.rb @@ -0,0 +1,5 @@ +class RenameExportTable < ActiveRecord::Migration[7.0] + def change + rename_table :logs_exports, :exports + end +end diff --git a/db/schema.rb b/db/schema.rb index 80463eaad..c1600a951 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -77,6 +77,15 @@ ActiveRecord::Schema[7.0].define(version: 2024_09_18_112702) do t.index ["organisation_id"], name: "index_data_protection_confirmations_on_organisation_id" end + create_table "exports", force: :cascade do |t| + t.datetime "created_at", default: -> { "CURRENT_TIMESTAMP" } + t.datetime "started_at", null: false + t.integer "base_number", default: 1, null: false + t.integer "increment_number", default: 1, null: false + t.boolean "empty_export", default: false, null: false + t.string "collection" + end + create_table "la_rent_ranges", force: :cascade do |t| t.integer "ranges_rent_id" t.integer "lettype" @@ -412,15 +421,6 @@ ActiveRecord::Schema[7.0].define(version: 2024_09_18_112702) do t.datetime "updated_at", null: false end - create_table "logs_exports", force: :cascade do |t| - t.datetime "created_at", default: -> { "CURRENT_TIMESTAMP" } - t.datetime "started_at", null: false - t.integer "base_number", default: 1, null: false - t.integer "increment_number", default: 1, null: false - t.boolean "empty_export", default: false, null: false - t.string "collection" - end - create_table "merge_request_organisations", force: :cascade do |t| t.integer "merge_request_id" t.integer "merging_organisation_id" diff --git a/spec/services/exports/lettings_log_export_service_spec.rb b/spec/services/exports/lettings_log_export_service_spec.rb index 58b0442f4..6006f7e81 100644 --- a/spec/services/exports/lettings_log_export_service_spec.rb +++ b/spec/services/exports/lettings_log_export_service_spec.rb @@ -235,7 +235,7 @@ RSpec.describe Exports::LettingsLogExportService do let(:expected_zip_filename2) { "core_2022_2023_apr_mar_f0001_inc0001.zip" } before do - LogsExport.new(started_at: Time.zone.yesterday, base_number: 7, increment_number: 3, collection: 2021).save! + Export.new(started_at: Time.zone.yesterday, base_number: 7, increment_number: 3, collection: 2021).save! end it "generates multiple ZIP export files with different base numbers in the filenames" do @@ -277,8 +277,8 @@ RSpec.describe Exports::LettingsLogExportService do it "creates a logs export record in a database with correct time" do expect { export_service.export_xml_lettings_logs } - .to change(LogsExport, :count).by(3) - expect(LogsExport.last.started_at).to be_within(2.seconds).of(start_time) + .to change(Export, :count).by(3) + expect(Export.last.started_at).to be_within(2.seconds).of(start_time) end context "when this is the first export (full)" do @@ -328,7 +328,7 @@ RSpec.describe Exports::LettingsLogExportService do context "when this is a second export (partial)" do before do start_time = Time.zone.local(2022, 6, 1) - LogsExport.new(started_at: start_time).save! + Export.new(started_at: start_time).save! end it "does not add any entry for the master manifest (no lettings logs)" do @@ -347,12 +347,12 @@ RSpec.describe Exports::LettingsLogExportService do context "and we trigger another full update" do it "increments the base number" do export_service.export_xml_lettings_logs(full_update: true) - expect(LogsExport.last.base_number).to eq(2) + expect(Export.last.base_number).to eq(2) end it "resets the increment number" do export_service.export_xml_lettings_logs(full_update: true) - expect(LogsExport.last.increment_number).to eq(1) + expect(Export.last.increment_number).to eq(1) end it "returns a correct archives list for manifest file" do @@ -372,7 +372,7 @@ RSpec.describe Exports::LettingsLogExportService do it "doesn't increment the manifest number by 1" do export_service.export_xml_lettings_logs - expect(LogsExport.last.increment_number).to eq(1) + expect(Export.last.increment_number).to eq(1) end end @@ -380,7 +380,7 @@ RSpec.describe Exports::LettingsLogExportService do before do FactoryBot.create(:lettings_log, startdate: Time.zone.local(2022, 2, 1), updated_at: Time.zone.local(2022, 4, 27), values_updated_at: Time.zone.local(2022, 4, 29)) FactoryBot.create(:lettings_log, startdate: Time.zone.local(2022, 2, 1), updated_at: Time.zone.local(2022, 4, 27), values_updated_at: Time.zone.local(2022, 4, 29)) - LogsExport.create!(started_at: Time.zone.local(2022, 4, 28), base_number: 1, increment_number: 1) + Export.create!(started_at: Time.zone.local(2022, 4, 28), base_number: 1, increment_number: 1) end it "generates an XML manifest file with the expected content within the ZIP file" do diff --git a/spec/services/exports/user_export_service_spec.rb b/spec/services/exports/user_export_service_spec.rb index b3a19e0f7..2d7818b0f 100644 --- a/spec/services/exports/user_export_service_spec.rb +++ b/spec/services/exports/user_export_service_spec.rb @@ -104,8 +104,8 @@ RSpec.describe Exports::UserExportService do it "creates an export record in a database with correct time" do expect { export_service.export_xml_users } - .to change(LogsExport, :count).by(1) - expect(LogsExport.last.started_at).to be_within(2.seconds).of(start_time) + .to change(Export, :count).by(1) + expect(Export.last.started_at).to be_within(2.seconds).of(start_time) end context "when this is the first export (full)" do @@ -150,7 +150,7 @@ RSpec.describe Exports::UserExportService do context "when this is a second export (partial)" do before do start_time = Time.zone.local(2022, 6, 1) - LogsExport.new(started_at: start_time).save! # this should be user export + Export.new(started_at: start_time).save! # this should be user export end it "does not add any entry for the master manifest (no users)" do @@ -168,12 +168,12 @@ RSpec.describe Exports::UserExportService do context "and we trigger another full update" do it "increments the base number" do export_service.export_xml_users(full_update: true) - expect(LogsExport.last.base_number).to eq(2) + expect(Export.last.base_number).to eq(2) end it "resets the increment number" do export_service.export_xml_users(full_update: true) - expect(LogsExport.last.increment_number).to eq(1) + expect(Export.last.increment_number).to eq(1) end it "returns a correct archives list for manifest file" do @@ -193,7 +193,7 @@ RSpec.describe Exports::UserExportService do it "doesn't increment the manifest number by 1" do export_service.export_xml_users - expect(LogsExport.last.increment_number).to eq(1) + expect(Export.last.increment_number).to eq(1) end end @@ -201,7 +201,7 @@ RSpec.describe Exports::UserExportService do before do create(:user, updated_at: Time.zone.local(2022, 4, 27), organisation:) create(:user, updated_at: Time.zone.local(2022, 4, 27), organisation:) - LogsExport.create!(started_at: Time.zone.local(2022, 4, 26), base_number: 1, increment_number: 1) + Export.create!(started_at: Time.zone.local(2022, 4, 26), base_number: 1, increment_number: 1) end it "generates an XML manifest file with the expected content within the ZIP file" do