* Update test csvs * Fix count filters and refactor apply_filters * Update party_querying_concern.rb * +tests/-debug logs * Make party association optional in Job * Updates for weapon series - Change to new series numbers - Add static method for querying whether the weapon's element is changeable - Add a new method to return a text slug for the weapon's series * Add and update test data - Updates canonical.rb for loading multiple types of data with multiple types of associations - Adds test data for Guidebooks, Job Accessories, Job Skills, and Jobs - Updates test data for Weapons and Summons * Migrations - Adds series of migrations for changing the weapon's series to the values used by Cygames - Shuffled around some foreign keys * Implement BaseProcessor Processors are in charge of processing deck data straight from Granblue. * Implement CharacterProcessor Process character data from deck * Implement WeaponProcessor Process weapon data from deck * Implement JobProcessor Process job, job skill, and job accessory data from deck * Implement SummonProcessor Process summon data from deck * Update SummonProcessor to work like the others * ImportController should use processors * Process element for changeable weapons
44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Processors
|
|
##
|
|
# BaseProcessor provides shared functionality for processing transformed deck data
|
|
# into new party records. Subclasses must implement the +process+ method.
|
|
#
|
|
# @abstract
|
|
class BaseProcessor
|
|
##
|
|
# Initializes the processor.
|
|
#
|
|
# @param party [Party] the Party record to which the component will be added.
|
|
# @param data [Object] the transformed data for this component.
|
|
# @param options [Hash] optional additional options.
|
|
def initialize(party, data, options = {})
|
|
@party = party
|
|
@data = data
|
|
@options = options
|
|
end
|
|
|
|
##
|
|
# Process the given data and create associated records.
|
|
#
|
|
# @abstract Subclasses must implement this method.
|
|
# @return [void]
|
|
def process
|
|
raise NotImplementedError, "#{self.class} must implement the process method"
|
|
end
|
|
|
|
protected
|
|
|
|
attr_reader :party, :data, :options
|
|
|
|
##
|
|
# Logs a message to Rails.logger.
|
|
#
|
|
# @param message [String] the message to log.
|
|
# @return [void]
|
|
def log(message)
|
|
Rails.logger.info "[PROCESSOR][#{self.class.name}] #{message}"
|
|
end
|
|
end
|
|
end
|