Skip to content

Commit bf6c75e

Browse files
authored
Merge pull request #555 from DevKor-github/feature/issue-540-date-ranges
fix: normalize schedule date ranges
2 parents f3550ce + ecd6114 commit bf6c75e

5 files changed

Lines changed: 231 additions & 170 deletions

File tree

lib/data/daos/schedule_dao.dart

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,27 @@ class ScheduleDao extends DatabaseAccessor<AppDatabase>
1414
ScheduleDao(this.db) : super(db);
1515

1616
Future<ScheduleWithPlace> createSchedule(
17-
ScheduleWithPlace scheduleWithPlace) async {
17+
ScheduleWithPlace scheduleWithPlace,
18+
) async {
1819
final placeModel = await db.placeDao.createPlace(scheduleWithPlace.place);
19-
final scheduleModel = await into(db.schedules).insertReturning(
20-
scheduleWithPlace.schedule.toCompanion(false),
21-
);
20+
final scheduleModel = await into(
21+
db.schedules,
22+
).insertReturning(scheduleWithPlace.schedule.toCompanion(false));
2223

23-
return ScheduleWithPlace(
24-
schedule: scheduleModel,
25-
place: placeModel,
26-
);
24+
return ScheduleWithPlace(schedule: scheduleModel, place: placeModel);
2725
}
2826

2927
Future<void> deleteSchedule(Schedule scheduleModel) async {
30-
await (delete(db.schedules)
31-
..where((tbl) => tbl.id.equals(scheduleModel.id)))
32-
.go();
28+
await (delete(
29+
db.schedules,
30+
)..where((tbl) => tbl.id.equals(scheduleModel.id))).go();
3331
}
3432

3533
Future<ScheduleWithPlace> getScheduleById(String id) async {
3634
try {
3735
final query = await (select(db.schedules).join([
3836
leftOuterJoin(db.places, db.places.id.equalsExp(db.schedules.placeId)),
39-
])
40-
..where(db.schedules.id.equals(id)))
41-
.getSingle();
37+
])..where(db.schedules.id.equals(id))).getSingle();
4238
return ScheduleWithPlace(
4339
schedule: query.readTable(db.schedules),
4440
place: query.readTable(db.places),
@@ -49,30 +45,40 @@ class ScheduleDao extends DatabaseAccessor<AppDatabase>
4945
}
5046

5147
Future<Schedule> updateSchedule(Schedule scheduleModel) async {
52-
final scheduleList = await (update(db.schedules)
53-
..where((tbl) => tbl.id.equals(scheduleModel.id)))
54-
.writeReturning(scheduleModel.toCompanion(true));
48+
final scheduleList =
49+
await (update(db.schedules)
50+
..where((tbl) => tbl.id.equals(scheduleModel.id)))
51+
.writeReturning(scheduleModel.toCompanion(true));
5552
assert(scheduleList.length == 1);
5653
return scheduleList.first;
5754
}
5855

5956
Future<List<ScheduleWithPlace>> getSchedulesByDate(
60-
DateTime startDate, DateTime? endDate) async {
61-
final query = select(db.schedules).join([
62-
leftOuterJoin(db.places, db.places.id.equalsExp(db.schedules.placeId)),
63-
])
64-
..where(db.schedules.scheduleTime.isBiggerOrEqualValue(startDate) &
65-
(endDate == null
66-
? Constant<bool>(true)
67-
: db.schedules.scheduleTime.isSmallerOrEqualValue(endDate)));
57+
DateTime startDate,
58+
DateTime? endDate,
59+
) async {
60+
final query =
61+
select(db.schedules).join([
62+
leftOuterJoin(
63+
db.places,
64+
db.places.id.equalsExp(db.schedules.placeId),
65+
),
66+
])..where(
67+
db.schedules.scheduleTime.isBiggerOrEqualValue(startDate) &
68+
(endDate == null
69+
? Constant<bool>(true)
70+
: db.schedules.scheduleTime.isSmallerThanValue(endDate)),
71+
);
6872
final result = await query.get();
6973
final List<ScheduleWithPlace> scheduleList = [];
7074

7175
await Future.forEach(result, (schedule) async {
72-
scheduleList.add(ScheduleWithPlace(
73-
schedule: schedule.readTable(db.schedules),
74-
place: schedule.readTable(db.places),
75-
));
76+
scheduleList.add(
77+
ScheduleWithPlace(
78+
schedule: schedule.readTable(db.schedules),
79+
place: schedule.readTable(db.places),
80+
),
81+
);
7682
});
7783
return scheduleList;
7884
}
@@ -85,10 +91,12 @@ class ScheduleDao extends DatabaseAccessor<AppDatabase>
8591
final List<ScheduleWithPlace> scheduleList = [];
8692

8793
await Future.forEach(result, (schedule) async {
88-
scheduleList.add(ScheduleWithPlace(
89-
schedule: schedule.readTable(db.schedules),
90-
place: schedule.readTable(db.places),
91-
));
94+
scheduleList.add(
95+
ScheduleWithPlace(
96+
schedule: schedule.readTable(db.schedules),
97+
place: schedule.readTable(db.places),
98+
),
99+
);
92100
});
93101
return scheduleList;
94102
}

lib/domain/use-cases/load_schedules_for_month_use_case.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ class LoadSchedulesForMonthUseCase {
99

1010
Future<void> call(DateTime date) async {
1111
final startOfMonth = DateTime(date.year, date.month, 1);
12-
final endOfMonth = DateTime(date.year, date.month + 1, 0);
12+
final startOfNextMonth = DateTime(date.year, date.month + 1, 1);
1313

14-
await _loadSchedulesByDateUseCase(startOfMonth, endOfMonth);
14+
await _loadSchedulesByDateUseCase(startOfMonth, startOfNextMonth);
1515
}
1616
}

0 commit comments

Comments
 (0)