feat(api): add schedule series delete endpoint
This commit is contained in:
@ -354,6 +354,42 @@ export class ScheduleModel {
|
||||
return OrmHelper.DB.manager.save(exception);
|
||||
}
|
||||
|
||||
static async deleteSeries(id: string, hard: boolean, actor: string): Promise<number> {
|
||||
const manager = OrmHelper.DB.manager;
|
||||
|
||||
if (hard) {
|
||||
await manager.delete(ScheduleException, { series_id: id });
|
||||
const result = await manager.delete(ScheduleSeries, { id });
|
||||
return result.affected ?? 0;
|
||||
}
|
||||
|
||||
const series = await OrmHelper.DB.getRepository(ScheduleSeries)
|
||||
.createQueryBuilder("ScheduleSeries")
|
||||
.where("ScheduleSeries.id = :id", { id })
|
||||
.andWhere("ScheduleSeries.deleted_at IS NULL")
|
||||
.getOne();
|
||||
|
||||
if (!series) return 0;
|
||||
|
||||
const now = new Date();
|
||||
|
||||
await manager.transaction(async (tx) => {
|
||||
await tx
|
||||
.createQueryBuilder()
|
||||
.update(ScheduleException)
|
||||
.set({ deleted_at: now, deleted_by: actor })
|
||||
.where("series_id = :id", { id })
|
||||
.andWhere("deleted_at IS NULL")
|
||||
.execute();
|
||||
|
||||
series.deleted_at = now;
|
||||
series.deleted_by = actor;
|
||||
await tx.save(series);
|
||||
});
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
private static expandSeriesOccurrences(series: ScheduleSeries, rangeStart: Date, rangeEnd: Date): Date[] {
|
||||
const seriesStart = ScheduleModel.startOfDay(new Date(series.start_date));
|
||||
const seriesUntil = series.until_date ? ScheduleModel.endOfDay(new Date(series.until_date)) : null;
|
||||
|
||||
Reference in New Issue
Block a user