tasks
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user