mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 08:29:36 +01:00
fix(inventory): Instant durch OffsetDateTime für PostgreSQL-Kompatibilität ersetzen
PostgreSQL JDBC-Treiber kann java.time.Instant nicht direkt an TIMESTAMP WITH TIME ZONE binden. Schreibparameter werden nun via atOffset(UTC) konvertiert, Lesezugriffe über OffsetDateTime.toInstant().
This commit is contained in:
parent
d4ac8cb1b9
commit
a23c5a8985
2 changed files with 14 additions and 10 deletions
|
|
@ -15,6 +15,8 @@ import org.springframework.stereotype.Repository;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -117,8 +119,8 @@ public class JdbcStockMovementRepository implements StockMovementRepository {
|
||||||
public Result<RepositoryError, List<StockMovement>> findAllByPerformedAtBetween(Instant from, Instant to) {
|
public Result<RepositoryError, List<StockMovement>> findAllByPerformedAtBetween(Instant from, Instant to) {
|
||||||
try {
|
try {
|
||||||
var result = jdbc.sql("SELECT * FROM stock_movements WHERE performed_at >= :from AND performed_at <= :to ORDER BY performed_at DESC")
|
var result = jdbc.sql("SELECT * FROM stock_movements WHERE performed_at >= :from AND performed_at <= :to ORDER BY performed_at DESC")
|
||||||
.param("from", from)
|
.param("from", from.atOffset(ZoneOffset.UTC))
|
||||||
.param("to", to)
|
.param("to", to.atOffset(ZoneOffset.UTC))
|
||||||
.query(this::mapRow)
|
.query(this::mapRow)
|
||||||
.list();
|
.list();
|
||||||
return Result.success(result);
|
return Result.success(result);
|
||||||
|
|
@ -132,7 +134,7 @@ public class JdbcStockMovementRepository implements StockMovementRepository {
|
||||||
public Result<RepositoryError, List<StockMovement>> findAllByPerformedAtAfter(Instant from) {
|
public Result<RepositoryError, List<StockMovement>> findAllByPerformedAtAfter(Instant from) {
|
||||||
try {
|
try {
|
||||||
var result = jdbc.sql("SELECT * FROM stock_movements WHERE performed_at >= :from ORDER BY performed_at DESC")
|
var result = jdbc.sql("SELECT * FROM stock_movements WHERE performed_at >= :from ORDER BY performed_at DESC")
|
||||||
.param("from", from)
|
.param("from", from.atOffset(ZoneOffset.UTC))
|
||||||
.query(this::mapRow)
|
.query(this::mapRow)
|
||||||
.list();
|
.list();
|
||||||
return Result.success(result);
|
return Result.success(result);
|
||||||
|
|
@ -146,7 +148,7 @@ public class JdbcStockMovementRepository implements StockMovementRepository {
|
||||||
public Result<RepositoryError, List<StockMovement>> findAllByPerformedAtBefore(Instant to) {
|
public Result<RepositoryError, List<StockMovement>> findAllByPerformedAtBefore(Instant to) {
|
||||||
try {
|
try {
|
||||||
var result = jdbc.sql("SELECT * FROM stock_movements WHERE performed_at <= :to ORDER BY performed_at DESC")
|
var result = jdbc.sql("SELECT * FROM stock_movements WHERE performed_at <= :to ORDER BY performed_at DESC")
|
||||||
.param("to", to)
|
.param("to", to.atOffset(ZoneOffset.UTC))
|
||||||
.query(this::mapRow)
|
.query(this::mapRow)
|
||||||
.list();
|
.list();
|
||||||
return Result.success(result);
|
return Result.success(result);
|
||||||
|
|
@ -181,7 +183,7 @@ public class JdbcStockMovementRepository implements StockMovementRepository {
|
||||||
.param("reason", movement.reason())
|
.param("reason", movement.reason())
|
||||||
.param("referenceDocumentId", movement.referenceDocumentId())
|
.param("referenceDocumentId", movement.referenceDocumentId())
|
||||||
.param("performedBy", movement.performedBy())
|
.param("performedBy", movement.performedBy())
|
||||||
.param("performedAt", movement.performedAt())
|
.param("performedAt", movement.performedAt().atOffset(ZoneOffset.UTC))
|
||||||
.update();
|
.update();
|
||||||
|
|
||||||
return Result.success(null);
|
return Result.success(null);
|
||||||
|
|
@ -207,7 +209,7 @@ public class JdbcStockMovementRepository implements StockMovementRepository {
|
||||||
rs.getString("reason"),
|
rs.getString("reason"),
|
||||||
rs.getString("reference_document_id"),
|
rs.getString("reference_document_id"),
|
||||||
rs.getString("performed_by"),
|
rs.getString("performed_by"),
|
||||||
rs.getObject("performed_at", Instant.class)
|
rs.getObject("performed_at", OffsetDateTime.class).toInstant()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
@ -245,7 +247,7 @@ public class JdbcStockRepository implements StockRepository {
|
||||||
.param("quantityUnit", batch.quantity().uom().name())
|
.param("quantityUnit", batch.quantity().uom().name())
|
||||||
.param("expiryDate", batch.expiryDate())
|
.param("expiryDate", batch.expiryDate())
|
||||||
.param("status", batch.status().name())
|
.param("status", batch.status().name())
|
||||||
.param("receivedAt", batch.receivedAt())
|
.param("receivedAt", batch.receivedAt().atOffset(ZoneOffset.UTC))
|
||||||
.update();
|
.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,7 +264,7 @@ public class JdbcStockRepository implements StockRepository {
|
||||||
.param("quantityAmount", reservation.quantity().amount())
|
.param("quantityAmount", reservation.quantity().amount())
|
||||||
.param("quantityUnit", reservation.quantity().uom().name())
|
.param("quantityUnit", reservation.quantity().uom().name())
|
||||||
.param("priority", reservation.priority().name())
|
.param("priority", reservation.priority().name())
|
||||||
.param("reservedAt", reservation.reservedAt())
|
.param("reservedAt", reservation.reservedAt().atOffset(ZoneOffset.UTC))
|
||||||
.update();
|
.update();
|
||||||
|
|
||||||
for (StockBatchAllocation allocation : reservation.allocations()) {
|
for (StockBatchAllocation allocation : reservation.allocations()) {
|
||||||
|
|
@ -372,7 +374,7 @@ public class JdbcStockRepository implements StockRepository {
|
||||||
),
|
),
|
||||||
rs.getObject("expiry_date", LocalDate.class),
|
rs.getObject("expiry_date", LocalDate.class),
|
||||||
StockBatchStatus.valueOf(rs.getString("status")),
|
StockBatchStatus.valueOf(rs.getString("status")),
|
||||||
rs.getObject("received_at", Instant.class)
|
rs.getObject("received_at", OffsetDateTime.class).toInstant()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -386,7 +388,7 @@ public class JdbcStockRepository implements StockRepository {
|
||||||
UnitOfMeasure.valueOf(rs.getString("quantity_unit"))
|
UnitOfMeasure.valueOf(rs.getString("quantity_unit"))
|
||||||
),
|
),
|
||||||
ReservationPriority.valueOf(rs.getString("priority")),
|
ReservationPriority.valueOf(rs.getString("priority")),
|
||||||
rs.getObject("reserved_at", Instant.class)
|
rs.getObject("reserved_at", OffsetDateTime.class).toInstant()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue