#ifndef SCENARIO_HPP #define SCENARIO_HPP #include "../core/Model.hpp" #include "matador/object/collection.hpp" #include "matador/object/object_ptr.hpp" #include "matador/utils/base_class.hpp" #include "matador/utils/enum_mapper.hpp" namespace work::models::admin { struct CollectionCenter; enum class ScenarioMode : uint8_t { InvalidMode, Exercise, Operation, }; static const matador::utils::enum_mapper ScenarioModeEnum({ {ScenarioMode::InvalidMode, "InvalidMode"}, {ScenarioMode::Exercise, "Exercise"}, {ScenarioMode::Operation, "Operation"} }); enum class ScenarioState : uint8_t { InvalidState, Active, Inactive }; static const matador::utils::enum_mapper ScenarioStateEnum({ {ScenarioState::InvalidState, "InvalidState"}, {ScenarioState::Active, "Active"}, {ScenarioState::Inactive, "Inactive"} }); struct Scenario : core::Model { std::string name; ScenarioMode mode{ScenarioMode::InvalidMode}; std::string description; matador::utils::blob symbol; ScenarioState state{ScenarioState::InvalidState}; matador::object::collection collection_center; template void process( Operator& op ) { namespace field = matador::access; field::process( op, *matador::base_class( this ) ); field::attribute( op, "name", name, 511 ); field::attribute( op, "mode", mode ); field::attribute( op, "description", description, 511 ); field::attribute( op, "symbol", symbol ); field::attribute( op, "state", state ); field::has_many( op, "collection_center", collection_center, "scenario_id", matador::utils::fetch_type::LAZY ); } }; } #endif //SCENARIO_HPP