|
@@ -2,6 +2,7 @@ package org.hswebframework.web.crud.configuration;
|
|
|
|
|
|
import lombok.Getter;
|
|
|
import lombok.Setter;
|
|
|
+import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.hswebframework.ezorm.rdb.operator.DatabaseOperator;
|
|
|
import org.hswebframework.web.api.crud.entity.EntityFactory;
|
|
@@ -12,8 +13,14 @@ import org.springframework.transaction.ReactiveTransactionManager;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
+import reactor.core.publisher.Mono;
|
|
|
+import reactor.core.scheduler.Scheduler;
|
|
|
+import reactor.core.scheduler.Schedulers;
|
|
|
|
|
|
+import java.time.Duration;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Getter
|
|
@@ -38,6 +45,7 @@ public class AutoDDLProcessor implements InitializingBean {
|
|
|
private boolean reactive;
|
|
|
|
|
|
@Override
|
|
|
+ @SneakyThrows
|
|
|
public void afterPropertiesSet() {
|
|
|
if (entityFactory instanceof MapperEntityFactory) {
|
|
|
MapperEntityFactory factory = ((MapperEntityFactory) entityFactory);
|
|
@@ -52,30 +60,32 @@ public class AutoDDLProcessor implements InitializingBean {
|
|
|
.loadAllTable();
|
|
|
|
|
|
List<Class> entities = this.entities.stream().map(EntityInfo::getRealType).collect(Collectors.toList());
|
|
|
- if (reactive) {
|
|
|
- Flux.fromIterable(entities)
|
|
|
- .doOnNext(type -> log.info("auto ddl for {}", type))
|
|
|
- .map(resolver::resolve)
|
|
|
- .flatMap(meta -> operator.ddl()
|
|
|
- .createOrAlter(meta)
|
|
|
- .commit()
|
|
|
- .reactive())
|
|
|
- .doOnError((err) -> log.error(err.getMessage(), err))
|
|
|
- .then()
|
|
|
- .block();
|
|
|
- } else {
|
|
|
- for (Class<?> entity : entities) {
|
|
|
- log.warn("auto ddl for {}", entity);
|
|
|
- try {
|
|
|
- operator.ddl()
|
|
|
- .createOrAlter(resolver.resolve(entity))
|
|
|
- .commit()
|
|
|
- .sync();
|
|
|
- } catch (Exception e) {
|
|
|
- log.warn(e.getMessage(), e);
|
|
|
- }
|
|
|
+// if (reactive) {
|
|
|
+// Flux.fromIterable(entities)
|
|
|
+// .doOnNext(type -> log.info("auto ddl for {}", type))
|
|
|
+// .map(resolver::resolve)
|
|
|
+// .flatMap(meta->operator.ddl()
|
|
|
+// .createOrAlter(meta)
|
|
|
+// .commit()
|
|
|
+// .reactive())
|
|
|
+// .doOnError((err) -> log.error(err.getMessage(), err))
|
|
|
+// .then()
|
|
|
+// .toFuture().get(2, TimeUnit.MINUTES);
|
|
|
+//
|
|
|
+// } else {
|
|
|
+ for (Class<?> entity : entities) {
|
|
|
+ log.trace("auto ddl for {}", entity);
|
|
|
+ try {
|
|
|
+ operator.ddl()
|
|
|
+ .createOrAlter(resolver.resolve(entity))
|
|
|
+ .commit()
|
|
|
+ .sync();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
+ throw e;
|
|
|
}
|
|
|
}
|
|
|
+// }
|
|
|
}
|
|
|
}
|
|
|
}
|