migration manual run ctrl RED-3800

This commit is contained in:
Timo Bejan 2022-04-29 16:59:06 +03:00
parent b82d20473d
commit 5c57634d9c
2 changed files with 34 additions and 5 deletions

View File

@ -1,13 +1,11 @@
package com.iqser.red.service.peristence.v1.server.migration;
import org.springframework.beans.factory.annotation.Autowired;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.MigrationPersistenceService;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@Data
@Slf4j
@ -21,11 +19,14 @@ public abstract class Migration {
@Setter
private MigrationPersistenceService migrationPersistenceService;
public void run() {
run(false);
}
public void run(boolean force) {
var latestProcessedVersion = migrationPersistenceService.getLatestProcessedVersion();
if (!migrationPersistenceService.isProcessed(version, latestProcessedVersion)) {
if (!migrationPersistenceService.isProcessed(version, latestProcessedVersion) || force) {
log.info("Starting migration with name {} and version {}", name, version);
migrate();
migrationPersistenceService.insertMigration(name, version);

View File

@ -0,0 +1,28 @@
package com.iqser.red.service.peristence.v1.server.migration;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Data
@RestController
@RequiredArgsConstructor
@RequestMapping("/private/migration")
public class MigrationController {
private final List<Migration> migrations;
@PostMapping
public void run(@RequestParam("migrationName") String migrationName, @RequestParam("force") boolean force) {
migrations.stream().filter(m -> m.getName().equalsIgnoreCase(migrationName) || m.getClass().getSimpleName().equalsIgnoreCase(migrationName))
.forEach(m -> m.run(force));
}
}