Make sure every DB returns time as HH:mm:ss (#6847)

Fixes #6492
This commit is contained in:
Rijk van Zanten
2021-07-16 00:21:19 +02:00
committed by GitHub
parent e44e485939
commit c2e1aca63b

View File

@@ -222,7 +222,11 @@ export class PayloadService {
['dateTime', 'date', 'timestamp'].includes(field.type)
);
if (dateColumns.length === 0) return payloads;
const timeColumns = fieldsInCollection.filter(([_name, field]) => {
return field.type === 'time';
});
if (dateColumns.length === 0 && timeColumns.length === 0) return payloads;
for (const [name, dateColumn] of dateColumns) {
for (const payload of payloads) {
@@ -270,6 +274,22 @@ export class PayloadService {
}
}
/**
* Some DB drivers (MS SQL f.e.) return time values as Date objects. For consistencies sake,
* we'll abstract those back to hh:mm:ss
*/
for (const [name] of timeColumns) {
for (const payload of payloads) {
const value = payload[name];
if (!value) continue;
if (action === 'read') {
if (value instanceof Date) payload[name] = format(value, 'HH:mm:ss');
}
}
}
return payloads;
}