added MalwareBlocker trigger mode config and migration

This commit is contained in:
Flaminel
2026-06-16 19:15:45 +03:00
parent fa1801875e
commit 40ab0e9fad
6 changed files with 2334 additions and 11 deletions

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using Cleanuparr.Domain.Enums;
using Cleanuparr.Persistence.Models.Configuration.MalwareBlocker;
namespace Cleanuparr.Api.Features.MalwareBlocker.Contracts.Requests;
@@ -8,6 +9,8 @@ public sealed record UpdateMalwareBlockerConfigRequest
{
public bool Enabled { get; init; }
public MalwareBlockerTriggerMode TriggerMode { get; init; } = MalwareBlockerTriggerMode.Schedule;
public string CronExpression { get; init; } = "0/5 * * * * ?";
public bool UseAdvancedScheduling { get; init; }
@@ -35,6 +38,7 @@ public sealed record UpdateMalwareBlockerConfigRequest
public ContentBlockerConfig ApplyTo(ContentBlockerConfig config)
{
config.Enabled = Enabled;
config.TriggerMode = TriggerMode;
config.CronExpression = CronExpression;
config.UseAdvancedScheduling = UseAdvancedScheduling;
config.IgnorePrivate = IgnorePrivate;

View File

@@ -0,0 +1,8 @@
namespace Cleanuparr.Domain.Enums;
public enum MalwareBlockerTriggerMode
{
Schedule,
Webhook,
Both,
}

View File

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Cleanuparr.Persistence.Migrations.Data
{
/// <inheritdoc />
public partial class AddMalwareBlockerTriggerMode : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "trigger_mode",
table: "content_blocker_configs",
type: "TEXT",
nullable: false,
defaultValue: "Schedule");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "trigger_mode",
table: "content_blocker_configs");
}
}
}

View File

@@ -816,6 +816,11 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("INTEGER")
.HasColumnName("process_no_content_id");
b.Property<string>("TriggerMode")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("trigger_mode");
b.Property<bool>("UseAdvancedScheduling")
.HasColumnType("INTEGER")
.HasColumnName("use_advanced_scheduling");
@@ -1079,7 +1084,8 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("id");
b.Property<DateTimeOffset>("CreatedAt")
b.Property<string>("CreatedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("created_at");
@@ -1130,7 +1136,8 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("type");
b.Property<DateTimeOffset>("UpdatedAt")
b.Property<string>("UpdatedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("updated_at");
@@ -1577,7 +1584,7 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("INTEGER")
.HasColumnName("enabled");
b.Property<DateTimeOffset?>("LastProcessedAt")
b.Property<string>("LastProcessedAt")
.HasColumnType("TEXT")
.HasColumnName("last_processed_at");
@@ -1688,11 +1695,12 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("item_type");
b.Property<DateTimeOffset>("LastSyncedAt")
b.Property<string>("LastSyncedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("last_synced_at");
b.Property<DateTimeOffset?>("LastUpgradedAt")
b.Property<string>("LastUpgradedAt")
.HasColumnType("TEXT")
.HasColumnName("last_upgraded_at");
@@ -1747,7 +1755,8 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("item_type");
b.Property<DateTimeOffset>("RecordedAt")
b.Property<string>("RecordedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("recorded_at");
@@ -1783,7 +1792,8 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("arr_instance_id");
b.Property<DateTimeOffset>("CreatedAt")
b.Property<string>("CreatedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("created_at");
@@ -1828,7 +1838,8 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("INTEGER")
.HasColumnName("command_id");
b.Property<DateTimeOffset>("CreatedAt")
b.Property<string>("CreatedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("created_at");
@@ -1896,7 +1907,8 @@ namespace Cleanuparr.Persistence.Migrations.Data
.HasColumnType("TEXT")
.HasColumnName("item_type");
b.Property<DateTimeOffset>("LastSearchedAt")
b.Property<string>("LastSearchedAt")
.IsRequired()
.HasColumnType("TEXT")
.HasColumnName("last_searched_at");

View File

@@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Cleanuparr.Domain.Enums;
using ValidationException = System.ComponentModel.DataAnnotations.ValidationException;
namespace Cleanuparr.Persistence.Models.Configuration.MalwareBlocker;
@@ -11,9 +12,11 @@ public sealed record ContentBlockerConfig : IJobConfig
public Guid Id { get; set; } = Guid.NewGuid();
public bool Enabled { get; set; }
public MalwareBlockerTriggerMode TriggerMode { get; set; } = MalwareBlockerTriggerMode.Schedule;
public string CronExpression { get; set; } = "0/5 * * * * ?";
public bool UseAdvancedScheduling { get; set; }
public bool IgnorePrivate { get; set; }