50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package copy_mission
|
|
|
|
import (
|
|
"context"
|
|
|
|
jobentity "haixun-backend/internal/model/job/domain/entity"
|
|
"haixun-backend/internal/svc"
|
|
"haixun-backend/internal/types"
|
|
)
|
|
|
|
const viralScanTemplate = "scan-viral"
|
|
|
|
func findCopyMissionScanSchedule(ctx context.Context, svcCtx *svc.ServiceContext, missionID string) (*jobentity.Schedule, error) {
|
|
schedules, _, _, _, _, err := svcCtx.Job.ListSchedules(ctx, "copy_mission", missionID, 1, 50)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, schedule := range schedules {
|
|
if schedule != nil && schedule.TemplateType == viralScanTemplate {
|
|
return schedule, nil
|
|
}
|
|
}
|
|
return nil, nil
|
|
}
|
|
|
|
func toCopyMissionScanScheduleData(schedule *jobentity.Schedule, personaID, missionID string) *types.CopyMissionScanScheduleData {
|
|
if schedule == nil {
|
|
return &types.CopyMissionScanScheduleData{
|
|
PersonaID: personaID,
|
|
MissionID: missionID,
|
|
Cron: "0 9 * * *",
|
|
Timezone: "Asia/Taipei",
|
|
Enabled: false,
|
|
}
|
|
}
|
|
data := &types.CopyMissionScanScheduleData{
|
|
ID: schedule.ID.Hex(),
|
|
PersonaID: personaID,
|
|
MissionID: missionID,
|
|
Cron: schedule.Cron,
|
|
Timezone: schedule.Timezone,
|
|
Enabled: schedule.Enabled,
|
|
NextRunAt: schedule.NextRunAt,
|
|
}
|
|
if schedule.LastRunAt != nil {
|
|
data.LastRunAt = *schedule.LastRunAt
|
|
}
|
|
return data
|
|
}
|