This commit is contained in:
Bastian Wagner
2026-06-29 14:00:07 +02:00
parent f5345e6ff1
commit ba6fe3a844
22 changed files with 1318 additions and 2 deletions

View File

@@ -116,6 +116,9 @@ export class InMemoryRepository<T extends object> {
const sortedRecords = [...records];
const typedOrder = order as {
name?: 'ASC' | 'DESC';
createdAt?: 'ASC' | 'DESC';
dueDate?: 'ASC' | 'DESC';
completed?: 'ASC' | 'DESC';
reminderAt?: 'ASC' | 'DESC';
items?: { position?: 'ASC' | 'DESC' };
};
@@ -142,6 +145,45 @@ export class InMemoryRepository<T extends object> {
});
}
if (typedOrder?.dueDate) {
sortedRecords.sort((left, right) => {
const leftDate = String(
(left as Record<string, unknown>)['dueDate'] ?? '',
);
const rightDate = String(
(right as Record<string, unknown>)['dueDate'] ?? '',
);
return typedOrder.dueDate === 'DESC'
? rightDate.localeCompare(leftDate)
: leftDate.localeCompare(rightDate);
});
}
if (typedOrder?.completed) {
sortedRecords.sort((left, right) => {
const leftCompleted = Boolean(
(left as Record<string, unknown>)['completed'],
);
const rightCompleted = Boolean(
(right as Record<string, unknown>)['completed'],
);
const comparison = Number(leftCompleted) - Number(rightCompleted);
return typedOrder.completed === 'DESC' ? -comparison : comparison;
});
}
if (typedOrder?.createdAt) {
sortedRecords.sort((left, right) => {
const leftDate = (left as Record<string, unknown>)['createdAt'];
const rightDate = (right as Record<string, unknown>)['createdAt'];
const leftTime = leftDate instanceof Date ? leftDate.getTime() : 0;
const rightTime = rightDate instanceof Date ? rightDate.getTime() : 0;
return typedOrder.createdAt === 'DESC'
? rightTime - leftTime
: leftTime - rightTime;
});
}
if (typedOrder?.items?.position) {
for (const record of sortedRecords) {
const items = (record as { items?: Array<{ position: number }> }).items;