package com.airlock.iam.common.infrastructure.contextdata;

import com.airlock.iam.common.api.domain.model.contextdata.ContextData;
import com.airlock.iam.common.domain.model.contextdata.ContextDataFactory;
import com.airlock.iam.common.domain.model.contextdata.ContextDataImpl;
import com.airlock.iam.common.domain.model.contextdata.ContextDataItemImpl;
import jakarta.inject.Inject;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

public final class ContextDataFactoryImpl implements ContextDataFactory {
   @Override
   public ContextData fromPersistency(Map<String, Object> persistentContextData) {
      return this.getContextData(persistentContextData);
   }

   @Override
   public ContextData fromInput(Map<String, Object> inputContextData) {
      return this.getContextData(inputContextData);
   }

   private ContextData getContextData(Map<String, Object> inputContextData) {
      return new ContextDataImpl(
         inputContextData.entrySet()
            .stream()
            .map(entry -> new ContextDataItemImpl<>(entry.getKey(), entry.getValue(), true, true, Optional.empty()))
            .collect(Collectors.toSet())
      );
   }
}
