wip: LoggerService
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package fr.titionfire.ffsaf.domain.service;
|
||||
|
||||
import fr.titionfire.ffsaf.data.model.LogModel;
|
||||
import fr.titionfire.ffsaf.data.model.LogModel.ActionType;
|
||||
import fr.titionfire.ffsaf.data.model.LogModel.ObjectType;
|
||||
import fr.titionfire.ffsaf.data.model.LoggableModel;
|
||||
import fr.titionfire.ffsaf.data.repository.LogRepository;
|
||||
import fr.titionfire.ffsaf.utils.SecurityCtx;
|
||||
import io.quarkus.hibernate.reactive.panache.Panache;
|
||||
import io.quarkus.hibernate.reactive.panache.common.WithSession;
|
||||
import io.smallrye.mutiny.Uni;
|
||||
import jakarta.enterprise.context.RequestScoped;
|
||||
import jakarta.inject.Inject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@WithSession
|
||||
@RequestScoped
|
||||
public class LoggerService {
|
||||
|
||||
@Inject
|
||||
LogRepository repository;
|
||||
|
||||
@Inject
|
||||
SecurityCtx securityCtx;
|
||||
|
||||
private final List<LogModel> buffer = new ArrayList<>();
|
||||
|
||||
public Uni<?> logA(ActionType action, ObjectType object, String message, String target_name, Long target_id) {
|
||||
System.out.println("log");
|
||||
return Panache.withTransaction(() -> repository.persist(
|
||||
new LogModel(null, securityCtx.getSubject(), new Date(), action, object, target_id, target_name,
|
||||
message)));
|
||||
}
|
||||
|
||||
public Uni<?> logA(ActionType action, String message, LoggableModel model) {
|
||||
return logA(action, model.getObjectType(), message, model.getObjectName(), model.getId());
|
||||
}
|
||||
|
||||
public Uni<?> logAAdd(LoggableModel model) {
|
||||
return logA(ActionType.ADD, "", model);
|
||||
}
|
||||
|
||||
public Uni<?> logAUpdate(String message, LoggableModel model) {
|
||||
return logA(ActionType.UPDATE, message, model);
|
||||
}
|
||||
|
||||
public Uni<?> logAChange(String champ, Object o1, Object o2, LoggableModel model) {
|
||||
System.out.println(o1 + " " + o2);
|
||||
if (Objects.equals(o1, o2))
|
||||
return Uni.createFrom().nullItem();
|
||||
return logA(ActionType.UPDATE, champ + ": " + o1.toString() + " -> " + o2.toString(), model);
|
||||
}
|
||||
|
||||
public Uni<?> logADelete(LoggableModel model) {
|
||||
return logA(ActionType.REMOVE, "", model);
|
||||
}
|
||||
|
||||
public Uni<?> append() {
|
||||
return Panache.withTransaction(() -> repository.persist(buffer))
|
||||
.invoke(__ -> buffer.clear());
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
buffer.clear();
|
||||
}
|
||||
|
||||
public void log(ActionType action, ObjectType object, String message, String target_name, Long target_id) {
|
||||
System.out.println("log");
|
||||
buffer.add(new LogModel(null, securityCtx.getSubject(), new Date(), action, object, target_id, target_name,
|
||||
message));
|
||||
}
|
||||
|
||||
public void log(ActionType action, String message, LoggableModel model) {
|
||||
log(action, model.getObjectType(), message, model.getObjectName(), model.getId());
|
||||
}
|
||||
|
||||
public void logAdd(LoggableModel model) {
|
||||
log(ActionType.ADD, "", model);
|
||||
}
|
||||
|
||||
public void logUpdate(String message, LoggableModel model) {
|
||||
log(ActionType.UPDATE, message, model);
|
||||
}
|
||||
|
||||
public void logChange(String champ, Object o1, Object o2, LoggableModel model) {
|
||||
System.out.println(o1 + " " + o2);
|
||||
if (Objects.equals(o1, o2))
|
||||
return;
|
||||
log(ActionType.UPDATE, champ + ": " + o1.toString() + " -> " + o2.toString(), model);
|
||||
}
|
||||
|
||||
public void logDelete(LoggableModel model) {
|
||||
log(ActionType.REMOVE, "", model);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user