class LifePex::Achievement < Sequel::Model(LifePex::DB[:achievements]) include LifePex::AchievementDSL::Success::Setup::Medal many_to_one :user # def validate # super # end def parameters JSON.parse(parameters_json) end def parameters=(parameters_hash) self.parameters_json = parameters_hash.to_json end def set_dsl_setup(setup) self.set( name: setup.name, success_name: setup.success.name, parameters_json: setup.parameters.to_json, icon: setup.icon, ) end # FIXME: use a singleton instead of an include AVAILABLE_SUCCESS = LifePex::AchievementDSL::Includer::SUCCESS_INDEX.keys def to_dsl_setup current = self current_parameters = self.parameters() LifePex::AchievementDSL::Includer::SUCCESS_INDEX[current[:success_name]].setup(current[:name], to: current[:user_id]) do icon current[:icon].to_s current_parameters.each do |name, value| parameter name => value end end end end