62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
#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<ScenarioMode> ScenarioModeEnum({
|
|
{ScenarioMode::InvalidMode, "InvalidMode"},
|
|
{ScenarioMode::Exercise, "Exercise"},
|
|
{ScenarioMode::Operation, "Operation"}
|
|
});
|
|
|
|
enum class ScenarioState : uint8_t {
|
|
InvalidState,
|
|
Active,
|
|
Inactive
|
|
};
|
|
|
|
static const matador::utils::enum_mapper<ScenarioState> 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<matador::object::object_ptr<CollectionCenter>> collection_center;
|
|
|
|
template<typename Operator>
|
|
void process( Operator& op ) {
|
|
namespace field = matador::access;
|
|
field::process( op, *matador::base_class<Model>( 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
|