Skip to content

Commit

Permalink
restore cleanup service - for now by button
Browse files Browse the repository at this point in the history
  • Loading branch information
VISTALL committed Feb 22, 2025
1 parent 76ed2f8 commit 6d42937
Show file tree
Hide file tree
Showing 12 changed files with 455 additions and 408 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,47 +17,41 @@
* @since 23/05/2023
*/
@Service
public class FrontendCacheService
{
private record PluginIdAndVersion(String id, String version)
{
}

private final RepositoryChannelsService myRepositoryChannelsService;
private final PluginStatisticsService myPluginStatisticsService;

@Autowired
public FrontendCacheService(RepositoryChannelsService repositoryChannelsService, PluginStatisticsService pluginStatisticsService)
{
myRepositoryChannelsService = repositoryChannelsService;
myPluginStatisticsService = pluginStatisticsService;
}

public Collection<FrontPluginNode> listPlugins()
{
Map<PluginIdAndVersion, FrontPluginNode> map = new HashMap<>();
for(PluginChannel channel : PluginChannel.values())
{
RepositoryChannelStore service = myRepositoryChannelsService.getRepositoryByChannel(channel);

service.iteratePluginNodes(pluginNode ->
{
FrontPluginNode node = map.computeIfAbsent(new PluginIdAndVersion(pluginNode.id, pluginNode.version), pluginIdAndVersion ->
{
FrontPluginNode frontPluginNode = new FrontPluginNode();
frontPluginNode.myPluginNode = pluginNode.clone();

int countAll = myPluginStatisticsService.getDownloadStatCountAll(pluginNode.id);

frontPluginNode.myPluginNode.downloads = countAll;
frontPluginNode.myPluginNode.downloadsAll = countAll;
return frontPluginNode;
});

node.myChannels.add(channel);
});
}

return map.values();
}
public class FrontendCacheService {
private record PluginIdAndVersion(String id, String version) {
}

private final RepositoryChannelsService myRepositoryChannelsService;
private final PluginStatisticsService myPluginStatisticsService;

@Autowired
public FrontendCacheService(RepositoryChannelsService repositoryChannelsService, PluginStatisticsService pluginStatisticsService) {
myRepositoryChannelsService = repositoryChannelsService;
myPluginStatisticsService = pluginStatisticsService;
}

public Collection<FrontPluginNode> listPlugins() {
Map<PluginIdAndVersion, FrontPluginNode> map = new HashMap<>();
for (PluginChannel channel : PluginChannel.values()) {
RepositoryChannelStore service = myRepositoryChannelsService.getRepositoryByChannel(channel);

service.iteratePluginNodes(pluginNode -> {
FrontPluginNode node = map.computeIfAbsent(new PluginIdAndVersion(pluginNode.id, pluginNode.version), pluginIdAndVersion ->
{
FrontPluginNode frontPluginNode = new FrontPluginNode();
frontPluginNode.myPluginNode = pluginNode.clone();

int countAll = myPluginStatisticsService.getDownloadStatCountAll(pluginNode.id);

frontPluginNode.myPluginNode.downloads = countAll;
frontPluginNode.myPluginNode.downloadsAll = countAll;
return frontPluginNode;
});

node.myChannels.add(channel);
});
}

return map.values();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import consulo.hub.backend.repository.PluginStatisticsService;
import consulo.hub.backend.repository.RepositoryChannelIterationService;
import consulo.hub.backend.repository.cleanup.RepositoryCleanupService;
import consulo.hub.shared.repository.FrontPluginNode;
import consulo.hub.shared.repository.PluginChannel;
import consulo.hub.shared.repository.domain.RepositoryDownloadInfo;
Expand All @@ -18,37 +19,41 @@
* @since 22/08/2021
*/
@RestController
public class FrontendRepositoryRestController
{
private final PluginStatisticsService myPluginStatisticsService;

private final RepositoryChannelIterationService myPluginChannelIterationService;

private final FrontendCacheService myFrontendCacheService;

public FrontendRepositoryRestController(PluginStatisticsService pluginStatisticsService, RepositoryChannelIterationService pluginChannelIterationService, FrontendCacheService frontendCacheService)
{
myPluginStatisticsService = pluginStatisticsService;
myPluginChannelIterationService = pluginChannelIterationService;
myFrontendCacheService = frontendCacheService;
}

@RequestMapping("/api/private/repository/list")
public Collection<FrontPluginNode> listPlugins()
{
return myFrontendCacheService.listPlugins();
}

@RequestMapping("/api/private/repository/downloadStat")
public List<RepositoryDownloadInfo> downloadStat(@RequestParam("pluginId") String pluginId)
{
return myPluginStatisticsService.getDownloadStat(pluginId);
}

@RequestMapping("/api/private/repository/iterate")
public Map<String, String> iteratePlugins(@RequestParam("from") PluginChannel from, @RequestParam("to") PluginChannel to)
{
myPluginChannelIterationService.iterate(from, to);
return Map.of();
}
public class FrontendRepositoryRestController {
private final PluginStatisticsService myPluginStatisticsService;
private final RepositoryChannelIterationService myPluginChannelIterationService;
private final FrontendCacheService myFrontendCacheService;
private final RepositoryCleanupService myRepositoryCleanupService;

public FrontendRepositoryRestController(PluginStatisticsService pluginStatisticsService,
RepositoryChannelIterationService pluginChannelIterationService,
FrontendCacheService frontendCacheService,
RepositoryCleanupService repositoryCleanupService) {
myPluginStatisticsService = pluginStatisticsService;
myPluginChannelIterationService = pluginChannelIterationService;
myFrontendCacheService = frontendCacheService;
myRepositoryCleanupService = repositoryCleanupService;
}

@RequestMapping("/api/private/repository/list")
public Collection<FrontPluginNode> listPlugins() {
return myFrontendCacheService.listPlugins();
}

@RequestMapping("/api/private/repository/downloadStat")
public List<RepositoryDownloadInfo> downloadStat(@RequestParam("pluginId") String pluginId) {
return myPluginStatisticsService.getDownloadStat(pluginId);
}

@RequestMapping("/api/private/repository/iterate")
public Map<String, String> iteratePlugins(@RequestParam("from") PluginChannel from, @RequestParam("to") PluginChannel to) {
myPluginChannelIterationService.iterate(from, to);
return Map.of();
}

@RequestMapping("/api/private/repository/cleanup")
public Map<String, String> cleanup() {
myRepositoryCleanupService.runCleanUpAsync();
return Map.of();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import consulo.hub.shared.repository.PluginNode;
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;
import org.springframework.lang.NonNull;

import java.util.List;
import java.util.NavigableMap;
Expand All @@ -14,27 +15,25 @@
* @author VISTALL
* @since 18/05/2023
*/
public interface RepositoryNodeState
{
@Nullable
PluginNode select(@Nonnull String platformVersion, @Nullable String version, boolean platformBuildSelect);
public interface RepositoryNodeState {
@Nullable
PluginNode select(@Nonnull String platformVersion, @Nullable String version, boolean platformBuildSelect);

default void runOver(@Nonnull String platformVersion, @Nullable String version, boolean platformBuildSelect, Consumer<PluginNode> consumer)
{
PluginNode select = select(platformVersion, version, platformBuildSelect);
if(select != null)
{
consumer.accept(select);
}
}
default void runOver(@Nonnull String platformVersion, @Nullable String version, boolean platformBuildSelect, Consumer<PluginNode> consumer) {
PluginNode select = select(platformVersion, version, platformBuildSelect);
if (select != null) {
consumer.accept(select);
}
}

void selectInto(@Nonnull PluginStatisticsService statisticsService, @Nonnull PluginChannel channel, @Nonnull String platformVersion, boolean platformBuildSelect, List<PluginNode> list);
void selectInto(@Nonnull PluginStatisticsService statisticsService, @Nonnull PluginChannel channel, @Nonnull String platformVersion, boolean platformBuildSelect, List<PluginNode> list);

boolean isInRepository(String version, String platformVersion);
boolean isInRepository(String version, String platformVersion);

void forEach(@Nonnull Consumer<PluginNode> consumer);
void forEach(@Nonnull Consumer<PluginNode> consumer);

void remove(String version, String platformVersion);
void remove(String version, String platformVersion);

@NonNull
NavigableMap<String, NavigableSet<PluginNode>> getPluginsByPlatformVersion();
}
Loading

0 comments on commit 6d42937

Please sign in to comment.