feat: add endpoint for schedule
This commit is contained in:
parent
17961ccefc
commit
f9750ef039
@ -0,0 +1,29 @@
|
|||||||
|
using Mirea.Api.Dto.Common;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Mirea.Api.Dto.Requests.Configuration;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a request to configure the schedule settings.
|
||||||
|
/// </summary>
|
||||||
|
public class ScheduleConfigurationRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the cron expression for updating the schedule.
|
||||||
|
/// </summary>
|
||||||
|
public string? CronUpdateSchedule { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the start date of the term.
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public DateOnly StartTerm { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the pair period times, keyed by pair number.
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public required IDictionary<int, PairPeriodTime> PairPeriod { get; set; }
|
||||||
|
}
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using Cronos;
|
||||||
using System.Security.Cryptography;
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Data.Sqlite;
|
using Microsoft.Data.Sqlite;
|
||||||
@ -17,6 +16,10 @@ using Npgsql;
|
|||||||
using StackExchange.Redis;
|
using StackExchange.Redis;
|
||||||
using System;
|
using System;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace Mirea.Api.Endpoint.Controllers.Configuration;
|
namespace Mirea.Api.Endpoint.Controllers.Configuration;
|
||||||
|
|
||||||
@ -240,6 +243,27 @@ public class SetupController(ISetupToken setupToken, IMaintenanceModeNotConfigur
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost("SetSchedule")]
|
||||||
|
[TokenAuthentication]
|
||||||
|
[BadRequestResponse]
|
||||||
|
public ActionResult<bool> SetSchedule([FromBody] ScheduleConfigurationRequest request)
|
||||||
|
{
|
||||||
|
var general = GeneralConfig;
|
||||||
|
general.ScheduleSettings = new ScheduleSettings
|
||||||
|
{
|
||||||
|
// every 6 hours
|
||||||
|
CronUpdateSchedule = request.CronUpdateSchedule ?? "0 */6 * * *",
|
||||||
|
StartTerm = request.StartTerm,
|
||||||
|
PairPeriod = request.PairPeriod.ConvertFromDto()
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!CronExpression.TryParse(general.ScheduleSettings.CronUpdateSchedule, CronFormat.Standard, out _))
|
||||||
|
throw new ControllerArgumentException("The Cron task could not be parsed. Check the format of the entered data.");
|
||||||
|
|
||||||
|
GeneralConfig = general;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user