package de.tobias.playwall.service;

import de.tobias.playwall.model.Plugin;
import de.tobias.playwall.model.PluginManifest;
import de.tobias.playwall.model.artifactory.Version;
import de.tobias.playwall.repository.PluginDescriptionRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@AllArgsConstructor
public class PluginService
{
	private final PluginDescriptionRepository pluginDescriptionRepository;
	private final ArtifactoryClient artifactoryClient;

	public List<Plugin> getAllPlugins()
	{
		return pluginDescriptionRepository.findAll().stream().map(pluginDescription -> {
			final Version version = artifactoryClient.getLatestVersion(pluginDescription);
			final PluginManifest manifest = artifactoryClient.getPluginManifest(pluginDescription, version);

			return Plugin.builder()
					.id(pluginDescription.getId())
					.name(pluginDescription.getName())
					.displayName(pluginDescription.getDisplayName())
					.description(pluginDescription.getDescription())
					.icon(pluginDescription.getIcon())
					.version(version.toVersionString())
					.build(manifest.getBuild())
					.build();
		}).toList();
	}
}