query/demo/work/admin/Scenario.hpp

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