package com.airlock.iam.flow.shared.domain.model.cronto;

import com.airlock.iam.base.api.domain.model.mapification.Mapifiable;
import com.airlock.iam.base.api.domain.model.mapification.MapifiedValues;
import com.airlock.iam.base.domain.model.mapification.MapifiedValuesBuilder;
import java.util.Optional;

public record CrontoPushDevice(String id, Optional<String> label, Optional<String> platform) implements Mapifiable {
   private static final String ID_KEY = "id";
   private static final String LABEL_KEY = "label";
   private static final String PLATFORM_NAME = "platform";

   @Override
   public MapifiedValues mapify() {
      return MapifiedValuesBuilder.mapifiedValues().put("id", this.id).putIfPresent("label", this.label).putIfPresent("platform", this.platform).build();
   }

   public static CrontoPushDevice demapify(MapifiedValues values) {
      return new CrontoPushDevice(values.get("id"), values.getOptional("label"), values.getOptional("platform"));
   }
}
