diff --git a/code/Executable/Executable.csproj b/code/Cleanuparr.Api/Cleanuparr.Api.csproj similarity index 64% rename from code/Executable/Executable.csproj rename to code/Cleanuparr.Api/Cleanuparr.Api.csproj index 1b65fa70..7e8d5b78 100644 --- a/code/Executable/Executable.csproj +++ b/code/Cleanuparr.Api/Cleanuparr.Api.csproj @@ -2,41 +2,37 @@ cleanuparr - net9.0 0.0.1 + net9.0 enable enable - dotnet-Executable-6108b2ba-f035-47bc-addf-aaf5e20da4b8 - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - - - diff --git a/code/Executable/Controllers/ApiDocumentationController.cs b/code/Cleanuparr.Api/Controllers/ApiDocumentationController.cs similarity index 85% rename from code/Executable/Controllers/ApiDocumentationController.cs rename to code/Cleanuparr.Api/Controllers/ApiDocumentationController.cs index e4e3fb97..65d5f64c 100644 --- a/code/Executable/Controllers/ApiDocumentationController.cs +++ b/code/Cleanuparr.Api/Controllers/ApiDocumentationController.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc; -namespace Executable.Controllers; +namespace Cleanuparr.Api.Controllers; [ApiController] [Route("")] diff --git a/code/Executable/Controllers/ConfigurationController.cs b/code/Cleanuparr.Api/Controllers/ConfigurationController.cs similarity index 97% rename from code/Executable/Controllers/ConfigurationController.cs rename to code/Cleanuparr.Api/Controllers/ConfigurationController.cs index 24f0be6a..306427fe 100644 --- a/code/Executable/Controllers/ConfigurationController.cs +++ b/code/Cleanuparr.Api/Controllers/ConfigurationController.cs @@ -1,20 +1,21 @@ -using Common.Configuration; -using Data.Models.Configuration.Arr; -using Data.Models.Configuration.DownloadCleaner; -using Data.Models.Configuration.General; -using Data.Models.Configuration.QueueCleaner; -using Data; -using Data.Enums; -using Infrastructure.Http.DynamicHttpClientSystem; -using Infrastructure.Logging; -using Infrastructure.Models; +using Cleanuparr.Application.Features.Arr.Dtos; +using Cleanuparr.Application.Features.DownloadClient.Dtos; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; +using Cleanuparr.Infrastructure.Logging; +using Cleanuparr.Infrastructure.Models; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.Arr; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration.General; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; using Infrastructure.Services.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using Executable.DTOs; -namespace Executable.Controllers; +namespace Cleanuparr.Api.Controllers; [ApiController] [Route("api/[controller]")] diff --git a/code/Executable/Controllers/EventsController.cs b/code/Cleanuparr.Api/Controllers/EventsController.cs similarity index 97% rename from code/Executable/Controllers/EventsController.cs rename to code/Cleanuparr.Api/Controllers/EventsController.cs index 02d7dc3e..6798d32f 100644 --- a/code/Executable/Controllers/EventsController.cs +++ b/code/Cleanuparr.Api/Controllers/EventsController.cs @@ -1,12 +1,11 @@ -using Data; -using Data.Models.Events; -using Data.Enums; -using Infrastructure.Events; +using System.Text.Json.Serialization; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Events; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using System.Text.Json.Serialization; -namespace Executable.Controllers; +namespace Cleanuparr.Api.Controllers; [ApiController] [Route("api/[controller]")] diff --git a/code/Executable/Controllers/HealthCheckController.cs b/code/Cleanuparr.Api/Controllers/HealthCheckController.cs similarity index 97% rename from code/Executable/Controllers/HealthCheckController.cs rename to code/Cleanuparr.Api/Controllers/HealthCheckController.cs index caf7f47c..5766c1c7 100644 --- a/code/Executable/Controllers/HealthCheckController.cs +++ b/code/Cleanuparr.Api/Controllers/HealthCheckController.cs @@ -1,7 +1,7 @@ -using Infrastructure.Health; +using Cleanuparr.Infrastructure.Health; using Microsoft.AspNetCore.Mvc; -namespace Executable.Controllers; +namespace Cleanuparr.Api.Controllers; /// /// Controller for checking the health of download clients diff --git a/code/Executable/Controllers/JobsController.cs b/code/Cleanuparr.Api/Controllers/JobsController.cs similarity index 97% rename from code/Executable/Controllers/JobsController.cs rename to code/Cleanuparr.Api/Controllers/JobsController.cs index 6b451ccf..a509f2cd 100644 --- a/code/Executable/Controllers/JobsController.cs +++ b/code/Cleanuparr.Api/Controllers/JobsController.cs @@ -1,10 +1,9 @@ -using Executable.Models; -using Infrastructure.Models; +using Cleanuparr.Api.Models; +using Cleanuparr.Infrastructure.Models; using Infrastructure.Services.Interfaces; -using Infrastructure.Utilities; using Microsoft.AspNetCore.Mvc; -namespace Executable.Controllers; +namespace Cleanuparr.Api.Controllers; [ApiController] [Route("api/[controller]")] diff --git a/code/Executable/Controllers/StatusController.cs b/code/Cleanuparr.Api/Controllers/StatusController.cs similarity index 97% rename from code/Executable/Controllers/StatusController.cs rename to code/Cleanuparr.Api/Controllers/StatusController.cs index 25b41e7b..9661d424 100644 --- a/code/Executable/Controllers/StatusController.cs +++ b/code/Cleanuparr.Api/Controllers/StatusController.cs @@ -1,12 +1,12 @@ -using Infrastructure.Verticals.Arr; -using Infrastructure.Verticals.DownloadClient; -using Microsoft.AspNetCore.Mvc; using System.Diagnostics; -using Data; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.Arr; +using Cleanuparr.Infrastructure.Features.DownloadClient; +using Cleanuparr.Persistence; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -namespace Executable.Controllers; +namespace Cleanuparr.Api.Controllers; [ApiController] [Route("api/[controller]")] diff --git a/code/Executable/DependencyInjection/ApiDI.cs b/code/Cleanuparr.Api/DependencyInjection/ApiDI.cs similarity index 93% rename from code/Executable/DependencyInjection/ApiDI.cs rename to code/Cleanuparr.Api/DependencyInjection/ApiDI.cs index 9d3a23f6..3fbd15a7 100644 --- a/code/Executable/DependencyInjection/ApiDI.cs +++ b/code/Cleanuparr.Api/DependencyInjection/ApiDI.cs @@ -1,12 +1,12 @@ using System.Text.Json.Serialization; -using Infrastructure.Health; -using Infrastructure.Logging; -using Executable.Middleware; -using Infrastructure.Hubs; +using Cleanuparr.Api.Middleware; +using Cleanuparr.Infrastructure.Health; +using Cleanuparr.Infrastructure.Hubs; +using Cleanuparr.Infrastructure.Logging; using Microsoft.AspNetCore.Http.Json; using Microsoft.OpenApi.Models; -namespace Executable.DependencyInjection; +namespace Cleanuparr.Api.DependencyInjection; public static class ApiDI { diff --git a/code/Executable/DependencyInjection/LoggingDI.cs b/code/Cleanuparr.Api/DependencyInjection/LoggingDI.cs similarity index 92% rename from code/Executable/DependencyInjection/LoggingDI.cs rename to code/Cleanuparr.Api/DependencyInjection/LoggingDI.cs index db31446b..bb33ecde 100644 --- a/code/Executable/DependencyInjection/LoggingDI.cs +++ b/code/Cleanuparr.Api/DependencyInjection/LoggingDI.cs @@ -1,13 +1,12 @@ -using Common.Helpers; -using Data.Enums; -using Infrastructure.Verticals.DownloadCleaner; -using Infrastructure.Verticals.QueueCleaner; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Models; +using Cleanuparr.Shared.Helpers; using Serilog; using Serilog.Events; using Serilog.Templates; using Serilog.Templates.Themes; -namespace Executable.DependencyInjection; +namespace Cleanuparr.Api.DependencyInjection; public static class LoggingDI { @@ -28,7 +27,7 @@ public static class LoggingDI const string fileOutputTemplate = $"{{@t:yyyy-MM-dd HH:mm:ss.fff zzz}} [{{@l:u3}}]{jobNameTemplate}{categoryTemplate} {{@m:lj}}\n{{@x}}"; // Determine job name padding - List jobNames = [nameof(QueueCleaner), nameof(DownloadCleaner)]; + List jobNames = [nameof(JobType.QueueCleaner), nameof(JobType.DownloadCleaner)]; int jobPadding = jobNames.Max(x => x.Length) + 2; // Determine instance name padding diff --git a/code/Executable/DependencyInjection/MainDI.cs b/code/Cleanuparr.Api/DependencyInjection/MainDI.cs similarity index 88% rename from code/Executable/DependencyInjection/MainDI.cs rename to code/Cleanuparr.Api/DependencyInjection/MainDI.cs index 467a88f9..f9f9d838 100644 --- a/code/Executable/DependencyInjection/MainDI.cs +++ b/code/Cleanuparr.Api/DependencyInjection/MainDI.cs @@ -1,21 +1,14 @@ -using System.Net; using System.Text.Json.Serialization; -using Data.Models.Configuration.General; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Consumers; +using Cleanuparr.Infrastructure.Features.Notifications.Consumers; +using Cleanuparr.Infrastructure.Health; +using Cleanuparr.Infrastructure.Http; +using Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; using Data.Models.Arr; -using Infrastructure.Health; -using Infrastructure.Http; -using Infrastructure.Http.DynamicHttpClientSystem; -using Infrastructure.Verticals.DownloadClient.Deluge; -using Infrastructure.Verticals.DownloadClient.QBittorrent; -using Infrastructure.Verticals.DownloadClient.Transmission; -using Infrastructure.Verticals.DownloadRemover.Consumers; -using Infrastructure.Verticals.Notifications.Consumers; using Infrastructure.Verticals.Notifications.Models; using MassTransit; -using Polly; -using Polly.Extensions.Http; -namespace Executable.DependencyInjection; +namespace Cleanuparr.Api.DependencyInjection; public static class MainDI { diff --git a/code/Executable/DependencyInjection/NotificationsDI.cs b/code/Cleanuparr.Api/DependencyInjection/NotificationsDI.cs similarity index 76% rename from code/Executable/DependencyInjection/NotificationsDI.cs rename to code/Cleanuparr.Api/DependencyInjection/NotificationsDI.cs index 63cce8fb..7e31baa4 100644 --- a/code/Executable/DependencyInjection/NotificationsDI.cs +++ b/code/Cleanuparr.Api/DependencyInjection/NotificationsDI.cs @@ -1,8 +1,9 @@ +using Cleanuparr.Infrastructure.Features.Notifications; +using Cleanuparr.Infrastructure.Features.Notifications.Apprise; +using Cleanuparr.Infrastructure.Features.Notifications.Notifiarr; using Infrastructure.Verticals.Notifications; -using Infrastructure.Verticals.Notifications.Apprise; -using Infrastructure.Verticals.Notifications.Notifiarr; -namespace Executable.DependencyInjection; +namespace Cleanuparr.Api.DependencyInjection; public static class NotificationsDI { diff --git a/code/Executable/DependencyInjection/QuartzDI.cs b/code/Cleanuparr.Api/DependencyInjection/QuartzDI.cs similarity index 88% rename from code/Executable/DependencyInjection/QuartzDI.cs rename to code/Cleanuparr.Api/DependencyInjection/QuartzDI.cs index b586f592..9ca80273 100644 --- a/code/Executable/DependencyInjection/QuartzDI.cs +++ b/code/Cleanuparr.Api/DependencyInjection/QuartzDI.cs @@ -1,7 +1,7 @@ -using Executable.Jobs; +using Cleanuparr.Api.Jobs; using Quartz; -namespace Executable.DependencyInjection; +namespace Cleanuparr.Api.DependencyInjection; public static class QuartzDI { diff --git a/code/Executable/DependencyInjection/ServicesDI.cs b/code/Cleanuparr.Api/DependencyInjection/ServicesDI.cs similarity index 63% rename from code/Executable/DependencyInjection/ServicesDI.cs rename to code/Cleanuparr.Api/DependencyInjection/ServicesDI.cs index 50f8f1d6..e415de0e 100644 --- a/code/Executable/DependencyInjection/ServicesDI.cs +++ b/code/Cleanuparr.Api/DependencyInjection/ServicesDI.cs @@ -1,24 +1,22 @@ -using Common.Helpers; -using Data; -using Infrastructure.Events; +using Cleanuparr.Application.Features.DownloadCleaner; +using Cleanuparr.Application.Features.QueueCleaner; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.Arr; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.DownloadClient; +using Cleanuparr.Infrastructure.Features.DownloadRemover; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Interfaces; +using Cleanuparr.Infrastructure.Features.Files; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Infrastructure.Features.Security; +using Cleanuparr.Infrastructure.Interceptors; +using Cleanuparr.Infrastructure.Services; +using Cleanuparr.Persistence; using Infrastructure.Interceptors; -using Infrastructure.Services; using Infrastructure.Services.Interfaces; -using Infrastructure.Verticals.Arr; -using Infrastructure.Verticals.ContentBlocker; -using Infrastructure.Verticals.DownloadCleaner; -using Infrastructure.Verticals.DownloadClient; -using Infrastructure.Verticals.DownloadClient.Deluge; -using Infrastructure.Verticals.DownloadClient.QBittorrent; -using Infrastructure.Verticals.DownloadClient.Transmission; -using Infrastructure.Verticals.DownloadRemover; -using Infrastructure.Verticals.DownloadRemover.Interfaces; using Infrastructure.Verticals.Files; -using Infrastructure.Verticals.ItemStriker; -using Infrastructure.Verticals.QueueCleaner; -using Infrastructure.Verticals.Security; -namespace Executable.DependencyInjection; +namespace Cleanuparr.Api.DependencyInjection; public static class ServicesDI { @@ -39,8 +37,8 @@ public static class ServicesDI .AddTransient() .AddTransient() .AddTransient() - .AddTransient() - .AddTransient() + .AddTransient() + .AddTransient() .AddTransient() .AddTransient() .AddTransient() diff --git a/code/Executable/HostExtensions.cs b/code/Cleanuparr.Api/HostExtensions.cs similarity index 95% rename from code/Executable/HostExtensions.cs rename to code/Cleanuparr.Api/HostExtensions.cs index 4b860436..c141fbb6 100644 --- a/code/Executable/HostExtensions.cs +++ b/code/Cleanuparr.Api/HostExtensions.cs @@ -1,8 +1,8 @@ using System.Reflection; -using Data; +using Cleanuparr.Persistence; using Microsoft.EntityFrameworkCore; -namespace Executable; +namespace Cleanuparr.Api; public static class HostExtensions { diff --git a/code/Executable/Jobs/BackgroundJobManager.cs b/code/Cleanuparr.Api/Jobs/BackgroundJobManager.cs similarity index 92% rename from code/Executable/Jobs/BackgroundJobManager.cs rename to code/Cleanuparr.Api/Jobs/BackgroundJobManager.cs index 6f41da8e..4bfea4e5 100644 --- a/code/Executable/Jobs/BackgroundJobManager.cs +++ b/code/Cleanuparr.Api/Jobs/BackgroundJobManager.cs @@ -1,17 +1,17 @@ -using Common.Configuration; -using Data.Models.Configuration.DownloadCleaner; -using Data.Models.Configuration.QueueCleaner; -using Common.Exceptions; -using Common.Helpers; -using Data; -using Infrastructure.Verticals.DownloadCleaner; -using Infrastructure.Verticals.Jobs; -using Infrastructure.Verticals.QueueCleaner; +using Cleanuparr.Application.Features.DownloadCleaner; +using Cleanuparr.Application.Features.QueueCleaner; +using Cleanuparr.Domain.Exceptions; +using Cleanuparr.Infrastructure.Features.Jobs; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; +using Cleanuparr.Shared.Helpers; using Microsoft.EntityFrameworkCore; using Quartz; using Quartz.Spi; -namespace Executable.Jobs; +namespace Cleanuparr.Api.Jobs; /// /// Manages background jobs in the application. @@ -100,7 +100,7 @@ public class BackgroundJobManager : IHostedService return; } - await AddJobWithTrigger( + await AddJobWithTrigger( config, config.CronExpression, cancellationToken); @@ -116,7 +116,7 @@ public class BackgroundJobManager : IHostedService return; } - await AddJobWithTrigger( + await AddJobWithTrigger( config, config.CronExpression, cancellationToken); diff --git a/code/Executable/Jobs/GenericJob.cs b/code/Cleanuparr.Api/Jobs/GenericJob.cs similarity index 89% rename from code/Executable/Jobs/GenericJob.cs rename to code/Cleanuparr.Api/Jobs/GenericJob.cs index 12181fe6..5b30d0be 100644 --- a/code/Executable/Jobs/GenericJob.cs +++ b/code/Cleanuparr.Api/Jobs/GenericJob.cs @@ -1,8 +1,8 @@ -using Infrastructure.Verticals.Jobs; +using Cleanuparr.Infrastructure.Features.Jobs; using Quartz; using Serilog.Context; -namespace Executable.Jobs; +namespace Cleanuparr.Api.Jobs; [DisallowConcurrentExecution] public sealed class GenericJob : IJob diff --git a/code/Executable/Middleware/ExceptionMiddleware.cs b/code/Cleanuparr.Api/Middleware/ExceptionMiddleware.cs similarity index 95% rename from code/Executable/Middleware/ExceptionMiddleware.cs rename to code/Cleanuparr.Api/Middleware/ExceptionMiddleware.cs index e3fff648..1867176c 100644 --- a/code/Executable/Middleware/ExceptionMiddleware.cs +++ b/code/Cleanuparr.Api/Middleware/ExceptionMiddleware.cs @@ -1,9 +1,9 @@ using System.Net; using System.Text.Json; -using Common.Exceptions; -using Executable.Models; +using Cleanuparr.Api.Models; +using Cleanuparr.Domain.Exceptions; -namespace Executable.Middleware; +namespace Cleanuparr.Api.Middleware; public class ExceptionMiddleware { diff --git a/code/Executable/Models/ErrorResponse.cs b/code/Cleanuparr.Api/Models/ErrorResponse.cs similarity index 91% rename from code/Executable/Models/ErrorResponse.cs rename to code/Cleanuparr.Api/Models/ErrorResponse.cs index f02beff7..5fafaf0d 100644 --- a/code/Executable/Models/ErrorResponse.cs +++ b/code/Cleanuparr.Api/Models/ErrorResponse.cs @@ -1,4 +1,4 @@ -namespace Executable.Models; +namespace Cleanuparr.Api.Models; /// /// Standardized error response model for API endpoints diff --git a/code/Executable/Models/ScheduleRequest.cs b/code/Cleanuparr.Api/Models/ScheduleRequest.cs similarity index 76% rename from code/Executable/Models/ScheduleRequest.cs rename to code/Cleanuparr.Api/Models/ScheduleRequest.cs index 2304a1b5..b8980ab6 100644 --- a/code/Executable/Models/ScheduleRequest.cs +++ b/code/Cleanuparr.Api/Models/ScheduleRequest.cs @@ -1,6 +1,6 @@ -namespace Executable.Models; +using Cleanuparr.Infrastructure.Models; -using Infrastructure.Models; +namespace Cleanuparr.Api.Models; /// /// Represents a request to schedule a job diff --git a/code/Executable/Program.cs b/code/Cleanuparr.Api/Program.cs similarity index 90% rename from code/Executable/Program.cs rename to code/Cleanuparr.Api/Program.cs index 0546acfd..70475344 100644 --- a/code/Executable/Program.cs +++ b/code/Cleanuparr.Api/Program.cs @@ -1,8 +1,10 @@ -using Executable; -using Executable.DependencyInjection; -using Infrastructure.Logging; -using Serilog; +// using Infrastructure.Logging; +// using Serilog; using System.Text.Json.Serialization; +using Cleanuparr.Api; +using Cleanuparr.Api.DependencyInjection; +using Cleanuparr.Infrastructure.Logging; +using Serilog; var builder = WebApplication.CreateBuilder(args); diff --git a/code/Cleanuparr.Application/Cleanuparr.Application.csproj b/code/Cleanuparr.Application/Cleanuparr.Application.csproj new file mode 100644 index 00000000..cef966f0 --- /dev/null +++ b/code/Cleanuparr.Application/Cleanuparr.Application.csproj @@ -0,0 +1,20 @@ + + + + net9.0 + enable + enable + + + + + + + + + + + + + + diff --git a/code/Executable/DTOs/ArrConfigDto.cs b/code/Cleanuparr.Application/Features/Arr/Dtos/ArrConfigDto.cs similarity index 76% rename from code/Executable/DTOs/ArrConfigDto.cs rename to code/Cleanuparr.Application/Features/Arr/Dtos/ArrConfigDto.cs index 9a79bd32..fe792dcb 100644 --- a/code/Executable/DTOs/ArrConfigDto.cs +++ b/code/Cleanuparr.Application/Features/Arr/Dtos/ArrConfigDto.cs @@ -1,6 +1,6 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Executable.DTOs; +namespace Cleanuparr.Application.Features.Arr.Dtos; public class ArrConfigDto { diff --git a/code/Executable/DTOs/CreateArrInstanceDto.cs b/code/Cleanuparr.Application/Features/Arr/Dtos/CreateArrInstanceDto.cs similarity index 87% rename from code/Executable/DTOs/CreateArrInstanceDto.cs rename to code/Cleanuparr.Application/Features/Arr/Dtos/CreateArrInstanceDto.cs index 0834e679..c0ca0e02 100644 --- a/code/Executable/DTOs/CreateArrInstanceDto.cs +++ b/code/Cleanuparr.Application/Features/Arr/Dtos/CreateArrInstanceDto.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Executable.DTOs; +namespace Cleanuparr.Application.Features.Arr.Dtos; /// /// DTO for creating new Arr instances without requiring an ID diff --git a/code/Executable/DTOs/UpdateLidarrConfigDto.cs b/code/Cleanuparr.Application/Features/Arr/Dtos/UpdateLidarrConfigDto.cs similarity index 82% rename from code/Executable/DTOs/UpdateLidarrConfigDto.cs rename to code/Cleanuparr.Application/Features/Arr/Dtos/UpdateLidarrConfigDto.cs index b11552f7..2d3006ba 100644 --- a/code/Executable/DTOs/UpdateLidarrConfigDto.cs +++ b/code/Cleanuparr.Application/Features/Arr/Dtos/UpdateLidarrConfigDto.cs @@ -1,4 +1,4 @@ -namespace Executable.DTOs; +namespace Cleanuparr.Application.Features.Arr.Dtos; /// /// DTO for updating Lidarr configuration basic settings (instances managed separately) diff --git a/code/Executable/DTOs/UpdateRadarrConfigDto.cs b/code/Cleanuparr.Application/Features/Arr/Dtos/UpdateRadarrConfigDto.cs similarity index 82% rename from code/Executable/DTOs/UpdateRadarrConfigDto.cs rename to code/Cleanuparr.Application/Features/Arr/Dtos/UpdateRadarrConfigDto.cs index 26283c6e..e12d09cd 100644 --- a/code/Executable/DTOs/UpdateRadarrConfigDto.cs +++ b/code/Cleanuparr.Application/Features/Arr/Dtos/UpdateRadarrConfigDto.cs @@ -1,4 +1,4 @@ -namespace Executable.DTOs; +namespace Cleanuparr.Application.Features.Arr.Dtos; /// /// DTO for updating Radarr configuration basic settings (instances managed separately) diff --git a/code/Executable/DTOs/UpdateSonarrConfigDto.cs b/code/Cleanuparr.Application/Features/Arr/Dtos/UpdateSonarrConfigDto.cs similarity index 92% rename from code/Executable/DTOs/UpdateSonarrConfigDto.cs rename to code/Cleanuparr.Application/Features/Arr/Dtos/UpdateSonarrConfigDto.cs index 4148fbc0..770d455b 100644 --- a/code/Executable/DTOs/UpdateSonarrConfigDto.cs +++ b/code/Cleanuparr.Application/Features/Arr/Dtos/UpdateSonarrConfigDto.cs @@ -1,7 +1,6 @@ using System.ComponentModel.DataAnnotations; -using Data.Models.Configuration.Arr; -namespace Executable.DTOs; +namespace Cleanuparr.Application.Features.Arr.Dtos; /// /// DTO for updating Sonarr configuration basic settings (instances managed separately) diff --git a/code/Infrastructure/Verticals/DownloadCleaner/DownloadCleaner.cs b/code/Cleanuparr.Application/Features/DownloadCleaner/DownloadCleanerHandler.cs similarity index 90% rename from code/Infrastructure/Verticals/DownloadCleaner/DownloadCleaner.cs rename to code/Cleanuparr.Application/Features/DownloadCleaner/DownloadCleanerHandler.cs index ffc2fb9e..8ad7284f 100644 --- a/code/Infrastructure/Verticals/DownloadCleaner/DownloadCleaner.cs +++ b/code/Cleanuparr.Application/Features/DownloadCleaner/DownloadCleanerHandler.cs @@ -1,30 +1,29 @@ -using Data.Models.Configuration.Arr; -using Data.Models.Configuration.DownloadCleaner; -using Data.Models.Configuration.General; -using Data; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.Arr; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.DownloadClient; +using Cleanuparr.Infrastructure.Features.Jobs; +using Cleanuparr.Infrastructure.Helpers; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration.Arr; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration.General; using Data.Models.Arr.Queue; -using Data.Models.Configuration.Arr; -using Infrastructure.Events; -using Infrastructure.Helpers; -using Infrastructure.Verticals.Arr; -using Infrastructure.Verticals.Arr.Interfaces; -using Infrastructure.Verticals.Context; -using Infrastructure.Verticals.DownloadClient; -using Infrastructure.Verticals.Jobs; using MassTransit; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; using LogContext = Serilog.Context.LogContext; -namespace Infrastructure.Verticals.DownloadCleaner; +namespace Cleanuparr.Application.Features.DownloadCleaner; -public sealed class DownloadCleaner : GenericHandler +public sealed class DownloadCleanerHandler : GenericHandler { private readonly HashSet _excludedHashes = []; - public DownloadCleaner( - ILogger logger, + public DownloadCleanerHandler( + ILogger logger, DataContext dataContext, IMemoryCache cache, IBus messageBus, @@ -56,7 +55,7 @@ public sealed class DownloadCleaner : GenericHandler if (!isUnlinkedEnabled && !isCleaningEnabled) { - _logger.LogWarning("{name} is not configured properly", nameof(DownloadCleaner)); + _logger.LogWarning("{name} is not configured properly", nameof(DownloadCleanerHandler)); return; } diff --git a/code/Executable/DTOs/CreateDownloadClientDto.cs b/code/Cleanuparr.Application/Features/DownloadClient/Dtos/CreateDownloadClientDto.cs similarity index 92% rename from code/Executable/DTOs/CreateDownloadClientDto.cs rename to code/Cleanuparr.Application/Features/DownloadClient/Dtos/CreateDownloadClientDto.cs index f5c97e73..9b1aa6c2 100644 --- a/code/Executable/DTOs/CreateDownloadClientDto.cs +++ b/code/Cleanuparr.Application/Features/DownloadClient/Dtos/CreateDownloadClientDto.cs @@ -1,7 +1,7 @@ -using Common.Enums; -using Common.Exceptions; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Domain.Exceptions; -namespace Executable.DTOs; +namespace Cleanuparr.Application.Features.DownloadClient.Dtos; /// /// DTO for creating a new download client (without ID) diff --git a/code/Infrastructure/Verticals/QueueCleaner/QueueCleaner.cs b/code/Cleanuparr.Application/Features/QueueCleaner/QueueCleanerHandler.cs similarity index 90% rename from code/Infrastructure/Verticals/QueueCleaner/QueueCleaner.cs rename to code/Cleanuparr.Application/Features/QueueCleaner/QueueCleanerHandler.cs index b2e21836..065f4f11 100644 --- a/code/Infrastructure/Verticals/QueueCleaner/QueueCleaner.cs +++ b/code/Cleanuparr.Application/Features/QueueCleaner/QueueCleanerHandler.cs @@ -1,32 +1,31 @@ -using Common.Configuration; -using Data.Models.Configuration.Arr; -using Data.Models.Configuration.General; -using Data.Models.Configuration.QueueCleaner; -using Common.Enums; -using Data; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.Arr; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.DownloadClient; +using Cleanuparr.Infrastructure.Features.Jobs; +using Cleanuparr.Infrastructure.Helpers; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.Arr; +using Cleanuparr.Persistence.Models.Configuration.General; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; using Data.Models.Arr.Queue; -using Infrastructure.Events; -using Infrastructure.Helpers; -using Infrastructure.Verticals.Arr; -using Infrastructure.Verticals.Arr.Interfaces; -using Infrastructure.Verticals.Context; -using Infrastructure.Verticals.DownloadClient; -using Infrastructure.Verticals.Jobs; using MassTransit; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; using LogContext = Serilog.Context.LogContext; -using Infrastructure.Verticals.ContentBlocker; -namespace Infrastructure.Verticals.QueueCleaner; +namespace Cleanuparr.Application.Features.QueueCleaner; -public sealed class QueueCleaner : GenericHandler +public sealed class QueueCleanerHandler : GenericHandler { private readonly BlocklistProvider _blocklistProvider; - public QueueCleaner( - ILogger logger, + public QueueCleanerHandler( + ILogger logger, DataContext dataContext, IMemoryCache cache, IBus messageBus, diff --git a/code/Common/Common.csproj b/code/Cleanuparr.Domain/Cleanuparr.Domain.csproj similarity index 59% rename from code/Common/Common.csproj rename to code/Cleanuparr.Domain/Cleanuparr.Domain.csproj index aaccf3fe..f6480a58 100644 --- a/code/Common/Common.csproj +++ b/code/Cleanuparr.Domain/Cleanuparr.Domain.csproj @@ -7,10 +7,7 @@ - - - diff --git a/code/Data/Models/Arr/Queue/Image.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/Image.cs similarity index 100% rename from code/Data/Models/Arr/Queue/Image.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/Image.cs diff --git a/code/Data/Models/Arr/Queue/LidarrImage.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/LidarrImage.cs similarity index 100% rename from code/Data/Models/Arr/Queue/LidarrImage.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/LidarrImage.cs diff --git a/code/Data/Models/Arr/Queue/QueueAlbum.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/QueueAlbum.cs similarity index 100% rename from code/Data/Models/Arr/Queue/QueueAlbum.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/QueueAlbum.cs diff --git a/code/Data/Models/Arr/Queue/QueueListResponse.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/QueueListResponse.cs similarity index 100% rename from code/Data/Models/Arr/Queue/QueueListResponse.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/QueueListResponse.cs diff --git a/code/Data/Models/Arr/Queue/QueueMovie.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/QueueMovie.cs similarity index 100% rename from code/Data/Models/Arr/Queue/QueueMovie.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/QueueMovie.cs diff --git a/code/Data/Models/Arr/Queue/QueueRecord.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/QueueRecord.cs similarity index 100% rename from code/Data/Models/Arr/Queue/QueueRecord.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/QueueRecord.cs diff --git a/code/Data/Models/Arr/Queue/QueueSeries.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/QueueSeries.cs similarity index 100% rename from code/Data/Models/Arr/Queue/QueueSeries.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/QueueSeries.cs diff --git a/code/Data/Models/Arr/Queue/TrackedDownloadStatusMessage.cs b/code/Cleanuparr.Domain/Entities/Arr/Queue/TrackedDownloadStatusMessage.cs similarity index 100% rename from code/Data/Models/Arr/Queue/TrackedDownloadStatusMessage.cs rename to code/Cleanuparr.Domain/Entities/Arr/Queue/TrackedDownloadStatusMessage.cs diff --git a/code/Data/Models/Arr/SearchItem.cs b/code/Cleanuparr.Domain/Entities/Arr/SearchItem.cs similarity index 100% rename from code/Data/Models/Arr/SearchItem.cs rename to code/Cleanuparr.Domain/Entities/Arr/SearchItem.cs diff --git a/code/Data/Models/Arr/SonarrSearchItem.cs b/code/Cleanuparr.Domain/Entities/Arr/SonarrSearchItem.cs similarity index 92% rename from code/Data/Models/Arr/SonarrSearchItem.cs rename to code/Cleanuparr.Domain/Entities/Arr/SonarrSearchItem.cs index 08c2b0f4..3271b6fb 100644 --- a/code/Data/Models/Arr/SonarrSearchItem.cs +++ b/code/Cleanuparr.Domain/Entities/Arr/SonarrSearchItem.cs @@ -1,4 +1,4 @@ -using Data.Models.Configuration.Arr; +using Cleanuparr.Domain.Enums; namespace Data.Models.Arr; diff --git a/code/Common/CustomDataTypes/ByteSize.cs b/code/Cleanuparr.Domain/Entities/ByteSize.cs similarity index 99% rename from code/Common/CustomDataTypes/ByteSize.cs rename to code/Cleanuparr.Domain/Entities/ByteSize.cs index 72511242..6ee20acf 100644 --- a/code/Common/CustomDataTypes/ByteSize.cs +++ b/code/Cleanuparr.Domain/Entities/ByteSize.cs @@ -1,6 +1,6 @@ using System.Globalization; -namespace Common.CustomDataTypes; +namespace Cleanuparr.Domain.Entities; public readonly struct ByteSize : IComparable, IEquatable { diff --git a/code/Data/Models/Cache/StalledCacheItem.cs b/code/Cleanuparr.Domain/Entities/Cache/StalledCacheItem.cs similarity index 78% rename from code/Data/Models/Cache/StalledCacheItem.cs rename to code/Cleanuparr.Domain/Entities/Cache/StalledCacheItem.cs index 9cc85d9d..e455d794 100644 --- a/code/Data/Models/Cache/StalledCacheItem.cs +++ b/code/Cleanuparr.Domain/Entities/Cache/StalledCacheItem.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Cache; +namespace Cleanuparr.Domain.Entities.Cache; public sealed record StalledCacheItem { diff --git a/code/Data/Models/Deluge/Request/DelugeRequest.cs b/code/Cleanuparr.Domain/Entities/Deluge/Request/DelugeRequest.cs similarity index 92% rename from code/Data/Models/Deluge/Request/DelugeRequest.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Request/DelugeRequest.cs index 7ab05ada..8f9047fe 100644 --- a/code/Data/Models/Deluge/Request/DelugeRequest.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Request/DelugeRequest.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Data.Models.Deluge.Request; +namespace Cleanuparr.Domain.Entities.Deluge.Request; public class DelugeRequest { diff --git a/code/Data/Models/Deluge/Response/DelugeContents.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeContents.cs similarity index 84% rename from code/Data/Models/Deluge/Response/DelugeContents.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeContents.cs index c597dfd1..29e62c1c 100644 --- a/code/Data/Models/Deluge/Response/DelugeContents.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeContents.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public sealed record DelugeContents { diff --git a/code/Data/Models/Deluge/Response/DelugeError.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeError.cs similarity index 80% rename from code/Data/Models/Deluge/Response/DelugeError.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeError.cs index 861af5e6..183368f0 100644 --- a/code/Data/Models/Deluge/Response/DelugeError.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeError.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public sealed record DelugeError { diff --git a/code/Data/Models/Deluge/Response/DelugeFileOrDirectory.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeFileOrDirectory.cs similarity index 93% rename from code/Data/Models/Deluge/Response/DelugeFileOrDirectory.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeFileOrDirectory.cs index 382b6d7e..76effbde 100644 --- a/code/Data/Models/Deluge/Response/DelugeFileOrDirectory.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeFileOrDirectory.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public class DelugeFileOrDirectory { diff --git a/code/Data/Models/Deluge/Response/DelugeResponse.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeResponse.cs similarity index 85% rename from code/Data/Models/Deluge/Response/DelugeResponse.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeResponse.cs index 1761d1ff..722ae6e4 100644 --- a/code/Data/Models/Deluge/Response/DelugeResponse.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeResponse.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public sealed record DelugeResponse { diff --git a/code/Data/Models/Deluge/Response/DelugeTorrent.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeTorrent.cs similarity index 92% rename from code/Data/Models/Deluge/Response/DelugeTorrent.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeTorrent.cs index a1295399..d4e1e33e 100644 --- a/code/Data/Models/Deluge/Response/DelugeTorrent.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeTorrent.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public record DelugeTorrent { diff --git a/code/Data/Models/Deluge/Response/DelugeTorrentExtended.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeTorrentExtended.cs similarity index 98% rename from code/Data/Models/Deluge/Response/DelugeTorrentExtended.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeTorrentExtended.cs index 0acb36a6..229b58ce 100644 --- a/code/Data/Models/Deluge/Response/DelugeTorrentExtended.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DelugeTorrentExtended.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public sealed record DelugeTorrentExtended : DelugeTorrent { diff --git a/code/Data/Models/Deluge/Response/DownloadStatus.cs b/code/Cleanuparr.Domain/Entities/Deluge/Response/DownloadStatus.cs similarity index 94% rename from code/Data/Models/Deluge/Response/DownloadStatus.cs rename to code/Cleanuparr.Domain/Entities/Deluge/Response/DownloadStatus.cs index 080c44f0..ca3fa8f1 100644 --- a/code/Data/Models/Deluge/Response/DownloadStatus.cs +++ b/code/Cleanuparr.Domain/Entities/Deluge/Response/DownloadStatus.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Data.Models.Deluge.Response; +namespace Cleanuparr.Domain.Entities.Deluge.Response; public sealed record DownloadStatus { diff --git a/code/Data/Models/Lidarr/Album.cs b/code/Cleanuparr.Domain/Entities/Lidarr/Album.cs similarity index 79% rename from code/Data/Models/Lidarr/Album.cs rename to code/Cleanuparr.Domain/Entities/Lidarr/Album.cs index 52f935a9..b3f54141 100644 --- a/code/Data/Models/Lidarr/Album.cs +++ b/code/Cleanuparr.Domain/Entities/Lidarr/Album.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Lidarr; +namespace Cleanuparr.Domain.Entities.Lidarr; public sealed record Album { diff --git a/code/Data/Models/Lidarr/Artist.cs b/code/Cleanuparr.Domain/Entities/Lidarr/Artist.cs similarity index 69% rename from code/Data/Models/Lidarr/Artist.cs rename to code/Cleanuparr.Domain/Entities/Lidarr/Artist.cs index ce29fbb6..a72528cc 100644 --- a/code/Data/Models/Lidarr/Artist.cs +++ b/code/Cleanuparr.Domain/Entities/Lidarr/Artist.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Lidarr; +namespace Cleanuparr.Domain.Entities.Lidarr; public sealed record Artist { diff --git a/code/Data/Models/Lidarr/LidarrCommand.cs b/code/Cleanuparr.Domain/Entities/Lidarr/LidarrCommand.cs similarity index 77% rename from code/Data/Models/Lidarr/LidarrCommand.cs rename to code/Cleanuparr.Domain/Entities/Lidarr/LidarrCommand.cs index 5ad54f50..bd2b623b 100644 --- a/code/Data/Models/Lidarr/LidarrCommand.cs +++ b/code/Cleanuparr.Domain/Entities/Lidarr/LidarrCommand.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Lidarr; +namespace Cleanuparr.Domain.Entities.Lidarr; public sealed record LidarrCommand { diff --git a/code/Data/Models/Radarr/Movie.cs b/code/Cleanuparr.Domain/Entities/Radarr/Movie.cs similarity index 72% rename from code/Data/Models/Radarr/Movie.cs rename to code/Cleanuparr.Domain/Entities/Radarr/Movie.cs index 6f8c657f..059ab0c3 100644 --- a/code/Data/Models/Radarr/Movie.cs +++ b/code/Cleanuparr.Domain/Entities/Radarr/Movie.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Radarr; +namespace Cleanuparr.Domain.Entities.Radarr; public sealed record Movie { diff --git a/code/Data/Models/Radarr/RadarrCommand.cs b/code/Cleanuparr.Domain/Entities/Radarr/RadarrCommand.cs similarity index 74% rename from code/Data/Models/Radarr/RadarrCommand.cs rename to code/Cleanuparr.Domain/Entities/Radarr/RadarrCommand.cs index 691b5cea..d750734e 100644 --- a/code/Data/Models/Radarr/RadarrCommand.cs +++ b/code/Cleanuparr.Domain/Entities/Radarr/RadarrCommand.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Radarr; +namespace Cleanuparr.Domain.Entities.Radarr; public sealed record RadarrCommand { diff --git a/code/Common/CustomDataTypes/SmartTimeSpan.cs b/code/Cleanuparr.Domain/Entities/SmartTimeSpan.cs similarity index 98% rename from code/Common/CustomDataTypes/SmartTimeSpan.cs rename to code/Cleanuparr.Domain/Entities/SmartTimeSpan.cs index 40778e5b..4182ab96 100644 --- a/code/Common/CustomDataTypes/SmartTimeSpan.cs +++ b/code/Cleanuparr.Domain/Entities/SmartTimeSpan.cs @@ -1,6 +1,6 @@ using System.Text; -namespace Common.CustomDataTypes; +namespace Cleanuparr.Domain.Entities; public readonly struct SmartTimeSpan : IComparable, IEquatable { diff --git a/code/Data/Models/Sonarr/Episode.cs b/code/Cleanuparr.Domain/Entities/Sonarr/Episode.cs similarity index 81% rename from code/Data/Models/Sonarr/Episode.cs rename to code/Cleanuparr.Domain/Entities/Sonarr/Episode.cs index 2a403847..9cb8079b 100644 --- a/code/Data/Models/Sonarr/Episode.cs +++ b/code/Cleanuparr.Domain/Entities/Sonarr/Episode.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Sonarr; +namespace Cleanuparr.Domain.Entities.Sonarr; public sealed record Episode { diff --git a/code/Data/Models/Sonarr/Series.cs b/code/Cleanuparr.Domain/Entities/Sonarr/Series.cs similarity index 73% rename from code/Data/Models/Sonarr/Series.cs rename to code/Cleanuparr.Domain/Entities/Sonarr/Series.cs index aaba6102..b4198cfe 100644 --- a/code/Data/Models/Sonarr/Series.cs +++ b/code/Cleanuparr.Domain/Entities/Sonarr/Series.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Sonarr; +namespace Cleanuparr.Domain.Entities.Sonarr; public sealed record Series { diff --git a/code/Data/Models/Sonarr/SonarrCommand.cs b/code/Cleanuparr.Domain/Entities/Sonarr/SonarrCommand.cs similarity index 77% rename from code/Data/Models/Sonarr/SonarrCommand.cs rename to code/Cleanuparr.Domain/Entities/Sonarr/SonarrCommand.cs index 881fd987..f8d5ec30 100644 --- a/code/Data/Models/Sonarr/SonarrCommand.cs +++ b/code/Cleanuparr.Domain/Entities/Sonarr/SonarrCommand.cs @@ -1,6 +1,6 @@ -using Data.Models.Configuration.Arr; +using Cleanuparr.Domain.Enums; -namespace Data.Models.Sonarr; +namespace Cleanuparr.Domain.Entities.Sonarr; public sealed record SonarrCommand { diff --git a/code/Data/Models/Configuration/QueueCleaner/BlocklistType.cs b/code/Cleanuparr.Domain/Enums/BlocklistType.cs similarity index 51% rename from code/Data/Models/Configuration/QueueCleaner/BlocklistType.cs rename to code/Cleanuparr.Domain/Enums/BlocklistType.cs index e61f5035..eb14f1bf 100644 --- a/code/Data/Models/Configuration/QueueCleaner/BlocklistType.cs +++ b/code/Cleanuparr.Domain/Enums/BlocklistType.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Domain.Enums; public enum BlocklistType { diff --git a/code/Common/Enums/CertificateValidationType.cs b/code/Cleanuparr.Domain/Enums/CertificateValidationType.cs similarity index 71% rename from code/Common/Enums/CertificateValidationType.cs rename to code/Cleanuparr.Domain/Enums/CertificateValidationType.cs index 0e7e67bb..c99369e7 100644 --- a/code/Common/Enums/CertificateValidationType.cs +++ b/code/Cleanuparr.Domain/Enums/CertificateValidationType.cs @@ -1,4 +1,4 @@ -namespace Common.Enums; +namespace Cleanuparr.Domain.Enums; public enum CertificateValidationType { diff --git a/code/Data/Enums/CleanReason.cs b/code/Cleanuparr.Domain/Enums/CleanReason.cs similarity index 67% rename from code/Data/Enums/CleanReason.cs rename to code/Cleanuparr.Domain/Enums/CleanReason.cs index 610df630..60ad97ac 100644 --- a/code/Data/Enums/CleanReason.cs +++ b/code/Cleanuparr.Domain/Enums/CleanReason.cs @@ -1,4 +1,4 @@ -namespace Data.Enums; +namespace Cleanuparr.Domain.Enums; public enum CleanReason { diff --git a/code/Data/Enums/DeleteReason.cs b/code/Cleanuparr.Domain/Enums/DeleteReason.cs similarity index 84% rename from code/Data/Enums/DeleteReason.cs rename to code/Cleanuparr.Domain/Enums/DeleteReason.cs index f5dca920..af3a9394 100644 --- a/code/Data/Enums/DeleteReason.cs +++ b/code/Cleanuparr.Domain/Enums/DeleteReason.cs @@ -1,4 +1,4 @@ -namespace Data.Enums; +namespace Cleanuparr.Domain.Enums; public enum DeleteReason { diff --git a/code/Common/Enums/DownloadClientType.cs b/code/Cleanuparr.Domain/Enums/DownloadClientType.cs similarity index 59% rename from code/Common/Enums/DownloadClientType.cs rename to code/Cleanuparr.Domain/Enums/DownloadClientType.cs index 95bdf11e..3ba480ac 100644 --- a/code/Common/Enums/DownloadClientType.cs +++ b/code/Cleanuparr.Domain/Enums/DownloadClientType.cs @@ -1,4 +1,4 @@ -namespace Common.Enums; +namespace Cleanuparr.Domain.Enums; public enum DownloadClientType { diff --git a/code/Common/Enums/DownloadClientTypeName.cs b/code/Cleanuparr.Domain/Enums/DownloadClientTypeName.cs similarity index 71% rename from code/Common/Enums/DownloadClientTypeName.cs rename to code/Cleanuparr.Domain/Enums/DownloadClientTypeName.cs index d79c5ff2..0d376c81 100644 --- a/code/Common/Enums/DownloadClientTypeName.cs +++ b/code/Cleanuparr.Domain/Enums/DownloadClientTypeName.cs @@ -1,4 +1,4 @@ -namespace Common.Enums; +namespace Cleanuparr.Domain.Enums; public enum DownloadClientTypeName { diff --git a/code/Data/Enums/EventSeverity.cs b/code/Cleanuparr.Domain/Enums/EventSeverity.cs similarity index 70% rename from code/Data/Enums/EventSeverity.cs rename to code/Cleanuparr.Domain/Enums/EventSeverity.cs index a9d75071..f2428889 100644 --- a/code/Data/Enums/EventSeverity.cs +++ b/code/Cleanuparr.Domain/Enums/EventSeverity.cs @@ -1,4 +1,4 @@ -namespace Data.Enums; +namespace Cleanuparr.Domain.Enums; public enum EventSeverity { diff --git a/code/Data/Enums/EventType.cs b/code/Cleanuparr.Domain/Enums/EventType.cs similarity index 85% rename from code/Data/Enums/EventType.cs rename to code/Cleanuparr.Domain/Enums/EventType.cs index c452ec76..6040e058 100644 --- a/code/Data/Enums/EventType.cs +++ b/code/Cleanuparr.Domain/Enums/EventType.cs @@ -1,4 +1,4 @@ -namespace Data.Enums; +namespace Cleanuparr.Domain.Enums; public enum EventType { diff --git a/code/Data/Enums/InstanceType.cs b/code/Cleanuparr.Domain/Enums/InstanceType.cs similarity index 70% rename from code/Data/Enums/InstanceType.cs rename to code/Cleanuparr.Domain/Enums/InstanceType.cs index 498c9dbb..02416687 100644 --- a/code/Data/Enums/InstanceType.cs +++ b/code/Cleanuparr.Domain/Enums/InstanceType.cs @@ -1,4 +1,4 @@ -namespace Data.Enums; +namespace Cleanuparr.Domain.Enums; public enum InstanceType { diff --git a/code/Data/Models/Configuration/Arr/SonarrSearchType.cs b/code/Cleanuparr.Domain/Enums/SonarrSearchType.cs similarity index 60% rename from code/Data/Models/Configuration/Arr/SonarrSearchType.cs rename to code/Cleanuparr.Domain/Enums/SonarrSearchType.cs index 2709aa29..f31c7c2d 100644 --- a/code/Data/Models/Configuration/Arr/SonarrSearchType.cs +++ b/code/Cleanuparr.Domain/Enums/SonarrSearchType.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Configuration.Arr; +namespace Cleanuparr.Domain.Enums; public enum SonarrSearchType { diff --git a/code/Data/Enums/StrikeType.cs b/code/Cleanuparr.Domain/Enums/StrikeType.cs similarity index 74% rename from code/Data/Enums/StrikeType.cs rename to code/Cleanuparr.Domain/Enums/StrikeType.cs index 8549a02d..fda33934 100644 --- a/code/Data/Enums/StrikeType.cs +++ b/code/Cleanuparr.Domain/Enums/StrikeType.cs @@ -1,4 +1,4 @@ -namespace Data.Enums; +namespace Cleanuparr.Domain.Enums; public enum StrikeType { diff --git a/code/Data/Models/Deluge/Exceptions/DelugeClientException.cs b/code/Cleanuparr.Domain/Exceptions/DelugeClientException.cs similarity index 100% rename from code/Data/Models/Deluge/Exceptions/DelugeClientException.cs rename to code/Cleanuparr.Domain/Exceptions/DelugeClientException.cs diff --git a/code/Data/Models/Deluge/Exceptions/DelugeLoginException.cs b/code/Cleanuparr.Domain/Exceptions/DelugeLoginException.cs similarity index 100% rename from code/Data/Models/Deluge/Exceptions/DelugeLoginException.cs rename to code/Cleanuparr.Domain/Exceptions/DelugeLoginException.cs diff --git a/code/Data/Models/Deluge/Exceptions/DelugeLogoutException.cs b/code/Cleanuparr.Domain/Exceptions/DelugeLogoutException.cs similarity index 100% rename from code/Data/Models/Deluge/Exceptions/DelugeLogoutException.cs rename to code/Cleanuparr.Domain/Exceptions/DelugeLogoutException.cs diff --git a/code/Common/Exceptions/FatalException.cs b/code/Cleanuparr.Domain/Exceptions/FatalException.cs similarity index 77% rename from code/Common/Exceptions/FatalException.cs rename to code/Cleanuparr.Domain/Exceptions/FatalException.cs index 1966150c..b4954688 100644 --- a/code/Common/Exceptions/FatalException.cs +++ b/code/Cleanuparr.Domain/Exceptions/FatalException.cs @@ -1,4 +1,4 @@ -namespace Common.Exceptions; +namespace Cleanuparr.Domain.Exceptions; public class FatalException : Exception { diff --git a/code/Common/Exceptions/ValidationException.cs b/code/Cleanuparr.Domain/Exceptions/ValidationException.cs similarity index 80% rename from code/Common/Exceptions/ValidationException.cs rename to code/Cleanuparr.Domain/Exceptions/ValidationException.cs index 87074adc..0fe5d7c5 100644 --- a/code/Common/Exceptions/ValidationException.cs +++ b/code/Cleanuparr.Domain/Exceptions/ValidationException.cs @@ -1,4 +1,4 @@ -namespace Common.Exceptions; +namespace Cleanuparr.Domain.Exceptions; public sealed class ValidationException : Exception { diff --git a/code/Infrastructure.Tests/Infrastructure.Tests.csproj b/code/Cleanuparr.Infrastructure.Tests/Cleanuparr.Infrastructure.Tests.csproj similarity index 52% rename from code/Infrastructure.Tests/Infrastructure.Tests.csproj rename to code/Cleanuparr.Infrastructure.Tests/Cleanuparr.Infrastructure.Tests.csproj index a15206b8..94e75a50 100644 --- a/code/Infrastructure.Tests/Infrastructure.Tests.csproj +++ b/code/Cleanuparr.Infrastructure.Tests/Cleanuparr.Infrastructure.Tests.csproj @@ -4,34 +4,29 @@ net9.0 enable enable - false + + + + - all - runtime; build; native; contentfiles; analyzers; buildtransitive + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + - all - runtime; build; native; contentfiles; analyzers; buildtransitive + all + runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - diff --git a/code/Infrastructure.Tests/Health/HealthCheckServiceFixture.cs b/code/Cleanuparr.Infrastructure.Tests/Health/HealthCheckServiceFixture.cs similarity index 100% rename from code/Infrastructure.Tests/Health/HealthCheckServiceFixture.cs rename to code/Cleanuparr.Infrastructure.Tests/Health/HealthCheckServiceFixture.cs diff --git a/code/Infrastructure.Tests/Health/HealthCheckServiceTests.cs b/code/Cleanuparr.Infrastructure.Tests/Health/HealthCheckServiceTests.cs similarity index 100% rename from code/Infrastructure.Tests/Health/HealthCheckServiceTests.cs rename to code/Cleanuparr.Infrastructure.Tests/Health/HealthCheckServiceTests.cs diff --git a/code/Infrastructure.Tests/Http/DynamicHttpClientProviderFixture.cs b/code/Cleanuparr.Infrastructure.Tests/Http/DynamicHttpClientProviderFixture.cs similarity index 100% rename from code/Infrastructure.Tests/Http/DynamicHttpClientProviderFixture.cs rename to code/Cleanuparr.Infrastructure.Tests/Http/DynamicHttpClientProviderFixture.cs diff --git a/code/Infrastructure.Tests/Http/DynamicHttpClientProviderTests.cs b/code/Cleanuparr.Infrastructure.Tests/Http/DynamicHttpClientProviderTests.cs similarity index 100% rename from code/Infrastructure.Tests/Http/DynamicHttpClientProviderTests.cs rename to code/Cleanuparr.Infrastructure.Tests/Http/DynamicHttpClientProviderTests.cs diff --git a/code/Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorFixture.cs b/code/Cleanuparr.Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorFixture.cs similarity index 74% rename from code/Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorFixture.cs rename to code/Cleanuparr.Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorFixture.cs index 45d5546e..caad5a59 100644 --- a/code/Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorFixture.cs +++ b/code/Cleanuparr.Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorFixture.cs @@ -1,8 +1,8 @@ -using Infrastructure.Verticals.ContentBlocker; +using Cleanuparr.Infrastructure.Features.ContentBlocker; using Microsoft.Extensions.Logging; using NSubstitute; -namespace Infrastructure.Tests.Verticals.ContentBlocker; +namespace Cleanuparr.Infrastructure.Tests.Verticals.ContentBlocker; public class FilenameEvaluatorFixture { diff --git a/code/Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorTests.cs b/code/Cleanuparr.Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorTests.cs similarity index 98% rename from code/Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorTests.cs rename to code/Cleanuparr.Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorTests.cs index 19e091d6..865c5130 100644 --- a/code/Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorTests.cs +++ b/code/Cleanuparr.Infrastructure.Tests/Verticals/ContentBlocker/FilenameEvaluatorTests.cs @@ -1,9 +1,10 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; +using Cleanuparr.Domain.Enums; using Shouldly; +using Xunit; -namespace Infrastructure.Tests.Verticals.ContentBlocker; +namespace Cleanuparr.Infrastructure.Tests.Verticals.ContentBlocker; public class FilenameEvaluatorTests : IClassFixture { diff --git a/code/Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceFixture.cs b/code/Cleanuparr.Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceFixture.cs similarity index 100% rename from code/Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceFixture.cs rename to code/Cleanuparr.Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceFixture.cs diff --git a/code/Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceTests.cs b/code/Cleanuparr.Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceTests.cs similarity index 100% rename from code/Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceTests.cs rename to code/Cleanuparr.Infrastructure.Tests/Verticals/DownloadClient/DownloadServiceTests.cs diff --git a/code/Infrastructure/Infrastructure.csproj b/code/Cleanuparr.Infrastructure/Cleanuparr.Infrastructure.csproj similarity index 55% rename from code/Infrastructure/Infrastructure.csproj rename to code/Cleanuparr.Infrastructure/Cleanuparr.Infrastructure.csproj index 0c0a8c74..ac8ea5ce 100644 --- a/code/Infrastructure/Infrastructure.csproj +++ b/code/Cleanuparr.Infrastructure/Cleanuparr.Infrastructure.csproj @@ -1,4 +1,4 @@ - + net9.0 @@ -7,24 +7,24 @@ - - + - + - - - + + + - - - - + + + + + diff --git a/code/Infrastructure/Events/EventCleanupService.cs b/code/Cleanuparr.Infrastructure/Events/EventCleanupService.cs similarity index 97% rename from code/Infrastructure/Events/EventCleanupService.cs rename to code/Cleanuparr.Infrastructure/Events/EventCleanupService.cs index 5b82233b..b03c8b44 100644 --- a/code/Infrastructure/Events/EventCleanupService.cs +++ b/code/Cleanuparr.Infrastructure/Events/EventCleanupService.cs @@ -1,10 +1,10 @@ -using Data; +using Cleanuparr.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace Infrastructure.Events; +namespace Cleanuparr.Infrastructure.Events; /// /// Background service that periodically cleans up old events diff --git a/code/Infrastructure/Events/EventPublisher.cs b/code/Cleanuparr.Infrastructure/Events/EventPublisher.cs similarity index 95% rename from code/Infrastructure/Events/EventPublisher.cs rename to code/Cleanuparr.Infrastructure/Events/EventPublisher.cs index 5f68ca6a..fb75535a 100644 --- a/code/Infrastructure/Events/EventPublisher.cs +++ b/code/Cleanuparr.Infrastructure/Events/EventPublisher.cs @@ -1,15 +1,16 @@ +using System.Text.Json; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.Notifications; +using Cleanuparr.Infrastructure.Hubs; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Events; +using Infrastructure.Interceptors; +using Infrastructure.Verticals.Notifications; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; -using System.Text.Json; -using Data; -using Data.Enums; -using Data.Models.Events; -using Infrastructure.Verticals.Notifications; -using Infrastructure.Verticals.Context; -using Infrastructure.Interceptors; -using Infrastructure.Hubs; -namespace Infrastructure.Events; +namespace Cleanuparr.Infrastructure.Events; /// /// Service for publishing events to database and SignalR hub diff --git a/code/Infrastructure/Extensions/DelugeExtensions.cs b/code/Cleanuparr.Infrastructure/Extensions/DelugeExtensions.cs similarity index 84% rename from code/Infrastructure/Extensions/DelugeExtensions.cs rename to code/Cleanuparr.Infrastructure/Extensions/DelugeExtensions.cs index 0b4348eb..7d911f4c 100644 --- a/code/Infrastructure/Extensions/DelugeExtensions.cs +++ b/code/Cleanuparr.Infrastructure/Extensions/DelugeExtensions.cs @@ -1,8 +1,8 @@ -using Data.Models.Deluge.Response; -using Infrastructure.Helpers; +using Cleanuparr.Domain.Entities.Deluge.Response; +using Cleanuparr.Infrastructure.Services; using Infrastructure.Services; -namespace Infrastructure.Extensions; +namespace Cleanuparr.Infrastructure.Extensions; public static class DelugeExtensions { diff --git a/code/Infrastructure/Extensions/IpAddressExtensions.cs b/code/Cleanuparr.Infrastructure/Extensions/IpAddressExtensions.cs similarity index 97% rename from code/Infrastructure/Extensions/IpAddressExtensions.cs rename to code/Cleanuparr.Infrastructure/Extensions/IpAddressExtensions.cs index f7758803..9d879500 100644 --- a/code/Infrastructure/Extensions/IpAddressExtensions.cs +++ b/code/Cleanuparr.Infrastructure/Extensions/IpAddressExtensions.cs @@ -1,7 +1,7 @@ using System.Net; using System.Net.Sockets; -namespace Infrastructure.Extensions; +namespace Cleanuparr.Infrastructure.Extensions; public static class IpAddressExtensions { diff --git a/code/Infrastructure/Extensions/QBitExtensions.cs b/code/Cleanuparr.Infrastructure/Extensions/QBitExtensions.cs similarity index 93% rename from code/Infrastructure/Extensions/QBitExtensions.cs rename to code/Cleanuparr.Infrastructure/Extensions/QBitExtensions.cs index ca26ff8a..7914e22f 100644 --- a/code/Infrastructure/Extensions/QBitExtensions.cs +++ b/code/Cleanuparr.Infrastructure/Extensions/QBitExtensions.cs @@ -1,8 +1,8 @@ -using Infrastructure.Helpers; +using Cleanuparr.Infrastructure.Services; using Infrastructure.Services; using QBittorrent.Client; -namespace Infrastructure.Extensions; +namespace Cleanuparr.Infrastructure.Extensions; public static class QBitExtensions { diff --git a/code/Infrastructure/Extensions/TransmissionExtensions.cs b/code/Cleanuparr.Infrastructure/Extensions/TransmissionExtensions.cs similarity index 92% rename from code/Infrastructure/Extensions/TransmissionExtensions.cs rename to code/Cleanuparr.Infrastructure/Extensions/TransmissionExtensions.cs index 47c29e70..747795ee 100644 --- a/code/Infrastructure/Extensions/TransmissionExtensions.cs +++ b/code/Cleanuparr.Infrastructure/Extensions/TransmissionExtensions.cs @@ -1,8 +1,8 @@ -using Infrastructure.Helpers; +using Cleanuparr.Infrastructure.Services; using Infrastructure.Services; using Transmission.API.RPC.Entity; -namespace Infrastructure.Extensions; +namespace Cleanuparr.Infrastructure.Extensions; public static class TransmissionExtensions { diff --git a/code/Infrastructure/Verticals/Arr/ArrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/ArrClient.cs similarity index 95% rename from code/Infrastructure/Verticals/Arr/ArrClient.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/ArrClient.cs index 804667f6..78a52713 100644 --- a/code/Infrastructure/Verticals/Arr/ArrClient.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/ArrClient.cs @@ -1,17 +1,17 @@ -using Data.Models.Configuration.Arr; -using Data.Models.Configuration.QueueCleaner; -using Common.Helpers; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Persistence.Models.Configuration.Arr; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; +using Cleanuparr.Shared.Helpers; using Data.Models.Arr; using Data.Models.Arr.Queue; using Infrastructure.Interceptors; -using Infrastructure.Verticals.Arr.Interfaces; -using Infrastructure.Verticals.Context; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Logging; using Newtonsoft.Json; -namespace Infrastructure.Verticals.Arr; +namespace Cleanuparr.Infrastructure.Features.Arr; public abstract class ArrClient : IArrClient { diff --git a/code/Infrastructure/Verticals/Arr/ArrClientFactory.cs b/code/Cleanuparr.Infrastructure/Features/Arr/ArrClientFactory.cs similarity index 84% rename from code/Infrastructure/Verticals/Arr/ArrClientFactory.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/ArrClientFactory.cs index ffec5dc5..e0b1c823 100644 --- a/code/Infrastructure/Verticals/Arr/ArrClientFactory.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/ArrClientFactory.cs @@ -1,7 +1,7 @@ -using Data.Enums; -using Infrastructure.Verticals.Arr.Interfaces; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; -namespace Infrastructure.Verticals.Arr; +namespace Cleanuparr.Infrastructure.Features.Arr; public sealed class ArrClientFactory { diff --git a/code/Infrastructure/Verticals/Arr/ArrQueueIterator.cs b/code/Cleanuparr.Infrastructure/Features/Arr/ArrQueueIterator.cs similarity index 89% rename from code/Infrastructure/Verticals/Arr/ArrQueueIterator.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/ArrQueueIterator.cs index 4256a57e..9a329ae7 100644 --- a/code/Infrastructure/Verticals/Arr/ArrQueueIterator.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/ArrQueueIterator.cs @@ -1,10 +1,9 @@ -using Common.Configuration; -using Data.Models.Configuration.Arr; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr.Queue; -using Infrastructure.Verticals.Arr.Interfaces; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Arr; +namespace Cleanuparr.Infrastructure.Features.Arr; public sealed class ArrQueueIterator { diff --git a/code/Infrastructure/Verticals/Arr/Interfaces/IArrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/IArrClient.cs similarity index 85% rename from code/Infrastructure/Verticals/Arr/Interfaces/IArrClient.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/IArrClient.cs index d114df95..b2385489 100644 --- a/code/Infrastructure/Verticals/Arr/Interfaces/IArrClient.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/IArrClient.cs @@ -1,9 +1,9 @@ -using Data.Models.Configuration.Arr; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr; using Data.Models.Arr.Queue; -namespace Infrastructure.Verticals.Arr.Interfaces; +namespace Cleanuparr.Infrastructure.Features.Arr.Interfaces; public interface IArrClient { diff --git a/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/ILidarrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/ILidarrClient.cs new file mode 100644 index 00000000..5ceb0235 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/ILidarrClient.cs @@ -0,0 +1,5 @@ +namespace Cleanuparr.Infrastructure.Features.Arr.Interfaces; + +public interface ILidarrClient : IArrClient +{ +} \ No newline at end of file diff --git a/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/IRadarrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/IRadarrClient.cs new file mode 100644 index 00000000..bfd1d020 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/IRadarrClient.cs @@ -0,0 +1,5 @@ +namespace Cleanuparr.Infrastructure.Features.Arr.Interfaces; + +public interface IRadarrClient : IArrClient +{ +} \ No newline at end of file diff --git a/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/ISonarrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/ISonarrClient.cs new file mode 100644 index 00000000..3f9c4618 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Arr/Interfaces/ISonarrClient.cs @@ -0,0 +1,5 @@ +namespace Cleanuparr.Infrastructure.Features.Arr.Interfaces; + +public interface ISonarrClient : IArrClient +{ +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Arr/LidarrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/LidarrClient.cs similarity index 95% rename from code/Infrastructure/Verticals/Arr/LidarrClient.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/LidarrClient.cs index 712cf254..b810001e 100644 --- a/code/Infrastructure/Verticals/Arr/LidarrClient.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/LidarrClient.cs @@ -1,15 +1,15 @@ using System.Text; -using Data.Models.Configuration.Arr; +using Cleanuparr.Domain.Entities.Lidarr; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr; using Data.Models.Arr.Queue; -using Data.Models.Lidarr; using Infrastructure.Interceptors; -using Infrastructure.Verticals.Arr.Interfaces; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Logging; using Newtonsoft.Json; -namespace Infrastructure.Verticals.Arr; +namespace Cleanuparr.Infrastructure.Features.Arr; public class LidarrClient : ArrClient, ILidarrClient { diff --git a/code/Infrastructure/Verticals/Arr/RadarrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/RadarrClient.cs similarity index 94% rename from code/Infrastructure/Verticals/Arr/RadarrClient.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/RadarrClient.cs index ac03f95a..cc72c039 100644 --- a/code/Infrastructure/Verticals/Arr/RadarrClient.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/RadarrClient.cs @@ -1,15 +1,15 @@ using System.Text; -using Data.Models.Configuration.Arr; +using Cleanuparr.Domain.Entities.Radarr; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr; using Data.Models.Arr.Queue; -using Data.Models.Radarr; using Infrastructure.Interceptors; -using Infrastructure.Verticals.Arr.Interfaces; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Logging; using Newtonsoft.Json; -namespace Infrastructure.Verticals.Arr; +namespace Cleanuparr.Infrastructure.Features.Arr; public class RadarrClient : ArrClient, IRadarrClient { diff --git a/code/Infrastructure/Verticals/Arr/SonarrClient.cs b/code/Cleanuparr.Infrastructure/Features/Arr/SonarrClient.cs similarity index 96% rename from code/Infrastructure/Verticals/Arr/SonarrClient.cs rename to code/Cleanuparr.Infrastructure/Features/Arr/SonarrClient.cs index 3981d8f9..ed5ac911 100644 --- a/code/Infrastructure/Verticals/Arr/SonarrClient.cs +++ b/code/Cleanuparr.Infrastructure/Features/Arr/SonarrClient.cs @@ -1,16 +1,17 @@ using System.Text; -using Data.Models.Configuration.Arr; +using Cleanuparr.Domain.Entities.Sonarr; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.Arr.Interfaces; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr; using Data.Models.Arr.Queue; -using Data.Models.Sonarr; using Infrastructure.Interceptors; -using Infrastructure.Verticals.Arr.Interfaces; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Logging; using Newtonsoft.Json; -using Series = Data.Models.Sonarr.Series; +using Series = Cleanuparr.Domain.Entities.Sonarr.Series; -namespace Infrastructure.Verticals.Arr; +namespace Cleanuparr.Infrastructure.Features.Arr; public class SonarrClient : ArrClient, ISonarrClient { diff --git a/code/Infrastructure/Verticals/ContentBlocker/BlocklistProvider.cs b/code/Cleanuparr.Infrastructure/Features/ContentBlocker/BlocklistProvider.cs similarity index 96% rename from code/Infrastructure/Verticals/ContentBlocker/BlocklistProvider.cs rename to code/Cleanuparr.Infrastructure/Features/ContentBlocker/BlocklistProvider.cs index a37ccfcf..6af36f55 100644 --- a/code/Infrastructure/Verticals/ContentBlocker/BlocklistProvider.cs +++ b/code/Cleanuparr.Infrastructure/Features/ContentBlocker/BlocklistProvider.cs @@ -3,17 +3,17 @@ using System.Diagnostics; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; -using Common.Helpers; -using Data; -using Data.Enums; -using Infrastructure.Helpers; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Helpers; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; +using Cleanuparr.Shared.Helpers; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.ContentBlocker; +namespace Cleanuparr.Infrastructure.Features.ContentBlocker; public sealed class BlocklistProvider { diff --git a/code/Infrastructure/Verticals/ContentBlocker/FilenameEvaluator.cs b/code/Cleanuparr.Infrastructure/Features/ContentBlocker/FilenameEvaluator.cs similarity index 96% rename from code/Infrastructure/Verticals/ContentBlocker/FilenameEvaluator.cs rename to code/Cleanuparr.Infrastructure/Features/ContentBlocker/FilenameEvaluator.cs index a7cd9413..47ca12b2 100644 --- a/code/Infrastructure/Verticals/ContentBlocker/FilenameEvaluator.cs +++ b/code/Cleanuparr.Infrastructure/Features/ContentBlocker/FilenameEvaluator.cs @@ -1,9 +1,9 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; +using Cleanuparr.Domain.Enums; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.ContentBlocker; +namespace Cleanuparr.Infrastructure.Features.ContentBlocker; public class FilenameEvaluator : IFilenameEvaluator { diff --git a/code/Infrastructure/Verticals/ContentBlocker/IFilenameEvaluator.cs b/code/Cleanuparr.Infrastructure/Features/ContentBlocker/IFilenameEvaluator.cs similarity index 70% rename from code/Infrastructure/Verticals/ContentBlocker/IFilenameEvaluator.cs rename to code/Cleanuparr.Infrastructure/Features/ContentBlocker/IFilenameEvaluator.cs index 3a646691..23a50fda 100644 --- a/code/Infrastructure/Verticals/ContentBlocker/IFilenameEvaluator.cs +++ b/code/Cleanuparr.Infrastructure/Features/ContentBlocker/IFilenameEvaluator.cs @@ -1,8 +1,8 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Verticals.ContentBlocker; +namespace Cleanuparr.Infrastructure.Features.ContentBlocker; public interface IFilenameEvaluator { diff --git a/code/Infrastructure/Verticals/Context/ContextProvider.cs b/code/Cleanuparr.Infrastructure/Features/Context/ContextProvider.cs similarity index 95% rename from code/Infrastructure/Verticals/Context/ContextProvider.cs rename to code/Cleanuparr.Infrastructure/Features/Context/ContextProvider.cs index 36274ba2..6bb0f002 100644 --- a/code/Infrastructure/Verticals/Context/ContextProvider.cs +++ b/code/Cleanuparr.Infrastructure/Features/Context/ContextProvider.cs @@ -1,6 +1,6 @@ using System.Collections.Immutable; -namespace Infrastructure.Verticals.Context; +namespace Cleanuparr.Infrastructure.Features.Context; public static class ContextProvider { diff --git a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeClient.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeClient.cs similarity index 95% rename from code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeClient.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeClient.cs index e8228bc7..e5a9a01c 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeClient.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeClient.cs @@ -1,15 +1,13 @@ using System.Net.Http.Headers; -using System.Text.Json.Serialization; -using Common.Configuration; -using Common.Exceptions; +using Cleanuparr.Domain.Entities.Deluge.Request; +using Cleanuparr.Domain.Entities.Deluge.Response; +using Cleanuparr.Domain.Exceptions; +using Cleanuparr.Infrastructure.Features.DownloadClient.Deluge.Extensions; +using Cleanuparr.Persistence.Models.Configuration; using Data.Models.Deluge.Exceptions; -using Data.Models.Deluge.Request; -using Data.Models.Deluge.Response; -using Infrastructure.Verticals.DownloadClient.Deluge.Extensions; -using Microsoft.Extensions.Options; using Newtonsoft.Json; -namespace Infrastructure.Verticals.DownloadClient.Deluge; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Deluge; public sealed class DelugeClient { diff --git a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeService.cs similarity index 91% rename from code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeService.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeService.cs index 289e4746..3cef20ae 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeService.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeService.cs @@ -1,16 +1,16 @@ -using Common.Configuration; -using Common.Exceptions; -using Data.Models.Deluge.Response; -using Infrastructure.Events; +using Cleanuparr.Domain.Entities.Deluge.Response; +using Cleanuparr.Domain.Exceptions; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.Files; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Infrastructure.Http; +using Cleanuparr.Persistence.Models.Configuration; using Infrastructure.Interceptors; -using Infrastructure.Verticals.ContentBlocker; -using Infrastructure.Verticals.Files; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; -using Infrastructure.Http; -namespace Infrastructure.Verticals.DownloadClient.Deluge; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Deluge; public partial class DelugeService : DownloadService, IDelugeService { diff --git a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeServiceDC.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeServiceDC.cs similarity index 96% rename from code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeServiceDC.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeServiceDC.cs index 9c7a7dcd..5739a761 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeServiceDC.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeServiceDC.cs @@ -1,11 +1,11 @@ -using Data.Models.Configuration.DownloadCleaner; -using Data.Enums; -using Data.Models.Deluge.Response; -using Infrastructure.Extensions; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Entities.Deluge.Response; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.DownloadClient.Deluge; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Deluge; public partial class DelugeService { diff --git a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeServiceQC.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeServiceQC.cs similarity index 96% rename from code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeServiceQC.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeServiceQC.cs index f5ad3e8d..1b9d472f 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Deluge/DelugeServiceQC.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/DelugeServiceQC.cs @@ -1,14 +1,14 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; -using Common.CustomDataTypes; -using Data.Enums; -using Data.Models.Deluge.Response; -using Infrastructure.Extensions; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Entities; +using Cleanuparr.Domain.Entities.Deluge.Response; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.DownloadClient.Deluge; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Deluge; public partial class DelugeService { diff --git a/code/Infrastructure/Verticals/DownloadClient/Deluge/Extensions/DelugeExtensions.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/Extensions/DelugeExtensions.cs similarity index 86% rename from code/Infrastructure/Verticals/DownloadClient/Deluge/Extensions/DelugeExtensions.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/Extensions/DelugeExtensions.cs index 9375c59d..a557b742 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Deluge/Extensions/DelugeExtensions.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/Extensions/DelugeExtensions.cs @@ -1,6 +1,6 @@ using Newtonsoft.Json; -namespace Infrastructure.Verticals.DownloadClient.Deluge.Extensions; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Deluge.Extensions; internal static class DelugeExtensions { diff --git a/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/IDelugeService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/IDelugeService.cs new file mode 100644 index 00000000..83ca3894 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Deluge/IDelugeService.cs @@ -0,0 +1,5 @@ +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Deluge; + +public interface IDelugeService : IDownloadService +{ +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/DownloadCheckResult.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadCheckResult.cs similarity index 81% rename from code/Infrastructure/Verticals/DownloadClient/DownloadCheckResult.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadCheckResult.cs index 0fd6f36c..1531e949 100644 --- a/code/Infrastructure/Verticals/DownloadClient/DownloadCheckResult.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadCheckResult.cs @@ -1,6 +1,6 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Verticals.DownloadClient; +namespace Cleanuparr.Infrastructure.Features.DownloadClient; public sealed record DownloadCheckResult { diff --git a/code/Infrastructure/Verticals/DownloadClient/DownloadService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadService.cs similarity index 93% rename from code/Infrastructure/Verticals/DownloadClient/DownloadService.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadService.cs index 7e7fa0dd..04c4da94 100644 --- a/code/Infrastructure/Verticals/DownloadClient/DownloadService.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadService.cs @@ -1,24 +1,22 @@ -using Common.Configuration; -using Data.Models.Configuration.DownloadCleaner; -using Data.Models.Configuration.QueueCleaner; -using Common.CustomDataTypes; -using Common.Enums; -using Common.Helpers; -using Data; -using Data.Enums; -using Data.Models.Cache; -using Infrastructure.Events; -using Infrastructure.Helpers; -using Infrastructure.Http; +using Cleanuparr.Domain.Entities; +using Cleanuparr.Domain.Entities.Cache; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.Files; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Infrastructure.Helpers; +using Cleanuparr.Infrastructure.Http; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; +using Cleanuparr.Shared.Helpers; using Infrastructure.Interceptors; -using Infrastructure.Verticals.ContentBlocker; -using Infrastructure.Verticals.Context; -using Infrastructure.Verticals.Files; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.DownloadClient; +namespace Cleanuparr.Infrastructure.Features.DownloadClient; public class HealthCheckResult { diff --git a/code/Infrastructure/Verticals/DownloadClient/DownloadServiceFactory.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadServiceFactory.cs similarity index 88% rename from code/Infrastructure/Verticals/DownloadClient/DownloadServiceFactory.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadServiceFactory.cs index ff0d3ad2..b01cea37 100644 --- a/code/Infrastructure/Verticals/DownloadClient/DownloadServiceFactory.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/DownloadServiceFactory.cs @@ -1,19 +1,19 @@ -using Common.Configuration; -using Common.Enums; -using Infrastructure.Events; -using Infrastructure.Http; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.Files; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Infrastructure.Http; +using Cleanuparr.Persistence.Models.Configuration; using Infrastructure.Interceptors; -using Infrastructure.Verticals.ContentBlocker; -using Infrastructure.Verticals.DownloadClient.Deluge; -using Infrastructure.Verticals.DownloadClient.QBittorrent; -using Infrastructure.Verticals.DownloadClient.Transmission; -using Infrastructure.Verticals.Files; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using DelugeService = Cleanuparr.Infrastructure.Features.DownloadClient.Deluge.DelugeService; +using QBitService = Cleanuparr.Infrastructure.Features.DownloadClient.QBittorrent.QBitService; +using TransmissionService = Cleanuparr.Infrastructure.Features.DownloadClient.Transmission.TransmissionService; -namespace Infrastructure.Verticals.DownloadClient; +namespace Cleanuparr.Infrastructure.Features.DownloadClient; /// /// Factory responsible for creating download client service instances diff --git a/code/Infrastructure/Verticals/DownloadClient/IDownloadService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/IDownloadService.cs similarity index 94% rename from code/Infrastructure/Verticals/DownloadClient/IDownloadService.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/IDownloadService.cs index ee5ec770..8090d5ae 100644 --- a/code/Infrastructure/Verticals/DownloadClient/IDownloadService.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/IDownloadService.cs @@ -1,8 +1,7 @@ -using Common.Configuration; -using Common.Enums; -using Data.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; -namespace Infrastructure.Verticals.DownloadClient; +namespace Cleanuparr.Infrastructure.Features.DownloadClient; public interface IDownloadService : IDisposable { diff --git a/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/IQBitService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/IQBitService.cs new file mode 100644 index 00000000..bb11438f --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/IQBitService.cs @@ -0,0 +1,5 @@ +namespace Cleanuparr.Infrastructure.Features.DownloadClient.QBittorrent; + +public interface IQBitService : IDownloadService, IDisposable +{ +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitService.cs similarity index 91% rename from code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitService.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitService.cs index 9385d741..3d593d85 100644 --- a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitService.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitService.cs @@ -1,16 +1,15 @@ -using Common.Configuration; -using Data; -using Infrastructure.Http; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.Files; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Infrastructure.Http; +using Cleanuparr.Persistence.Models.Configuration; using Infrastructure.Interceptors; -using Infrastructure.Verticals.ContentBlocker; -using Infrastructure.Verticals.Files; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; using QBittorrent.Client; -using Infrastructure.Events; -namespace Infrastructure.Verticals.DownloadClient.QBittorrent; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.QBittorrent; public partial class QBitService : DownloadService, IQBitService { diff --git a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitServiceDC.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitServiceDC.cs similarity index 97% rename from code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitServiceDC.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitServiceDC.cs index 34d1129c..eb929b17 100644 --- a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitServiceDC.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitServiceDC.cs @@ -1,12 +1,11 @@ -using Common.Attributes; -using Data.Models.Configuration.DownloadCleaner; -using Data.Enums; -using Infrastructure.Extensions; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; using Microsoft.Extensions.Logging; using QBittorrent.Client; -namespace Infrastructure.Verticals.DownloadClient.QBittorrent; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.QBittorrent; public partial class QBitService { diff --git a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitServiceQC.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitServiceQC.cs similarity index 96% rename from code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitServiceQC.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitServiceQC.cs index 3bc25a8c..f7aa1453 100644 --- a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitServiceQC.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/QBittorrent/QBitServiceQC.cs @@ -1,14 +1,14 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; -using Common.CustomDataTypes; -using Data.Enums; -using Infrastructure.Extensions; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Entities; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; using Microsoft.Extensions.Logging; using QBittorrent.Client; -namespace Infrastructure.Verticals.DownloadClient.QBittorrent; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.QBittorrent; public partial class QBitService { diff --git a/code/Infrastructure/Verticals/DownloadClient/SeedingCheckResult.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/SeedingCheckResult.cs similarity index 57% rename from code/Infrastructure/Verticals/DownloadClient/SeedingCheckResult.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/SeedingCheckResult.cs index 802481c6..105e58cd 100644 --- a/code/Infrastructure/Verticals/DownloadClient/SeedingCheckResult.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/SeedingCheckResult.cs @@ -1,9 +1,10 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Verticals.DownloadClient; +namespace Cleanuparr.Infrastructure.Features.DownloadClient; public sealed record SeedingCheckResult { public bool ShouldClean { get; set; } + public CleanReason Reason { get; set; } } \ No newline at end of file diff --git a/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/ITransmissionService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/ITransmissionService.cs new file mode 100644 index 00000000..94dc0c43 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/ITransmissionService.cs @@ -0,0 +1,5 @@ +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Transmission; + +public interface ITransmissionService : IDownloadService +{ +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionService.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionService.cs similarity index 94% rename from code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionService.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionService.cs index 0ba971ed..642a7c9d 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionService.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionService.cs @@ -1,16 +1,16 @@ -using Common.Configuration; -using Infrastructure.Events; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.ContentBlocker; +using Cleanuparr.Infrastructure.Features.Files; +using Cleanuparr.Infrastructure.Features.ItemStriker; +using Cleanuparr.Infrastructure.Http; +using Cleanuparr.Persistence.Models.Configuration; using Infrastructure.Interceptors; -using Infrastructure.Verticals.ContentBlocker; -using Infrastructure.Verticals.Files; -using Infrastructure.Verticals.ItemStriker; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; -using Infrastructure.Http; using Transmission.API.RPC; using Transmission.API.RPC.Entity; -namespace Infrastructure.Verticals.DownloadClient.Transmission; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Transmission; public partial class TransmissionService : DownloadService, ITransmissionService { diff --git a/code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionServiceDC.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionServiceDC.cs similarity index 96% rename from code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionServiceDC.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionServiceDC.cs index 80a54180..ff00a240 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionServiceDC.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionServiceDC.cs @@ -1,11 +1,11 @@ -using Data.Models.Configuration.DownloadCleaner; -using Data.Enums; -using Infrastructure.Extensions; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; using Microsoft.Extensions.Logging; using Transmission.API.RPC.Entity; -namespace Infrastructure.Verticals.DownloadClient.Transmission; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Transmission; public partial class TransmissionService { diff --git a/code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionServiceQC.cs b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionServiceQC.cs similarity index 96% rename from code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionServiceQC.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionServiceQC.cs index e3fbe55d..a8bd704d 100644 --- a/code/Infrastructure/Verticals/DownloadClient/Transmission/TransmissionServiceQC.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadClient/Transmission/TransmissionServiceQC.cs @@ -1,15 +1,15 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; -using Data.Models.Configuration.QueueCleaner; -using Common.CustomDataTypes; -using Data.Enums; -using Infrastructure.Extensions; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Entities; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; using Microsoft.Extensions.Logging; using Transmission.API.RPC.Arguments; using Transmission.API.RPC.Entity; -namespace Infrastructure.Verticals.DownloadClient.Transmission; +namespace Cleanuparr.Infrastructure.Features.DownloadClient.Transmission; public partial class TransmissionService { diff --git a/code/Infrastructure/Verticals/DownloadRemover/Consumers/DownloadRemoverConsumer.cs b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Consumers/DownloadRemoverConsumer.cs similarity index 80% rename from code/Infrastructure/Verticals/DownloadRemover/Consumers/DownloadRemoverConsumer.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadRemover/Consumers/DownloadRemoverConsumer.cs index 37fdd5ab..a04f4e08 100644 --- a/code/Infrastructure/Verticals/DownloadRemover/Consumers/DownloadRemoverConsumer.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Consumers/DownloadRemoverConsumer.cs @@ -1,10 +1,10 @@ -using Data.Models.Arr; -using Infrastructure.Verticals.DownloadRemover.Interfaces; -using Infrastructure.Verticals.DownloadRemover.Models; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Interfaces; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Models; +using Data.Models.Arr; using MassTransit; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.DownloadRemover.Consumers; +namespace Cleanuparr.Infrastructure.Features.DownloadRemover.Consumers; public class DownloadRemoverConsumer : IConsumer> where T : SearchItem diff --git a/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Interfaces/IQueueItemRemover.cs b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Interfaces/IQueueItemRemover.cs new file mode 100644 index 00000000..bee5624c --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Interfaces/IQueueItemRemover.cs @@ -0,0 +1,9 @@ +using Cleanuparr.Infrastructure.Features.DownloadRemover.Models; +using Data.Models.Arr; + +namespace Cleanuparr.Infrastructure.Features.DownloadRemover.Interfaces; + +public interface IQueueItemRemover +{ + Task RemoveQueueItemAsync(QueueItemRemoveRequest request) where T : SearchItem; +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadRemover/Models/QueueItemRemoveRequest.cs b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Models/QueueItemRemoveRequest.cs similarity index 75% rename from code/Infrastructure/Verticals/DownloadRemover/Models/QueueItemRemoveRequest.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadRemover/Models/QueueItemRemoveRequest.cs index bf1616ba..05a7a9b5 100644 --- a/code/Infrastructure/Verticals/DownloadRemover/Models/QueueItemRemoveRequest.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/Models/QueueItemRemoveRequest.cs @@ -1,9 +1,9 @@ -using Data.Models.Configuration.Arr; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr; using Data.Models.Arr.Queue; -namespace Infrastructure.Verticals.DownloadRemover.Models; +namespace Cleanuparr.Infrastructure.Features.DownloadRemover.Models; public sealed record QueueItemRemoveRequest where T : SearchItem diff --git a/code/Infrastructure/Verticals/DownloadRemover/QueueItemRemover.cs b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/QueueItemRemover.cs similarity index 82% rename from code/Infrastructure/Verticals/DownloadRemover/QueueItemRemover.cs rename to code/Cleanuparr.Infrastructure/Features/DownloadRemover/QueueItemRemover.cs index 451ff771..e0961efd 100644 --- a/code/Infrastructure/Verticals/DownloadRemover/QueueItemRemover.cs +++ b/code/Cleanuparr.Infrastructure/Features/DownloadRemover/QueueItemRemover.cs @@ -1,18 +1,18 @@ -using Data.Models.Configuration.Arr; -using Data; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.Arr; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Interfaces; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Models; +using Cleanuparr.Infrastructure.Helpers; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr; using Data.Models.Arr.Queue; -using Infrastructure.Events; -using Infrastructure.Helpers; -using Infrastructure.Verticals.Arr; -using Infrastructure.Verticals.Context; -using Infrastructure.Verticals.DownloadRemover.Interfaces; -using Infrastructure.Verticals.DownloadRemover.Models; -using Microsoft.Extensions.Caching.Memory; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Caching.Memory; -namespace Infrastructure.Verticals.DownloadRemover; +namespace Cleanuparr.Infrastructure.Features.DownloadRemover; public sealed class QueueItemRemover : IQueueItemRemover { diff --git a/code/Infrastructure/Verticals/Files/HardLinkFileService.cs b/code/Cleanuparr.Infrastructure/Features/Files/HardLinkFileService.cs similarity index 94% rename from code/Infrastructure/Verticals/Files/HardLinkFileService.cs rename to code/Cleanuparr.Infrastructure/Features/Files/HardLinkFileService.cs index 0f4c3e14..e036d421 100644 --- a/code/Infrastructure/Verticals/Files/HardLinkFileService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Files/HardLinkFileService.cs @@ -1,7 +1,8 @@ using System.Runtime.InteropServices; +using Infrastructure.Verticals.Files; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Files; +namespace Cleanuparr.Infrastructure.Features.Files; public class HardLinkFileService : IHardLinkFileService { diff --git a/code/Infrastructure/Verticals/Files/IHardLinkFileService.cs b/code/Cleanuparr.Infrastructure/Features/Files/IHardLinkFileService.cs similarity index 93% rename from code/Infrastructure/Verticals/Files/IHardLinkFileService.cs rename to code/Cleanuparr.Infrastructure/Features/Files/IHardLinkFileService.cs index 1639c57c..bc3d48d6 100644 --- a/code/Infrastructure/Verticals/Files/IHardLinkFileService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Files/IHardLinkFileService.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Verticals.Files; +namespace Cleanuparr.Infrastructure.Features.Files; public interface IHardLinkFileService { diff --git a/code/Infrastructure/Verticals/Files/UnixHardLinkFileService.cs b/code/Cleanuparr.Infrastructure/Features/Files/UnixHardLinkFileService.cs similarity index 98% rename from code/Infrastructure/Verticals/Files/UnixHardLinkFileService.cs rename to code/Cleanuparr.Infrastructure/Features/Files/UnixHardLinkFileService.cs index 7720b640..faa8ccc0 100644 --- a/code/Infrastructure/Verticals/Files/UnixHardLinkFileService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Files/UnixHardLinkFileService.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.Logging; using Mono.Unix.Native; -namespace Infrastructure.Verticals.Files; +namespace Cleanuparr.Infrastructure.Features.Files; public class UnixHardLinkFileService : IHardLinkFileService, IDisposable { diff --git a/code/Infrastructure/Verticals/Files/WindowsHardLinkFileService.cs b/code/Cleanuparr.Infrastructure/Features/Files/WindowsHardLinkFileService.cs similarity index 98% rename from code/Infrastructure/Verticals/Files/WindowsHardLinkFileService.cs rename to code/Cleanuparr.Infrastructure/Features/Files/WindowsHardLinkFileService.cs index fde441db..5eb72694 100644 --- a/code/Infrastructure/Verticals/Files/WindowsHardLinkFileService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Files/WindowsHardLinkFileService.cs @@ -1,5 +1,6 @@ using System.Collections.Concurrent; using System.Runtime.InteropServices; +using Cleanuparr.Infrastructure.Features.Files; using Microsoft.Extensions.Logging; using Microsoft.Win32.SafeHandles; diff --git a/code/Infrastructure/Verticals/ItemStriker/IStriker.cs b/code/Cleanuparr.Infrastructure/Features/ItemStriker/IStriker.cs similarity index 59% rename from code/Infrastructure/Verticals/ItemStriker/IStriker.cs rename to code/Cleanuparr.Infrastructure/Features/ItemStriker/IStriker.cs index acb3b4d5..5018c700 100644 --- a/code/Infrastructure/Verticals/ItemStriker/IStriker.cs +++ b/code/Cleanuparr.Infrastructure/Features/ItemStriker/IStriker.cs @@ -1,6 +1,6 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Verticals.ItemStriker; +namespace Cleanuparr.Infrastructure.Features.ItemStriker; public interface IStriker { diff --git a/code/Infrastructure/Verticals/ItemStriker/Striker.cs b/code/Cleanuparr.Infrastructure/Features/ItemStriker/Striker.cs similarity index 89% rename from code/Infrastructure/Verticals/ItemStriker/Striker.cs rename to code/Cleanuparr.Infrastructure/Features/ItemStriker/Striker.cs index e7ce0319..e68bfcae 100644 --- a/code/Infrastructure/Verticals/ItemStriker/Striker.cs +++ b/code/Cleanuparr.Infrastructure/Features/ItemStriker/Striker.cs @@ -1,13 +1,11 @@ -using Common.Helpers; -using Data.Enums; -using Infrastructure.Events; -using Infrastructure.Helpers; -using Infrastructure.Interceptors; -using Infrastructure.Verticals.Context; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Helpers; +using Cleanuparr.Shared.Helpers; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.ItemStriker; +namespace Cleanuparr.Infrastructure.Features.ItemStriker; public sealed class Striker : IStriker { diff --git a/code/Infrastructure/Verticals/Jobs/GenericHandler.cs b/code/Cleanuparr.Infrastructure/Features/Jobs/GenericHandler.cs similarity index 93% rename from code/Infrastructure/Verticals/Jobs/GenericHandler.cs rename to code/Cleanuparr.Infrastructure/Features/Jobs/GenericHandler.cs index db518974..8f905c30 100644 --- a/code/Infrastructure/Verticals/Jobs/GenericHandler.cs +++ b/code/Cleanuparr.Infrastructure/Features/Jobs/GenericHandler.cs @@ -1,25 +1,23 @@ -using Common.Configuration; -using Common.Enums; -using Data.Models.Configuration.Arr; -using Data.Models.Configuration.DownloadCleaner; -using Data.Models.Configuration.General; -using Data.Models.Configuration.QueueCleaner; -using Data; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Features.Arr; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.DownloadClient; +using Cleanuparr.Infrastructure.Features.DownloadRemover.Models; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.Arr; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration.General; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; using Data.Models.Arr; using Data.Models.Arr.Queue; -using Data.Models.Configuration.Arr; -using Infrastructure.Events; -using Infrastructure.Verticals.Arr; -using Infrastructure.Verticals.Context; -using Infrastructure.Verticals.DownloadClient; -using Infrastructure.Verticals.DownloadRemover.Models; using MassTransit; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Jobs; +namespace Cleanuparr.Infrastructure.Features.Jobs; public abstract class GenericHandler : IHandler { diff --git a/code/Cleanuparr.Infrastructure/Features/Jobs/IHandler.cs b/code/Cleanuparr.Infrastructure/Features/Jobs/IHandler.cs new file mode 100644 index 00000000..6cca13e0 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Jobs/IHandler.cs @@ -0,0 +1,6 @@ +namespace Cleanuparr.Infrastructure.Features.Jobs; + +public interface IHandler +{ + Task ExecuteAsync(); +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Jobs/JobChainingListener.cs b/code/Cleanuparr.Infrastructure/Features/Jobs/JobChainingListener.cs similarity index 95% rename from code/Infrastructure/Verticals/Jobs/JobChainingListener.cs rename to code/Cleanuparr.Infrastructure/Features/Jobs/JobChainingListener.cs index 273f3b4d..009b1db1 100644 --- a/code/Infrastructure/Verticals/Jobs/JobChainingListener.cs +++ b/code/Cleanuparr.Infrastructure/Features/Jobs/JobChainingListener.cs @@ -1,6 +1,6 @@ using Quartz; -namespace Infrastructure.Verticals.Jobs; +namespace Cleanuparr.Infrastructure.Features.Jobs; public class JobChainingListener : IJobListener { diff --git a/code/Infrastructure/Verticals/Notifications/Apprise/ApprisePayload.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/ApprisePayload.cs similarity index 88% rename from code/Infrastructure/Verticals/Notifications/Apprise/ApprisePayload.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/ApprisePayload.cs index 74804297..d9150e5f 100644 --- a/code/Infrastructure/Verticals/Notifications/Apprise/ApprisePayload.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/ApprisePayload.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Infrastructure.Verticals.Notifications.Apprise; +namespace Cleanuparr.Infrastructure.Features.Notifications.Apprise; public sealed record ApprisePayload { diff --git a/code/Infrastructure/Verticals/Notifications/Apprise/AppriseProvider.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/AppriseProvider.cs similarity index 92% rename from code/Infrastructure/Verticals/Notifications/Apprise/AppriseProvider.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/AppriseProvider.cs index 3f981915..8a86c4d1 100644 --- a/code/Infrastructure/Verticals/Notifications/Apprise/AppriseProvider.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/AppriseProvider.cs @@ -1,9 +1,11 @@ using System.Text; -using Data.Models.Configuration.Notification; -using Data; +using Cleanuparr.Infrastructure.Features.Notifications.Models; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration.Notification; +using Infrastructure.Verticals.Notifications; using Infrastructure.Verticals.Notifications.Models; -namespace Infrastructure.Verticals.Notifications.Apprise; +namespace Cleanuparr.Infrastructure.Features.Notifications.Apprise; public sealed class AppriseProvider : NotificationProvider { diff --git a/code/Infrastructure/Verticals/Notifications/Apprise/AppriseProxy.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/AppriseProxy.cs similarity index 87% rename from code/Infrastructure/Verticals/Notifications/Apprise/AppriseProxy.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/AppriseProxy.cs index 19ca094b..bd9fc740 100644 --- a/code/Infrastructure/Verticals/Notifications/Apprise/AppriseProxy.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/AppriseProxy.cs @@ -1,10 +1,10 @@ using System.Text; -using Data.Models.Configuration.Notification; -using Common.Helpers; +using Cleanuparr.Persistence.Models.Configuration.Notification; +using Cleanuparr.Shared.Helpers; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; -namespace Infrastructure.Verticals.Notifications.Apprise; +namespace Cleanuparr.Infrastructure.Features.Notifications.Apprise; public sealed class AppriseProxy : IAppriseProxy { diff --git a/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/IAppriseProxy.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/IAppriseProxy.cs new file mode 100644 index 00000000..58d50e1a --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Apprise/IAppriseProxy.cs @@ -0,0 +1,8 @@ +using Cleanuparr.Persistence.Models.Configuration.Notification; + +namespace Cleanuparr.Infrastructure.Features.Notifications.Apprise; + +public interface IAppriseProxy +{ + Task SendNotification(ApprisePayload payload, AppriseConfig config); +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Consumers/NotificationConsumer.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Consumers/NotificationConsumer.cs similarity index 91% rename from code/Infrastructure/Verticals/Notifications/Consumers/NotificationConsumer.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Consumers/NotificationConsumer.cs index 3d2344a0..55c36fb3 100644 --- a/code/Infrastructure/Verticals/Notifications/Consumers/NotificationConsumer.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Consumers/NotificationConsumer.cs @@ -1,8 +1,9 @@ -using Infrastructure.Verticals.Notifications.Models; +using Infrastructure.Verticals.Notifications; +using Infrastructure.Verticals.Notifications.Models; using MassTransit; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Notifications.Consumers; +namespace Cleanuparr.Infrastructure.Features.Notifications.Consumers; public sealed class NotificationConsumer : IConsumer where T : Notification { diff --git a/code/Infrastructure/Verticals/Notifications/INotificationFactory.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/INotificationFactory.cs similarity index 79% rename from code/Infrastructure/Verticals/Notifications/INotificationFactory.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/INotificationFactory.cs index 460354f7..a81c8fed 100644 --- a/code/Infrastructure/Verticals/Notifications/INotificationFactory.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/INotificationFactory.cs @@ -1,4 +1,6 @@ -namespace Infrastructure.Verticals.Notifications; +using Infrastructure.Verticals.Notifications; + +namespace Cleanuparr.Infrastructure.Features.Notifications; public interface INotificationFactory { diff --git a/code/Infrastructure/Verticals/Notifications/INotificationProvider.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/INotificationProvider.cs similarity index 85% rename from code/Infrastructure/Verticals/Notifications/INotificationProvider.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/INotificationProvider.cs index e5d60d6b..437af5b6 100644 --- a/code/Infrastructure/Verticals/Notifications/INotificationProvider.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/INotificationProvider.cs @@ -1,7 +1,7 @@ -using Data.Models.Configuration.Notification; +using Cleanuparr.Persistence.Models.Configuration.Notification; using Infrastructure.Verticals.Notifications.Models; -namespace Infrastructure.Verticals.Notifications; +namespace Cleanuparr.Infrastructure.Features.Notifications; public interface INotificationProvider : INotificationProvider where T : NotificationConfig diff --git a/code/Infrastructure/Verticals/Notifications/INotificationPublisher.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/INotificationPublisher.cs similarity index 80% rename from code/Infrastructure/Verticals/Notifications/INotificationPublisher.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/INotificationPublisher.cs index 2c3ed654..47713553 100644 --- a/code/Infrastructure/Verticals/Notifications/INotificationPublisher.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/INotificationPublisher.cs @@ -1,6 +1,6 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Verticals.Notifications; +namespace Cleanuparr.Infrastructure.Features.Notifications; public interface INotificationPublisher { diff --git a/code/Infrastructure/Verticals/Notifications/Models/ArrNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/ArrNotification.cs similarity index 62% rename from code/Infrastructure/Verticals/Notifications/Models/ArrNotification.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Models/ArrNotification.cs index dd340cba..0ee5ed80 100644 --- a/code/Infrastructure/Verticals/Notifications/Models/ArrNotification.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/ArrNotification.cs @@ -1,6 +1,7 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Infrastructure.Verticals.Notifications.Models; -namespace Infrastructure.Verticals.Notifications.Models; +namespace Cleanuparr.Infrastructure.Features.Notifications.Models; public record ArrNotification : Notification { diff --git a/code/Infrastructure/Verticals/Notifications/Models/CategoryChangedNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/CategoryChangedNotification.cs similarity index 100% rename from code/Infrastructure/Verticals/Notifications/Models/CategoryChangedNotification.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Models/CategoryChangedNotification.cs diff --git a/code/Infrastructure/Verticals/Notifications/Models/DownloadCleanedNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/DownloadCleanedNotification.cs similarity index 100% rename from code/Infrastructure/Verticals/Notifications/Models/DownloadCleanedNotification.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Models/DownloadCleanedNotification.cs diff --git a/code/Cleanuparr.Infrastructure/Features/Notifications/Models/FailedImportStrikeNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/FailedImportStrikeNotification.cs new file mode 100644 index 00000000..0c24c85e --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/FailedImportStrikeNotification.cs @@ -0,0 +1,7 @@ +using Cleanuparr.Infrastructure.Features.Notifications.Models; + +namespace Infrastructure.Verticals.Notifications.Models; + +public sealed record FailedImportStrikeNotification : ArrNotification +{ +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Models/Notification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/Notification.cs similarity index 100% rename from code/Infrastructure/Verticals/Notifications/Models/Notification.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Models/Notification.cs diff --git a/code/Infrastructure/Verticals/Notifications/Models/NotificationField.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/NotificationField.cs similarity index 100% rename from code/Infrastructure/Verticals/Notifications/Models/NotificationField.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Models/NotificationField.cs diff --git a/code/Infrastructure/Verticals/Notifications/Models/NotificationLevel.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/NotificationLevel.cs similarity index 100% rename from code/Infrastructure/Verticals/Notifications/Models/NotificationLevel.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Models/NotificationLevel.cs diff --git a/code/Cleanuparr.Infrastructure/Features/Notifications/Models/QueueItemDeletedNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/QueueItemDeletedNotification.cs new file mode 100644 index 00000000..656ff236 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/QueueItemDeletedNotification.cs @@ -0,0 +1,7 @@ +using Cleanuparr.Infrastructure.Features.Notifications.Models; + +namespace Infrastructure.Verticals.Notifications.Models; + +public sealed record QueueItemDeletedNotification : ArrNotification +{ +} \ No newline at end of file diff --git a/code/Cleanuparr.Infrastructure/Features/Notifications/Models/SlowStrikeNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/SlowStrikeNotification.cs new file mode 100644 index 00000000..030de617 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/SlowStrikeNotification.cs @@ -0,0 +1,7 @@ +using Cleanuparr.Infrastructure.Features.Notifications.Models; + +namespace Infrastructure.Verticals.Notifications.Models; + +public sealed record SlowStrikeNotification : ArrNotification +{ +} \ No newline at end of file diff --git a/code/Cleanuparr.Infrastructure/Features/Notifications/Models/StalledStrikeNotification.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/StalledStrikeNotification.cs new file mode 100644 index 00000000..34bed2e7 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Models/StalledStrikeNotification.cs @@ -0,0 +1,7 @@ +using Cleanuparr.Infrastructure.Features.Notifications.Models; + +namespace Infrastructure.Verticals.Notifications.Models; + +public sealed record StalledStrikeNotification : ArrNotification +{ +} \ No newline at end of file diff --git a/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/INotifiarrProxy.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/INotifiarrProxy.cs new file mode 100644 index 00000000..155146d5 --- /dev/null +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/INotifiarrProxy.cs @@ -0,0 +1,8 @@ +using Cleanuparr.Persistence.Models.Configuration.Notification; + +namespace Cleanuparr.Infrastructure.Features.Notifications.Notifiarr; + +public interface INotifiarrProxy +{ + Task SendNotification(NotifiarrPayload payload, NotifiarrConfig config); +} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrException.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrException.cs similarity index 76% rename from code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrException.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrException.cs index 10ca5908..c28c60ae 100644 --- a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrException.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrException.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Verticals.Notifications.Notifiarr; +namespace Cleanuparr.Infrastructure.Features.Notifications.Notifiarr; public class NotifiarrException : Exception { diff --git a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrPayload.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrPayload.cs similarity index 94% rename from code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrPayload.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrPayload.cs index 4a1d8967..7da2a3f7 100644 --- a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrPayload.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrPayload.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Verticals.Notifications.Notifiarr; +namespace Cleanuparr.Infrastructure.Features.Notifications.Notifiarr; public class NotifiarrPayload { diff --git a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrProvider.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrProvider.cs similarity index 94% rename from code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrProvider.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrProvider.cs index cd0f2e9e..72ad02ff 100644 --- a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrProvider.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrProvider.cs @@ -1,9 +1,11 @@ -using Data.Models.Configuration.Notification; -using Data; +using Cleanuparr.Infrastructure.Features.Notifications.Models; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration.Notification; +using Infrastructure.Verticals.Notifications; using Infrastructure.Verticals.Notifications.Models; using Mapster; -namespace Infrastructure.Verticals.Notifications.Notifiarr; +namespace Cleanuparr.Infrastructure.Features.Notifications.Notifiarr; public class NotifiarrProvider : NotificationProvider { diff --git a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrProxy.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrProxy.cs similarity index 92% rename from code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrProxy.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrProxy.cs index 02a5e3cb..4606cf51 100644 --- a/code/Infrastructure/Verticals/Notifications/Notifiarr/NotifiarrProxy.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/Notifiarr/NotifiarrProxy.cs @@ -1,11 +1,11 @@ using System.Text; -using Data.Models.Configuration.Notification; -using Common.Helpers; +using Cleanuparr.Persistence.Models.Configuration.Notification; +using Cleanuparr.Shared.Helpers; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; -namespace Infrastructure.Verticals.Notifications.Notifiarr; +namespace Cleanuparr.Infrastructure.Features.Notifications.Notifiarr; public sealed class NotifiarrProxy : INotifiarrProxy { diff --git a/code/Infrastructure/Verticals/Notifications/NotificationFactory.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationFactory.cs similarity index 96% rename from code/Infrastructure/Verticals/Notifications/NotificationFactory.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/NotificationFactory.cs index a3676837..208900ae 100644 --- a/code/Infrastructure/Verticals/Notifications/NotificationFactory.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationFactory.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Verticals.Notifications; +namespace Cleanuparr.Infrastructure.Features.Notifications; public class NotificationFactory : INotificationFactory { diff --git a/code/Infrastructure/Verticals/Notifications/NotificationProvider.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationProvider.cs similarity index 89% rename from code/Infrastructure/Verticals/Notifications/NotificationProvider.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/NotificationProvider.cs index b634c095..e11c9806 100644 --- a/code/Infrastructure/Verticals/Notifications/NotificationProvider.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationProvider.cs @@ -1,8 +1,8 @@ -using Data.Models.Configuration.Notification; +using Cleanuparr.Persistence.Models.Configuration.Notification; using Infrastructure.Verticals.Notifications.Models; using Microsoft.EntityFrameworkCore; -namespace Infrastructure.Verticals.Notifications; +namespace Cleanuparr.Infrastructure.Features.Notifications; public abstract class NotificationProvider : INotificationProvider where T : NotificationConfig diff --git a/code/Infrastructure/Verticals/Notifications/NotificationPublisher.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationPublisher.cs similarity index 96% rename from code/Infrastructure/Verticals/Notifications/NotificationPublisher.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/NotificationPublisher.cs index ba12dbbe..6f70ea70 100644 --- a/code/Infrastructure/Verticals/Notifications/NotificationPublisher.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationPublisher.cs @@ -1,15 +1,16 @@ using System.Globalization; -using Data.Models.Configuration.Arr; -using Data.Enums; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.Context; +using Cleanuparr.Infrastructure.Features.Notifications.Models; +using Cleanuparr.Persistence.Models.Configuration.Arr; using Data.Models.Arr.Queue; using Infrastructure.Interceptors; -using Infrastructure.Verticals.Context; using Infrastructure.Verticals.Notifications.Models; using Mapster; using MassTransit; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Notifications; +namespace Cleanuparr.Infrastructure.Features.Notifications; public class NotificationPublisher : INotificationPublisher { diff --git a/code/Infrastructure/Verticals/Notifications/NotificationService.cs b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationService.cs similarity index 98% rename from code/Infrastructure/Verticals/Notifications/NotificationService.cs rename to code/Cleanuparr.Infrastructure/Features/Notifications/NotificationService.cs index d26b8f81..1c954a79 100644 --- a/code/Infrastructure/Verticals/Notifications/NotificationService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Notifications/NotificationService.cs @@ -1,3 +1,4 @@ +using Cleanuparr.Infrastructure.Features.Notifications; using Infrastructure.Verticals.Notifications.Models; using Microsoft.Extensions.Logging; diff --git a/code/Infrastructure/Verticals/Security/AesEncryptionService.cs b/code/Cleanuparr.Infrastructure/Features/Security/AesEncryptionService.cs similarity index 98% rename from code/Infrastructure/Verticals/Security/AesEncryptionService.cs rename to code/Cleanuparr.Infrastructure/Features/Security/AesEncryptionService.cs index e01bc19f..e66fe23a 100644 --- a/code/Infrastructure/Verticals/Security/AesEncryptionService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Security/AesEncryptionService.cs @@ -1,9 +1,9 @@ using System.Security.Cryptography; using System.Text; -using Data; +using Cleanuparr.Persistence; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Security; +namespace Cleanuparr.Infrastructure.Features.Security; /// /// Provides AES-128 GCM encryption services for sensitive data using the application's encryption key. diff --git a/code/Infrastructure/Verticals/Security/IEncryptionService.cs b/code/Cleanuparr.Infrastructure/Features/Security/IEncryptionService.cs similarity index 94% rename from code/Infrastructure/Verticals/Security/IEncryptionService.cs rename to code/Cleanuparr.Infrastructure/Features/Security/IEncryptionService.cs index 5b7a993a..d133b0cc 100644 --- a/code/Infrastructure/Verticals/Security/IEncryptionService.cs +++ b/code/Cleanuparr.Infrastructure/Features/Security/IEncryptionService.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Verticals.Security; +namespace Cleanuparr.Infrastructure.Features.Security; /// /// Provides encryption and decryption services for sensitive data. diff --git a/code/Infrastructure/Verticals/Security/SensitiveDataJsonConverter.cs b/code/Cleanuparr.Infrastructure/Features/Security/SensitiveDataJsonConverter.cs similarity index 98% rename from code/Infrastructure/Verticals/Security/SensitiveDataJsonConverter.cs rename to code/Cleanuparr.Infrastructure/Features/Security/SensitiveDataJsonConverter.cs index bcdca1bb..81cc94ea 100644 --- a/code/Infrastructure/Verticals/Security/SensitiveDataJsonConverter.cs +++ b/code/Cleanuparr.Infrastructure/Features/Security/SensitiveDataJsonConverter.cs @@ -2,7 +2,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.Extensions.Logging; -namespace Infrastructure.Verticals.Security; +namespace Cleanuparr.Infrastructure.Features.Security; /// /// Handles encryption and decryption of sensitive data during JSON serialization and deserialization. diff --git a/code/Infrastructure/Health/ClientHealthChangedEventArgs.cs b/code/Cleanuparr.Infrastructure/Health/ClientHealthChangedEventArgs.cs similarity index 97% rename from code/Infrastructure/Health/ClientHealthChangedEventArgs.cs rename to code/Cleanuparr.Infrastructure/Health/ClientHealthChangedEventArgs.cs index 30e9892e..30f4bd63 100644 --- a/code/Infrastructure/Health/ClientHealthChangedEventArgs.cs +++ b/code/Cleanuparr.Infrastructure/Health/ClientHealthChangedEventArgs.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Health; +namespace Cleanuparr.Infrastructure.Health; /// /// Event arguments for client health changes diff --git a/code/Infrastructure/Health/HealthCheckBackgroundService.cs b/code/Cleanuparr.Infrastructure/Health/HealthCheckBackgroundService.cs similarity index 98% rename from code/Infrastructure/Health/HealthCheckBackgroundService.cs rename to code/Cleanuparr.Infrastructure/Health/HealthCheckBackgroundService.cs index 57fd69fc..bc4b6719 100644 --- a/code/Infrastructure/Health/HealthCheckBackgroundService.cs +++ b/code/Cleanuparr.Infrastructure/Health/HealthCheckBackgroundService.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace Infrastructure.Health; +namespace Cleanuparr.Infrastructure.Health; /// /// Background service that periodically checks the health of all download clients diff --git a/code/Infrastructure/Health/HealthCheckService.cs b/code/Cleanuparr.Infrastructure/Health/HealthCheckService.cs similarity index 97% rename from code/Infrastructure/Health/HealthCheckService.cs rename to code/Cleanuparr.Infrastructure/Health/HealthCheckService.cs index 625a03ff..7121f10c 100644 --- a/code/Infrastructure/Health/HealthCheckService.cs +++ b/code/Cleanuparr.Infrastructure/Health/HealthCheckService.cs @@ -1,11 +1,11 @@ -using Common.Enums; -using Data; -using Infrastructure.Verticals.DownloadClient; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Features.DownloadClient; +using Cleanuparr.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace Infrastructure.Health; +namespace Cleanuparr.Infrastructure.Health; /// /// Service for checking the health of download clients diff --git a/code/Infrastructure/Health/HealthStatus.cs b/code/Cleanuparr.Infrastructure/Health/HealthStatus.cs similarity index 88% rename from code/Infrastructure/Health/HealthStatus.cs rename to code/Cleanuparr.Infrastructure/Health/HealthStatus.cs index ab3b3148..b5e26f94 100644 --- a/code/Infrastructure/Health/HealthStatus.cs +++ b/code/Cleanuparr.Infrastructure/Health/HealthStatus.cs @@ -1,4 +1,6 @@ -namespace Infrastructure.Health; +using Cleanuparr.Domain.Enums; + +namespace Cleanuparr.Infrastructure.Health; /// /// Represents the health status of a client @@ -38,5 +40,5 @@ public class HealthStatus /// /// Gets or sets the client type /// - public Common.Enums.DownloadClientTypeName ClientTypeName { get; set; } + public DownloadClientTypeName ClientTypeName { get; set; } } diff --git a/code/Infrastructure/Health/HealthStatusBroadcaster.cs b/code/Cleanuparr.Infrastructure/Health/HealthStatusBroadcaster.cs similarity index 98% rename from code/Infrastructure/Health/HealthStatusBroadcaster.cs rename to code/Cleanuparr.Infrastructure/Health/HealthStatusBroadcaster.cs index cb5a310e..9fc5e0ea 100644 --- a/code/Infrastructure/Health/HealthStatusBroadcaster.cs +++ b/code/Cleanuparr.Infrastructure/Health/HealthStatusBroadcaster.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace Infrastructure.Health; +namespace Cleanuparr.Infrastructure.Health; /// /// Service that broadcasts health status changes via SignalR diff --git a/code/Infrastructure/Health/HealthStatusHub.cs b/code/Cleanuparr.Infrastructure/Health/HealthStatusHub.cs similarity index 96% rename from code/Infrastructure/Health/HealthStatusHub.cs rename to code/Cleanuparr.Infrastructure/Health/HealthStatusHub.cs index d88499db..6d4483b4 100644 --- a/code/Infrastructure/Health/HealthStatusHub.cs +++ b/code/Cleanuparr.Infrastructure/Health/HealthStatusHub.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; -namespace Infrastructure.Health; +namespace Cleanuparr.Infrastructure.Health; /// /// SignalR hub for broadcasting health status updates diff --git a/code/Infrastructure/Health/IHealthCheckService.cs b/code/Cleanuparr.Infrastructure/Health/IHealthCheckService.cs similarity index 96% rename from code/Infrastructure/Health/IHealthCheckService.cs rename to code/Cleanuparr.Infrastructure/Health/IHealthCheckService.cs index e799747c..b8647ef0 100644 --- a/code/Infrastructure/Health/IHealthCheckService.cs +++ b/code/Cleanuparr.Infrastructure/Health/IHealthCheckService.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Health; +namespace Cleanuparr.Infrastructure.Health; /// /// Service for checking the health of download clients diff --git a/code/Infrastructure/Helpers/CacheKeys.cs b/code/Cleanuparr.Infrastructure/Helpers/CacheKeys.cs similarity index 90% rename from code/Infrastructure/Helpers/CacheKeys.cs rename to code/Cleanuparr.Infrastructure/Helpers/CacheKeys.cs index 4df43f58..6e8d6a25 100644 --- a/code/Infrastructure/Helpers/CacheKeys.cs +++ b/code/Cleanuparr.Infrastructure/Helpers/CacheKeys.cs @@ -1,6 +1,6 @@ -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Helpers; +namespace Cleanuparr.Infrastructure.Helpers; public static class CacheKeys { diff --git a/code/Infrastructure/Helpers/LogProperties.cs b/code/Cleanuparr.Infrastructure/Helpers/LogProperties.cs similarity index 72% rename from code/Infrastructure/Helpers/LogProperties.cs rename to code/Cleanuparr.Infrastructure/Helpers/LogProperties.cs index 10f260e5..5a97c61a 100644 --- a/code/Infrastructure/Helpers/LogProperties.cs +++ b/code/Cleanuparr.Infrastructure/Helpers/LogProperties.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Helpers; +namespace Cleanuparr.Infrastructure.Helpers; public static class LogProperties { diff --git a/code/Infrastructure/Http/DynamicHttpClientProvider.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientProvider.cs similarity index 91% rename from code/Infrastructure/Http/DynamicHttpClientProvider.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientProvider.cs index 3c5c5eed..1b1d5c57 100644 --- a/code/Infrastructure/Http/DynamicHttpClientProvider.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientProvider.cs @@ -1,12 +1,11 @@ -using Common.Configuration; -using Data.Models.Configuration.General; -using Data; -using Infrastructure.Http.DynamicHttpClientSystem; -using Microsoft.Extensions.Logging; -using Microsoft.EntityFrameworkCore; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; +using Cleanuparr.Persistence; +using Cleanuparr.Persistence.Models.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; -namespace Infrastructure.Http; +namespace Cleanuparr.Infrastructure.Http; /// /// Provides dynamically configured HTTP clients for download services @@ -57,7 +56,7 @@ public class DynamicHttpClientProvider : IDynamicHttpClientProvider // Determine the client type based on the download client type var clientType = downloadClientConfig.TypeName switch { - Common.Enums.DownloadClientTypeName.Deluge => HttpClientType.Deluge, + DownloadClientTypeName.Deluge => HttpClientType.Deluge, _ => HttpClientType.WithRetry }; diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientConfiguration.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientConfiguration.cs similarity index 97% rename from code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientConfiguration.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientConfiguration.cs index 312a1f8e..beea3218 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientConfiguration.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientConfiguration.cs @@ -1,4 +1,5 @@ using System.Net; +using Cleanuparr.Infrastructure.Services; using Infrastructure.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Http; @@ -6,7 +7,7 @@ using Microsoft.Extensions.Options; using Polly; using Polly.Extensions.Http; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Dynamic configuration handler - this configures HttpClients on-demand based on stored configurations diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientFactory.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientFactory.cs similarity index 97% rename from code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientFactory.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientFactory.cs index 50d16de6..4eeda34d 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientFactory.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientFactory.cs @@ -1,9 +1,9 @@ using System.Net; -using Common.Enums; -using Data.Models.Configuration.General; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Persistence.Models.Configuration.General; using Microsoft.Extensions.Logging; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Implementation of the dynamic HttpClient factory diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientServiceCollectionExtensions.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientServiceCollectionExtensions.cs similarity index 94% rename from code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientServiceCollectionExtensions.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientServiceCollectionExtensions.cs index d527b336..ffd93bb7 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientServiceCollectionExtensions.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/DynamicHttpClientServiceCollectionExtensions.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Http; using Microsoft.Extensions.Options; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Service collection extensions for the dynamic HTTP client system diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfig.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfig.cs similarity index 90% rename from code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfig.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfig.cs index f2ddfc8b..cafc6d19 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfig.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfig.cs @@ -1,7 +1,7 @@ using System.Net; -using Common.Enums; +using Cleanuparr.Domain.Enums; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Configuration for a dynamic HTTP client diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigStore.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigStore.cs similarity index 96% rename from code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigStore.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigStore.cs index 09a7e82f..e6d67ec8 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigStore.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigStore.cs @@ -1,6 +1,6 @@ using System.Collections.Concurrent; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// In-memory implementation of the HTTP client configuration store diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigurationService.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigurationService.cs similarity index 90% rename from code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigurationService.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigurationService.cs index 14cb7c32..b161251f 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigurationService.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientConfigurationService.cs @@ -1,11 +1,11 @@ -using Common.Helpers; -using Data; -using Infrastructure.Verticals.DownloadClient.Deluge; +using Cleanuparr.Persistence; +using Cleanuparr.Shared.Helpers; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using DelugeService = Cleanuparr.Infrastructure.Features.DownloadClient.Deluge.DelugeService; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Background service to pre-register standard HttpClient configurations diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientOptionsInvalidator.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientOptionsInvalidator.cs similarity index 97% rename from code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientOptionsInvalidator.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientOptionsInvalidator.cs index 3f051fab..a9c03002 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/HttpClientOptionsInvalidator.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/HttpClientOptionsInvalidator.cs @@ -2,7 +2,7 @@ using Microsoft.Extensions.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Implementation of HTTP client options invalidator using cache manipulation diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/IDynamicHttpClientFactory.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IDynamicHttpClientFactory.cs similarity index 92% rename from code/Infrastructure/Http/DynamicHttpClientSystem/IDynamicHttpClientFactory.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IDynamicHttpClientFactory.cs index a8260c57..160bc5cf 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/IDynamicHttpClientFactory.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IDynamicHttpClientFactory.cs @@ -1,7 +1,7 @@ -using Common.Enums; -using Data.Models.Configuration.General; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Persistence.Models.Configuration.General; -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Factory service to manage dynamic HttpClient creation diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/IHttpClientConfigStore.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IHttpClientConfigStore.cs similarity index 94% rename from code/Infrastructure/Http/DynamicHttpClientSystem/IHttpClientConfigStore.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IHttpClientConfigStore.cs index 5cbb3543..2f03ac34 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/IHttpClientConfigStore.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IHttpClientConfigStore.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Store interface for managing HttpClient configurations dynamically diff --git a/code/Infrastructure/Http/DynamicHttpClientSystem/IHttpClientOptionsInvalidator.cs b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IHttpClientOptionsInvalidator.cs similarity index 91% rename from code/Infrastructure/Http/DynamicHttpClientSystem/IHttpClientOptionsInvalidator.cs rename to code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IHttpClientOptionsInvalidator.cs index 1ec111cd..9020bc85 100644 --- a/code/Infrastructure/Http/DynamicHttpClientSystem/IHttpClientOptionsInvalidator.cs +++ b/code/Cleanuparr.Infrastructure/Http/DynamicHttpClientSystem/IHttpClientOptionsInvalidator.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Http.DynamicHttpClientSystem; +namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Service for invalidating cached HTTP client configurations diff --git a/code/Infrastructure/Http/IDynamicHttpClientProvider.cs b/code/Cleanuparr.Infrastructure/Http/IDynamicHttpClientProvider.cs similarity index 84% rename from code/Infrastructure/Http/IDynamicHttpClientProvider.cs rename to code/Cleanuparr.Infrastructure/Http/IDynamicHttpClientProvider.cs index e5541829..ba47885a 100644 --- a/code/Infrastructure/Http/IDynamicHttpClientProvider.cs +++ b/code/Cleanuparr.Infrastructure/Http/IDynamicHttpClientProvider.cs @@ -1,6 +1,6 @@ -using Common.Configuration; +using Cleanuparr.Persistence.Models.Configuration; -namespace Infrastructure.Http; +namespace Cleanuparr.Infrastructure.Http; /// /// Interface for a provider that creates HTTP clients dynamically based on client configuration diff --git a/code/Infrastructure/Hubs/AppHub.cs b/code/Cleanuparr.Infrastructure/Hubs/AppHub.cs similarity index 95% rename from code/Infrastructure/Hubs/AppHub.cs rename to code/Cleanuparr.Infrastructure/Hubs/AppHub.cs index c82e1f38..8fc68433 100644 --- a/code/Infrastructure/Hubs/AppHub.cs +++ b/code/Cleanuparr.Infrastructure/Hubs/AppHub.cs @@ -1,10 +1,10 @@ -using Data; -using Infrastructure.Logging; +using Cleanuparr.Infrastructure.Logging; +using Cleanuparr.Persistence; using Microsoft.AspNetCore.SignalR; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; -namespace Infrastructure.Hubs; +namespace Cleanuparr.Infrastructure.Hubs; /// /// Unified SignalR hub for logs and events diff --git a/code/Infrastructure/Interceptors/DryRunInterceptor.cs b/code/Cleanuparr.Infrastructure/Interceptors/DryRunInterceptor.cs similarity index 94% rename from code/Infrastructure/Interceptors/DryRunInterceptor.cs rename to code/Cleanuparr.Infrastructure/Interceptors/DryRunInterceptor.cs index b6b3a506..631bbeba 100644 --- a/code/Infrastructure/Interceptors/DryRunInterceptor.cs +++ b/code/Cleanuparr.Infrastructure/Interceptors/DryRunInterceptor.cs @@ -1,9 +1,10 @@ using System.Reflection; -using Data; -using Microsoft.Extensions.Logging; +using Cleanuparr.Persistence; +using Infrastructure.Interceptors; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; -namespace Infrastructure.Interceptors; +namespace Cleanuparr.Infrastructure.Interceptors; public class DryRunInterceptor : IDryRunInterceptor { diff --git a/code/Infrastructure/Interceptors/IDryRunInterceptor.cs b/code/Cleanuparr.Infrastructure/Interceptors/IDryRunInterceptor.cs similarity index 100% rename from code/Infrastructure/Interceptors/IDryRunInterceptor.cs rename to code/Cleanuparr.Infrastructure/Interceptors/IDryRunInterceptor.cs diff --git a/code/Infrastructure/Logging/LogBuffer.cs b/code/Cleanuparr.Infrastructure/Logging/LogBuffer.cs similarity index 95% rename from code/Infrastructure/Logging/LogBuffer.cs rename to code/Cleanuparr.Infrastructure/Logging/LogBuffer.cs index 0472248c..052c4d17 100644 --- a/code/Infrastructure/Logging/LogBuffer.cs +++ b/code/Cleanuparr.Infrastructure/Logging/LogBuffer.cs @@ -1,6 +1,6 @@ using System.Collections.Concurrent; -namespace Infrastructure.Logging; +namespace Cleanuparr.Infrastructure.Logging; /// /// Maintains a buffer of recent log entries for newly connected clients diff --git a/code/Infrastructure/Logging/LoggingConfigManager.cs b/code/Cleanuparr.Infrastructure/Logging/LoggingConfigManager.cs similarity index 95% rename from code/Infrastructure/Logging/LoggingConfigManager.cs rename to code/Cleanuparr.Infrastructure/Logging/LoggingConfigManager.cs index 362ea2c0..80b7d196 100644 --- a/code/Infrastructure/Logging/LoggingConfigManager.cs +++ b/code/Cleanuparr.Infrastructure/Logging/LoggingConfigManager.cs @@ -1,10 +1,10 @@ -using Data; +using Cleanuparr.Persistence; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Serilog.Core; using Serilog.Events; -namespace Infrastructure.Logging; +namespace Cleanuparr.Infrastructure.Logging; /// /// Manages logging configuration and provides dynamic log level control diff --git a/code/Infrastructure/Logging/LoggingInitializer.cs b/code/Cleanuparr.Infrastructure/Logging/LoggingInitializer.cs similarity index 92% rename from code/Infrastructure/Logging/LoggingInitializer.cs rename to code/Cleanuparr.Infrastructure/Logging/LoggingInitializer.cs index effd1b3b..14a61256 100644 --- a/code/Infrastructure/Logging/LoggingInitializer.cs +++ b/code/Cleanuparr.Infrastructure/Logging/LoggingInitializer.cs @@ -1,11 +1,11 @@ -using Data.Enums; -using Infrastructure.Events; -using Infrastructure.Helpers; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Events; +using Cleanuparr.Infrastructure.Helpers; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Serilog.Context; -namespace Infrastructure.Logging; +namespace Cleanuparr.Infrastructure.Logging; // TODO remove public class LoggingInitializer : BackgroundService diff --git a/code/Infrastructure/Logging/README.md b/code/Cleanuparr.Infrastructure/Logging/README.md similarity index 100% rename from code/Infrastructure/Logging/README.md rename to code/Cleanuparr.Infrastructure/Logging/README.md diff --git a/code/Infrastructure/Logging/SignalRLogSink.cs b/code/Cleanuparr.Infrastructure/Logging/SignalRLogSink.cs similarity index 97% rename from code/Infrastructure/Logging/SignalRLogSink.cs rename to code/Cleanuparr.Infrastructure/Logging/SignalRLogSink.cs index b728670b..00e971f1 100644 --- a/code/Infrastructure/Logging/SignalRLogSink.cs +++ b/code/Cleanuparr.Infrastructure/Logging/SignalRLogSink.cs @@ -1,13 +1,13 @@ using System.Collections.Concurrent; using System.Globalization; -using Infrastructure.Hubs; +using Cleanuparr.Infrastructure.Hubs; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; using Serilog.Core; using Serilog.Events; using Serilog.Formatting.Display; -namespace Infrastructure.Logging; +namespace Cleanuparr.Infrastructure.Logging; /// /// A Serilog sink that sends log events to SignalR clients diff --git a/code/Infrastructure/Models/JobInfo.cs b/code/Cleanuparr.Infrastructure/Models/JobInfo.cs similarity index 88% rename from code/Infrastructure/Models/JobInfo.cs rename to code/Cleanuparr.Infrastructure/Models/JobInfo.cs index 5a7791d7..005ac7a0 100644 --- a/code/Infrastructure/Models/JobInfo.cs +++ b/code/Cleanuparr.Infrastructure/Models/JobInfo.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Models; +namespace Cleanuparr.Infrastructure.Models; public class JobInfo { diff --git a/code/Infrastructure/Models/JobSchedule.cs b/code/Cleanuparr.Infrastructure/Models/JobSchedule.cs similarity index 94% rename from code/Infrastructure/Models/JobSchedule.cs rename to code/Cleanuparr.Infrastructure/Models/JobSchedule.cs index a425a885..9d76f6ab 100644 --- a/code/Infrastructure/Models/JobSchedule.cs +++ b/code/Cleanuparr.Infrastructure/Models/JobSchedule.cs @@ -1,7 +1,7 @@ -using Infrastructure.Utilities; using System.ComponentModel.DataAnnotations; +using Cleanuparr.Infrastructure.Utilities; -namespace Infrastructure.Models; +namespace Cleanuparr.Infrastructure.Models; /// /// Represents the unit of time for job scheduling intervals diff --git a/code/Infrastructure/Models/JobType.cs b/code/Cleanuparr.Infrastructure/Models/JobType.cs similarity index 95% rename from code/Infrastructure/Models/JobType.cs rename to code/Cleanuparr.Infrastructure/Models/JobType.cs index 80138443..ea6a27d0 100644 --- a/code/Infrastructure/Models/JobType.cs +++ b/code/Cleanuparr.Infrastructure/Models/JobType.cs @@ -1,4 +1,4 @@ -namespace Infrastructure.Models; +namespace Cleanuparr.Infrastructure.Models; /// /// Represents the supported job types in the application diff --git a/code/Infrastructure/Services/CertificateValidationService.cs b/code/Cleanuparr.Infrastructure/Services/CertificateValidationService.cs similarity index 95% rename from code/Infrastructure/Services/CertificateValidationService.cs rename to code/Cleanuparr.Infrastructure/Services/CertificateValidationService.cs index 20768fde..e9976075 100644 --- a/code/Infrastructure/Services/CertificateValidationService.cs +++ b/code/Cleanuparr.Infrastructure/Services/CertificateValidationService.cs @@ -1,11 +1,11 @@ using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; -using Common.Enums; -using Infrastructure.Extensions; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Infrastructure.Extensions; using Microsoft.Extensions.Logging; -namespace Infrastructure.Services; +namespace Cleanuparr.Infrastructure.Services; public class CertificateValidationService { diff --git a/code/Infrastructure/Services/Interfaces/IJobManagementService.cs b/code/Cleanuparr.Infrastructure/Services/Interfaces/IJobManagementService.cs similarity index 92% rename from code/Infrastructure/Services/Interfaces/IJobManagementService.cs rename to code/Cleanuparr.Infrastructure/Services/Interfaces/IJobManagementService.cs index 095bd346..7e982103 100644 --- a/code/Infrastructure/Services/Interfaces/IJobManagementService.cs +++ b/code/Cleanuparr.Infrastructure/Services/Interfaces/IJobManagementService.cs @@ -1,4 +1,4 @@ -using Infrastructure.Models; +using Cleanuparr.Infrastructure.Models; namespace Infrastructure.Services.Interfaces; diff --git a/code/Infrastructure/Services/JobManagementService.cs b/code/Cleanuparr.Infrastructure/Services/JobManagementService.cs similarity index 99% rename from code/Infrastructure/Services/JobManagementService.cs rename to code/Cleanuparr.Infrastructure/Services/JobManagementService.cs index b83d14d3..85272f11 100644 --- a/code/Infrastructure/Services/JobManagementService.cs +++ b/code/Cleanuparr.Infrastructure/Services/JobManagementService.cs @@ -1,13 +1,12 @@ -using Common.Configuration; -using Infrastructure.Models; -using Infrastructure.Utilities; +using System.Collections.Concurrent; +using Cleanuparr.Infrastructure.Models; +using Cleanuparr.Infrastructure.Utilities; +using Infrastructure.Services.Interfaces; using Microsoft.Extensions.Logging; using Quartz; -using System.Collections.Concurrent; -using Infrastructure.Services.Interfaces; using Quartz.Impl.Matchers; -namespace Infrastructure.Services; +namespace Cleanuparr.Infrastructure.Services; public class JobManagementService : IJobManagementService { diff --git a/code/Infrastructure/Services/UriService.cs b/code/Cleanuparr.Infrastructure/Services/UriService.cs similarity index 94% rename from code/Infrastructure/Services/UriService.cs rename to code/Cleanuparr.Infrastructure/Services/UriService.cs index aa8ed7fd..91f8994f 100644 --- a/code/Infrastructure/Services/UriService.cs +++ b/code/Cleanuparr.Infrastructure/Services/UriService.cs @@ -1,6 +1,6 @@ using System.Text.RegularExpressions; -namespace Infrastructure.Services; +namespace Cleanuparr.Infrastructure.Services; public static class UriService { diff --git a/code/Infrastructure/Utilities/CronExpressionConverter.cs b/code/Cleanuparr.Infrastructure/Utilities/CronExpressionConverter.cs similarity index 98% rename from code/Infrastructure/Utilities/CronExpressionConverter.cs rename to code/Cleanuparr.Infrastructure/Utilities/CronExpressionConverter.cs index 765d4247..11ecb662 100644 --- a/code/Infrastructure/Utilities/CronExpressionConverter.cs +++ b/code/Cleanuparr.Infrastructure/Utilities/CronExpressionConverter.cs @@ -1,8 +1,8 @@ -using Infrastructure.Models; using System.ComponentModel.DataAnnotations; +using Cleanuparr.Infrastructure.Models; using Quartz; -namespace Infrastructure.Utilities; +namespace Cleanuparr.Infrastructure.Utilities; /// /// Utility for converting user-friendly schedule formats to Quartz cron expressions diff --git a/code/Infrastructure/Utilities/ScheduleOptions.cs b/code/Cleanuparr.Infrastructure/Utilities/ScheduleOptions.cs similarity index 95% rename from code/Infrastructure/Utilities/ScheduleOptions.cs rename to code/Cleanuparr.Infrastructure/Utilities/ScheduleOptions.cs index cf6f0fb0..59f42eac 100644 --- a/code/Infrastructure/Utilities/ScheduleOptions.cs +++ b/code/Cleanuparr.Infrastructure/Utilities/ScheduleOptions.cs @@ -1,6 +1,6 @@ -using Infrastructure.Models; +using Cleanuparr.Infrastructure.Models; -namespace Infrastructure.Utilities; +namespace Cleanuparr.Infrastructure.Utilities; /// /// Provides predefined valid scheduling options for different time units diff --git a/code/Data/Data.csproj b/code/Cleanuparr.Persistence/Cleanuparr.Persistence.csproj similarity index 54% rename from code/Data/Data.csproj rename to code/Cleanuparr.Persistence/Cleanuparr.Persistence.csproj index c20c4920..bea9d649 100644 --- a/code/Data/Data.csproj +++ b/code/Cleanuparr.Persistence/Cleanuparr.Persistence.csproj @@ -6,19 +6,22 @@ enable + + + + - - - + + + + + - - - - - + + diff --git a/code/Data/Converters/LowercaseEnumConverter.cs b/code/Cleanuparr.Persistence/Converters/LowercaseEnumConverter.cs similarity index 87% rename from code/Data/Converters/LowercaseEnumConverter.cs rename to code/Cleanuparr.Persistence/Converters/LowercaseEnumConverter.cs index 7260d698..345255f3 100644 --- a/code/Data/Converters/LowercaseEnumConverter.cs +++ b/code/Cleanuparr.Persistence/Converters/LowercaseEnumConverter.cs @@ -1,6 +1,6 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -namespace Data.Converters; +namespace Cleanuparr.Persistence.Converters; public class LowercaseEnumConverter : ValueConverter where TEnum : struct, Enum diff --git a/code/Data/Converters/UtcDateTimeConverter.cs b/code/Cleanuparr.Persistence/Converters/UtcDateTimeConverter.cs similarity index 85% rename from code/Data/Converters/UtcDateTimeConverter.cs rename to code/Cleanuparr.Persistence/Converters/UtcDateTimeConverter.cs index e9f58885..db483ca9 100644 --- a/code/Data/Converters/UtcDateTimeConverter.cs +++ b/code/Cleanuparr.Persistence/Converters/UtcDateTimeConverter.cs @@ -1,6 +1,6 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -namespace Data.Converters; +namespace Cleanuparr.Persistence.Converters; public class UtcDateTimeConverter : ValueConverter { diff --git a/code/Data/DataContext.cs b/code/Cleanuparr.Persistence/DataContext.cs similarity index 84% rename from code/Data/DataContext.cs rename to code/Cleanuparr.Persistence/DataContext.cs index 1ddff922..cc773416 100644 --- a/code/Data/DataContext.cs +++ b/code/Cleanuparr.Persistence/DataContext.cs @@ -1,15 +1,15 @@ -using Common.Configuration; -using Data.Models.Configuration.Arr; -using Data.Models.Configuration.DownloadCleaner; -using Data.Models.Configuration.General; -using Data.Models.Configuration.Notification; -using Data.Models.Configuration.QueueCleaner; -using Common.Helpers; -using Data.Converters; +using Cleanuparr.Persistence.Converters; +using Cleanuparr.Persistence.Models.Configuration; +using Cleanuparr.Persistence.Models.Configuration.Arr; +using Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; +using Cleanuparr.Persistence.Models.Configuration.General; +using Cleanuparr.Persistence.Models.Configuration.Notification; +using Cleanuparr.Persistence.Models.Configuration.QueueCleaner; +using Cleanuparr.Shared.Helpers; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -namespace Data; +namespace Cleanuparr.Persistence; /// /// Database context for configuration data @@ -86,7 +86,7 @@ public class DataContext : DbContext modelBuilder.Entity(entityType.ClrType) .Property(property.Name) - .HasConversion((ValueConverter)converter); + .HasConversion((ValueConverter)converter!); } } } diff --git a/code/Data/EventsContext.cs b/code/Cleanuparr.Persistence/EventsContext.cs similarity index 93% rename from code/Data/EventsContext.cs rename to code/Cleanuparr.Persistence/EventsContext.cs index 1aa8e3fe..25074d3f 100644 --- a/code/Data/EventsContext.cs +++ b/code/Cleanuparr.Persistence/EventsContext.cs @@ -1,10 +1,10 @@ -using Common.Helpers; -using Data.Converters; -using Data.Models.Events; +using Cleanuparr.Persistence.Converters; +using Cleanuparr.Persistence.Models.Events; +using Cleanuparr.Shared.Helpers; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -namespace Data; +namespace Cleanuparr.Persistence; /// /// Database context for events diff --git a/code/Data/Migrations/Data/20250615190608_InitialData.Designer.cs b/code/Cleanuparr.Persistence/Migrations/Data/20250615190608_InitialData.Designer.cs similarity index 99% rename from code/Data/Migrations/Data/20250615190608_InitialData.Designer.cs rename to code/Cleanuparr.Persistence/Migrations/Data/20250615190608_InitialData.Designer.cs index 526857ad..f11df38d 100644 --- a/code/Data/Migrations/Data/20250615190608_InitialData.Designer.cs +++ b/code/Cleanuparr.Persistence/Migrations/Data/20250615190608_InitialData.Designer.cs @@ -1,15 +1,13 @@ // -using System; -using System.Collections.Generic; + +#nullable disable + using Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -#nullable disable - -namespace Data.Migrations.Data +namespace Cleanuparr.Persistence.Migrations.Data { [DbContext(typeof(DataContext))] [Migration("20250615190608_InitialData")] diff --git a/code/Data/Migrations/Data/20250615190608_InitialData.cs b/code/Cleanuparr.Persistence/Migrations/Data/20250615190608_InitialData.cs similarity index 99% rename from code/Data/Migrations/Data/20250615190608_InitialData.cs rename to code/Cleanuparr.Persistence/Migrations/Data/20250615190608_InitialData.cs index cd192be3..44953c3b 100644 --- a/code/Data/Migrations/Data/20250615190608_InitialData.cs +++ b/code/Cleanuparr.Persistence/Migrations/Data/20250615190608_InitialData.cs @@ -1,9 +1,8 @@ -using System; +#nullable disable + using Microsoft.EntityFrameworkCore.Migrations; -#nullable disable - -namespace Data.Migrations.Data +namespace Cleanuparr.Persistence.Migrations.Data { /// public partial class InitialData : Migration diff --git a/code/Data/Migrations/Data/DataContextModelSnapshot.cs b/code/Cleanuparr.Persistence/Migrations/Data/DataContextModelSnapshot.cs similarity index 99% rename from code/Data/Migrations/Data/DataContextModelSnapshot.cs rename to code/Cleanuparr.Persistence/Migrations/Data/DataContextModelSnapshot.cs index db68d83d..1a37d30e 100644 --- a/code/Data/Migrations/Data/DataContextModelSnapshot.cs +++ b/code/Cleanuparr.Persistence/Migrations/Data/DataContextModelSnapshot.cs @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Data.Migrations.Data +namespace Cleanuparr.Persistence.Migrations.Data { [DbContext(typeof(DataContext))] partial class DataContextModelSnapshot : ModelSnapshot diff --git a/code/Data/Migrations/Events/20250614211246_InitialEvents.Designer.cs b/code/Cleanuparr.Persistence/Migrations/Events/20250614211246_InitialEvents.Designer.cs similarity index 95% rename from code/Data/Migrations/Events/20250614211246_InitialEvents.Designer.cs rename to code/Cleanuparr.Persistence/Migrations/Events/20250614211246_InitialEvents.Designer.cs index 88f194f9..001a9903 100644 --- a/code/Data/Migrations/Events/20250614211246_InitialEvents.Designer.cs +++ b/code/Cleanuparr.Persistence/Migrations/Events/20250614211246_InitialEvents.Designer.cs @@ -1,14 +1,13 @@ // -using System; + +#nullable disable + using Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -#nullable disable - -namespace Data.Migrations.Events +namespace Cleanuparr.Persistence.Migrations.Events { [DbContext(typeof(EventsContext))] [Migration("20250614211246_InitialEvents")] diff --git a/code/Data/Migrations/Events/20250614211246_InitialEvents.cs b/code/Cleanuparr.Persistence/Migrations/Events/20250614211246_InitialEvents.cs similarity index 96% rename from code/Data/Migrations/Events/20250614211246_InitialEvents.cs rename to code/Cleanuparr.Persistence/Migrations/Events/20250614211246_InitialEvents.cs index fb2c0bdc..7de7b0b2 100644 --- a/code/Data/Migrations/Events/20250614211246_InitialEvents.cs +++ b/code/Cleanuparr.Persistence/Migrations/Events/20250614211246_InitialEvents.cs @@ -1,9 +1,8 @@ -using System; +#nullable disable + using Microsoft.EntityFrameworkCore.Migrations; -#nullable disable - -namespace Data.Migrations.Events +namespace Cleanuparr.Persistence.Migrations.Events { /// public partial class InitialEvents : Migration diff --git a/code/Data/Migrations/Events/EventsContextModelSnapshot.cs b/code/Cleanuparr.Persistence/Migrations/Events/EventsContextModelSnapshot.cs similarity index 98% rename from code/Data/Migrations/Events/EventsContextModelSnapshot.cs rename to code/Cleanuparr.Persistence/Migrations/Events/EventsContextModelSnapshot.cs index aa343358..8d12fea2 100644 --- a/code/Data/Migrations/Events/EventsContextModelSnapshot.cs +++ b/code/Cleanuparr.Persistence/Migrations/Events/EventsContextModelSnapshot.cs @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Data.Migrations.Events +namespace Cleanuparr.Persistence.Migrations.Events { [DbContext(typeof(EventsContext))] partial class EventsContextModelSnapshot : ModelSnapshot diff --git a/code/Data/Models/Configuration/Arr/ArrConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/Arr/ArrConfig.cs similarity index 84% rename from code/Data/Models/Configuration/Arr/ArrConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/Arr/ArrConfig.cs index 30447aa0..3dc0b3ea 100644 --- a/code/Data/Models/Configuration/Arr/ArrConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/Arr/ArrConfig.cs @@ -1,9 +1,8 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Common.Configuration; -using Data.Enums; +using Cleanuparr.Domain.Enums; -namespace Data.Models.Configuration.Arr; +namespace Cleanuparr.Persistence.Models.Configuration.Arr; public class ArrConfig : IConfig { diff --git a/code/Data/Models/Configuration/Arr/ArrInstance.cs b/code/Cleanuparr.Persistence/Models/Configuration/Arr/ArrInstance.cs similarity index 84% rename from code/Data/Models/Configuration/Arr/ArrInstance.cs rename to code/Cleanuparr.Persistence/Models/Configuration/Arr/ArrInstance.cs index c76c8f65..387d4a9b 100644 --- a/code/Data/Models/Configuration/Arr/ArrInstance.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/Arr/ArrInstance.cs @@ -1,8 +1,8 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Common.Attributes; +using Cleanuparr.Shared.Attributes; -namespace Data.Models.Configuration.Arr; +namespace Cleanuparr.Persistence.Models.Configuration.Arr; public sealed class ArrInstance { diff --git a/code/Data/Models/Configuration/DownloadCleaner/CleanCategory.cs b/code/Cleanuparr.Persistence/Models/Configuration/DownloadCleaner/CleanCategory.cs similarity index 89% rename from code/Data/Models/Configuration/DownloadCleaner/CleanCategory.cs rename to code/Cleanuparr.Persistence/Models/Configuration/DownloadCleaner/CleanCategory.cs index a9a475da..2e5a8f7b 100644 --- a/code/Data/Models/Configuration/DownloadCleaner/CleanCategory.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/DownloadCleaner/CleanCategory.cs @@ -1,9 +1,8 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Common.Configuration; -using ValidationException = Common.Exceptions.ValidationException; +using ValidationException = Cleanuparr.Domain.Exceptions.ValidationException; -namespace Data.Models.Configuration.DownloadCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; public sealed record CleanCategory : IConfig { diff --git a/code/Data/Models/Configuration/DownloadCleaner/DownloadCleanerConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/DownloadCleaner/DownloadCleanerConfig.cs similarity index 94% rename from code/Data/Models/Configuration/DownloadCleaner/DownloadCleanerConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/DownloadCleaner/DownloadCleanerConfig.cs index a00e8b1d..8c992fb3 100644 --- a/code/Data/Models/Configuration/DownloadCleaner/DownloadCleanerConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/DownloadCleaner/DownloadCleanerConfig.cs @@ -1,9 +1,8 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Common.Configuration; -using ValidationException = Common.Exceptions.ValidationException; +using ValidationException = Cleanuparr.Domain.Exceptions.ValidationException; -namespace Data.Models.Configuration.DownloadCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.DownloadCleaner; public sealed record DownloadCleanerConfig : IJobConfig { diff --git a/code/Data/Models/Configuration/DownloadClientConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/DownloadClientConfig.cs similarity index 93% rename from code/Data/Models/Configuration/DownloadClientConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/DownloadClientConfig.cs index fa81943e..dca67711 100644 --- a/code/Data/Models/Configuration/DownloadClientConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/DownloadClientConfig.cs @@ -1,10 +1,10 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; -using Common.Attributes; -using Common.Enums; -using Common.Exceptions; +using Cleanuparr.Domain.Enums; +using Cleanuparr.Domain.Exceptions; +using Cleanuparr.Shared.Attributes; -namespace Common.Configuration; +namespace Cleanuparr.Persistence.Models.Configuration; /// /// Configuration for a specific download client diff --git a/code/Data/Models/Configuration/General/GeneralConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/General/GeneralConfig.cs similarity index 85% rename from code/Data/Models/Configuration/General/GeneralConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/General/GeneralConfig.cs index d2674047..6a5660de 100644 --- a/code/Data/Models/Configuration/General/GeneralConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/General/GeneralConfig.cs @@ -1,11 +1,10 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Common.Configuration; -using Common.Enums; +using Cleanuparr.Domain.Enums; using Serilog.Events; -using ValidationException = Common.Exceptions.ValidationException; +using ValidationException = Cleanuparr.Domain.Exceptions.ValidationException; -namespace Data.Models.Configuration.General; +namespace Cleanuparr.Persistence.Models.Configuration.General; public sealed record GeneralConfig : IConfig { diff --git a/code/Cleanuparr.Persistence/Models/Configuration/IConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/IConfig.cs new file mode 100644 index 00000000..6330638e --- /dev/null +++ b/code/Cleanuparr.Persistence/Models/Configuration/IConfig.cs @@ -0,0 +1,6 @@ +namespace Cleanuparr.Persistence.Models.Configuration; + +public interface IConfig +{ + void Validate(); +} \ No newline at end of file diff --git a/code/Data/Models/Configuration/IJobConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/IJobConfig.cs similarity index 84% rename from code/Data/Models/Configuration/IJobConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/IJobConfig.cs index 94c468af..d2ee9115 100644 --- a/code/Data/Models/Configuration/IJobConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/IJobConfig.cs @@ -1,4 +1,4 @@ -namespace Common.Configuration; +namespace Cleanuparr.Persistence.Models.Configuration; public interface IJobConfig : IConfig { diff --git a/code/Data/Models/Configuration/Notification/AppriseConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/Notification/AppriseConfig.cs similarity index 84% rename from code/Data/Models/Configuration/Notification/AppriseConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/Notification/AppriseConfig.cs index d1905741..fbbd7de0 100644 --- a/code/Data/Models/Configuration/Notification/AppriseConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/Notification/AppriseConfig.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Configuration.Notification; +namespace Cleanuparr.Persistence.Models.Configuration.Notification; public sealed record AppriseConfig : NotificationConfig { diff --git a/code/Data/Models/Configuration/Notification/NotifiarrConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/Notification/NotifiarrConfig.cs similarity index 85% rename from code/Data/Models/Configuration/Notification/NotifiarrConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/Notification/NotifiarrConfig.cs index 8cde407e..10b9a70a 100644 --- a/code/Data/Models/Configuration/Notification/NotifiarrConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/Notification/NotifiarrConfig.cs @@ -1,4 +1,4 @@ -namespace Data.Models.Configuration.Notification; +namespace Cleanuparr.Persistence.Models.Configuration.Notification; public sealed record NotifiarrConfig : NotificationConfig { diff --git a/code/Data/Models/Configuration/Notification/NotificationConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/Notification/NotificationConfig.cs similarity index 92% rename from code/Data/Models/Configuration/Notification/NotificationConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/Notification/NotificationConfig.cs index dfc3040a..c6522834 100644 --- a/code/Data/Models/Configuration/Notification/NotificationConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/Notification/NotificationConfig.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -namespace Data.Models.Configuration.Notification; +namespace Cleanuparr.Persistence.Models.Configuration.Notification; public abstract record NotificationConfig { diff --git a/code/Data/Models/Configuration/QueueCleaner/BlocklistSettings.cs b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/BlocklistSettings.cs similarity index 73% rename from code/Data/Models/Configuration/QueueCleaner/BlocklistSettings.cs rename to code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/BlocklistSettings.cs index ded9b14a..9eea9ba4 100644 --- a/code/Data/Models/Configuration/QueueCleaner/BlocklistSettings.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/BlocklistSettings.cs @@ -1,6 +1,7 @@ using System.ComponentModel.DataAnnotations.Schema; +using Cleanuparr.Domain.Enums; -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.QueueCleaner; /// /// Settings for a blocklist diff --git a/code/Data/Models/Configuration/QueueCleaner/ContentBlockerConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/ContentBlockerConfig.cs similarity index 87% rename from code/Data/Models/Configuration/QueueCleaner/ContentBlockerConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/ContentBlockerConfig.cs index 6136eb73..20a9593a 100644 --- a/code/Data/Models/Configuration/QueueCleaner/ContentBlockerConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/ContentBlockerConfig.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations.Schema; -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.QueueCleaner; [ComplexType] public sealed record ContentBlockerConfig diff --git a/code/Data/Models/Configuration/QueueCleaner/FailedImportConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/FailedImportConfig.cs similarity index 83% rename from code/Data/Models/Configuration/QueueCleaner/FailedImportConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/FailedImportConfig.cs index 50f4c0d5..ee6073ad 100644 --- a/code/Data/Models/Configuration/QueueCleaner/FailedImportConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/FailedImportConfig.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations.Schema; -using Common.Exceptions; +using Cleanuparr.Domain.Exceptions; -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.QueueCleaner; [ComplexType] public sealed record FailedImportConfig diff --git a/code/Data/Models/Configuration/QueueCleaner/QueueCleanerConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/QueueCleanerConfig.cs similarity index 92% rename from code/Data/Models/Configuration/QueueCleaner/QueueCleanerConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/QueueCleanerConfig.cs index c2064d8f..c1dc1471 100644 --- a/code/Data/Models/Configuration/QueueCleaner/QueueCleanerConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/QueueCleanerConfig.cs @@ -1,8 +1,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Common.Configuration; -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.QueueCleaner; public sealed record QueueCleanerConfig : IJobConfig { diff --git a/code/Data/Models/Configuration/QueueCleaner/SlowConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/SlowConfig.cs similarity index 93% rename from code/Data/Models/Configuration/QueueCleaner/SlowConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/SlowConfig.cs index 2e5c72fa..7a15a0ec 100644 --- a/code/Data/Models/Configuration/QueueCleaner/SlowConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/SlowConfig.cs @@ -1,9 +1,9 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; -using Common.CustomDataTypes; -using Common.Exceptions; +using Cleanuparr.Domain.Entities; +using Cleanuparr.Domain.Exceptions; -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.QueueCleaner; [ComplexType] public sealed record SlowConfig diff --git a/code/Data/Models/Configuration/QueueCleaner/StalledConfig.cs b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/StalledConfig.cs similarity index 88% rename from code/Data/Models/Configuration/QueueCleaner/StalledConfig.cs rename to code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/StalledConfig.cs index 5e0c1141..c5d2fb8a 100644 --- a/code/Data/Models/Configuration/QueueCleaner/StalledConfig.cs +++ b/code/Cleanuparr.Persistence/Models/Configuration/QueueCleaner/StalledConfig.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations.Schema; -using Common.Exceptions; +using Cleanuparr.Domain.Exceptions; -namespace Data.Models.Configuration.QueueCleaner; +namespace Cleanuparr.Persistence.Models.Configuration.QueueCleaner; [ComplexType] public sealed record StalledConfig diff --git a/code/Data/Models/Events/AppEvent.cs b/code/Cleanuparr.Persistence/Models/Events/AppEvent.cs similarity index 87% rename from code/Data/Models/Events/AppEvent.cs rename to code/Cleanuparr.Persistence/Models/Events/AppEvent.cs index 8b0ebcf3..2a1474d5 100644 --- a/code/Data/Models/Events/AppEvent.cs +++ b/code/Cleanuparr.Persistence/Models/Events/AppEvent.cs @@ -1,10 +1,8 @@ using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Globalization; -using Data.Enums; +using Cleanuparr.Domain.Enums; using Microsoft.EntityFrameworkCore; -namespace Data.Models.Events; +namespace Cleanuparr.Persistence.Models.Events; /// /// Represents an event in the system diff --git a/code/Common/Attributes/SensitiveDataAttribute.cs b/code/Cleanuparr.Shared/Attributes/SensitiveDataAttribute.cs similarity index 85% rename from code/Common/Attributes/SensitiveDataAttribute.cs rename to code/Cleanuparr.Shared/Attributes/SensitiveDataAttribute.cs index 9c45758f..b3de69dd 100644 --- a/code/Common/Attributes/SensitiveDataAttribute.cs +++ b/code/Cleanuparr.Shared/Attributes/SensitiveDataAttribute.cs @@ -1,4 +1,4 @@ -namespace Common.Attributes; +namespace Cleanuparr.Shared.Attributes; /// /// Marks a property as containing sensitive data that should be encrypted when stored in configuration files. diff --git a/code/Cleanuparr.Shared/Cleanuparr.Shared.csproj b/code/Cleanuparr.Shared/Cleanuparr.Shared.csproj new file mode 100644 index 00000000..17b910f6 --- /dev/null +++ b/code/Cleanuparr.Shared/Cleanuparr.Shared.csproj @@ -0,0 +1,9 @@ + + + + net9.0 + enable + enable + + + diff --git a/code/Common/Helpers/ConfigurationPathProvider.cs b/code/Cleanuparr.Shared/Helpers/ConfigurationPathProvider.cs similarity index 98% rename from code/Common/Helpers/ConfigurationPathProvider.cs rename to code/Cleanuparr.Shared/Helpers/ConfigurationPathProvider.cs index d9e5f7ad..618f5756 100644 --- a/code/Common/Helpers/ConfigurationPathProvider.cs +++ b/code/Cleanuparr.Shared/Helpers/ConfigurationPathProvider.cs @@ -1,4 +1,4 @@ -namespace Common.Helpers; +namespace Cleanuparr.Shared.Helpers; /// /// Provides the appropriate configuration path based on the runtime environment. diff --git a/code/Common/Helpers/Constants.cs b/code/Cleanuparr.Shared/Helpers/Constants.cs similarity index 88% rename from code/Common/Helpers/Constants.cs rename to code/Cleanuparr.Shared/Helpers/Constants.cs index 8e7de886..4c1d0fc8 100644 --- a/code/Common/Helpers/Constants.cs +++ b/code/Cleanuparr.Shared/Helpers/Constants.cs @@ -1,4 +1,4 @@ -namespace Common.Helpers; +namespace Cleanuparr.Shared.Helpers; public static class Constants { diff --git a/code/Common/Helpers/StaticConfiguration.cs b/code/Cleanuparr.Shared/Helpers/StaticConfiguration.cs similarity index 73% rename from code/Common/Helpers/StaticConfiguration.cs rename to code/Cleanuparr.Shared/Helpers/StaticConfiguration.cs index 225df86e..cf596c94 100644 --- a/code/Common/Helpers/StaticConfiguration.cs +++ b/code/Cleanuparr.Shared/Helpers/StaticConfiguration.cs @@ -1,4 +1,4 @@ -namespace Common.Helpers; +namespace Cleanuparr.Shared.Helpers; public static class StaticConfiguration { diff --git a/code/Data/Models/Arr/Blocking/BlockedItem.cs b/code/Data/Models/Arr/Blocking/BlockedItem.cs deleted file mode 100644 index 9ba081b1..00000000 --- a/code/Data/Models/Arr/Blocking/BlockedItem.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Data.Models.Arr.Blocking; - -public record BlockedItem -{ - public required string Hash { get; init; } - - public required Uri InstanceUrl { get; init; } -} \ No newline at end of file diff --git a/code/Data/Models/Arr/Blocking/LidarrBlockedItem.cs b/code/Data/Models/Arr/Blocking/LidarrBlockedItem.cs deleted file mode 100644 index c72f37bd..00000000 --- a/code/Data/Models/Arr/Blocking/LidarrBlockedItem.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Data.Models.Arr.Blocking; - -public sealed record LidarrBlockedItem : BlockedItem -{ - public required long AlbumId { get; init; } - - public required long ArtistId { get; init; } -} \ No newline at end of file diff --git a/code/Data/Models/Arr/Blocking/RadarrBlockedItem.cs b/code/Data/Models/Arr/Blocking/RadarrBlockedItem.cs deleted file mode 100644 index 360c5adb..00000000 --- a/code/Data/Models/Arr/Blocking/RadarrBlockedItem.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Data.Models.Arr.Blocking; - -public sealed record RadarrBlockedItem : BlockedItem -{ - public required long MovieId { get; init; } -} \ No newline at end of file diff --git a/code/Data/Models/Arr/Blocking/SonarrBlockedItem.cs b/code/Data/Models/Arr/Blocking/SonarrBlockedItem.cs deleted file mode 100644 index 1abb0084..00000000 --- a/code/Data/Models/Arr/Blocking/SonarrBlockedItem.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Data.Models.Arr.Blocking; - -public sealed record SonarrBlockedItem : BlockedItem -{ - public required long EpisodeId { get; init; } - - public required long SeasonNumber { get; init; } - - public required long SeriesId { get; init; } -} \ No newline at end of file diff --git a/code/Data/Models/Configuration/IConfig.cs b/code/Data/Models/Configuration/IConfig.cs deleted file mode 100644 index b653cb3d..00000000 --- a/code/Data/Models/Configuration/IConfig.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Common.Configuration; - -public interface IConfig -{ - void Validate(); -} \ No newline at end of file diff --git a/code/Executable/appsettings.Development.json b/code/Executable/appsettings.Development.json deleted file mode 100644 index 536b1ced..00000000 --- a/code/Executable/appsettings.Development.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "DRY_RUN": true, - "HTTP_MAX_RETRIES": 0, - "HTTP_TIMEOUT": 100, - "HTTP_VALIDATE_CERT": "enabled", - "Logging": { - "LogLevel": "Verbose", - "Enhanced": true, - "File": { - "Enabled": false, - "Path": "" - } - }, - "SEARCH_ENABLED": true, - "SEARCH_DELAY": 5, - "Triggers": { - "QueueCleaner": "0/10 * * * * ?", - "ContentBlocker": "0/10 * * * * ?", - "DownloadCleaner": "0/10 * * * * ?" - }, - "ContentBlocker": { - "Enabled": true, - "IGNORE_PRIVATE": true, - "DELETE_PRIVATE": false, - "IGNORED_DOWNLOADS_PATH": "../test/data/cleanuperr/ignored_downloads" - }, - "QueueCleaner": { - "Enabled": true, - "RunSequentially": true, - "IGNORED_DOWNLOADS_PATH": "../test/data/cleanuperr/ignored_downloads", - "IMPORT_FAILED_MAX_STRIKES": 3, - "IMPORT_FAILED_IGNORE_PRIVATE": true, - "IMPORT_FAILED_DELETE_PRIVATE": false, - "IMPORT_FAILED_IGNORE_PATTERNS": [ - "file is a sample" - ], - "STALLED_MAX_STRIKES": 3, - "STALLED_RESET_STRIKES_ON_PROGRESS": true, - "STALLED_IGNORE_PRIVATE": true, - "STALLED_DELETE_PRIVATE": false, - "DOWNLOADING_METADATA_MAX_STRIKES": 3, - "SLOW_MAX_STRIKES": 5, - "SLOW_RESET_STRIKES_ON_PROGRESS": true, - "SLOW_IGNORE_PRIVATE": false, - "SLOW_DELETE_PRIVATE": false, - "SLOW_MIN_SPEED": "1MB", - "SLOW_MAX_TIME": 20, - "SLOW_IGNORE_ABOVE_SIZE": "4GB" - }, - "DownloadCleaner": { - "Enabled": false, - "DELETE_PRIVATE": false, - "CATEGORIES": [ - { - "Name": "tv-sonarr", - "MAX_RATIO": -1, - "MIN_SEED_TIME": 0, - "MAX_SEED_TIME": 240 - } - ], - "UNLINKED_TARGET_CATEGORY": "cleanuperr-unlinked", - "UNLINKED_USE_TAG": false, - "UNLINKED_IGNORED_ROOT_DIR": "", - "UNLINKED_CATEGORIES": [ - "tv-sonarr", - "radarr" - ], - "IGNORED_DOWNLOADS_PATH": "../test/data/cleanuperr/ignored_downloads" - }, - "DOWNLOAD_CLIENT": "qbittorrent", - "qBittorrent": { - "Url": "http://localhost:8080", - "URL_BASE": "", - "Username": "test", - "Password": "testing" - }, - "Deluge": { - "Url": "http://localhost:8112", - "URL_BASE": "", - "Password": "testing" - }, - "Transmission": { - "Url": "http://localhost:9091", - "URL_BASE": "transmission", - "Username": "test", - "Password": "testing" - }, - "Sonarr": { - "Enabled": true, - "IMPORT_FAILED_MAX_STRIKES": -1, - "SearchType": "Episode", - "Block": { - "Type": "blacklist", - "Path": "https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist" - }, - "Instances": [ - { - "Url": "http://localhost:8989", - "ApiKey": "425d1e713f0c405cbbf359ac0502c1f4" - } - ] - }, - "Radarr": { - "Enabled": true, - "IMPORT_FAILED_MAX_STRIKES": -1, - "Block": { - "Type": "blacklist", - "Path": "https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist" - }, - "Instances": [ - { - "Url": "http://localhost:7878", - "ApiKey": "8b7454f668e54c5b8f44f56f93969761" - } - ] - }, - "Lidarr": { - "Enabled": true, - "IMPORT_FAILED_MAX_STRIKES": -1, - "Block": { - "Type": "blacklist", - "Path": "https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist" - }, - "Instances": [ - { - "Url": "http://localhost:8686", - "ApiKey": "7f677cfdc074414397af53dd633860c5" - } - ] - }, - "Notifiarr": { - "ON_IMPORT_FAILED_STRIKE": true, - "ON_STALLED_STRIKE": true, - "ON_SLOW_STRIKE": true, - "ON_QUEUE_ITEM_DELETED": true, - "ON_DOWNLOAD_CLEANED": true, - "ON_CATEGORY_CHANGED": true, - "API_KEY": "", - "CHANNEL_ID": "" - }, - "Apprise": { - "ON_IMPORT_FAILED_STRIKE": true, - "ON_STALLED_STRIKE": true, - "ON_SLOW_STRIKE": true, - "ON_QUEUE_ITEM_DELETED": true, - "ON_DOWNLOAD_CLEANED": true, - "ON_CATEGORY_CHANGED": true, - "URL": "http://localhost:8000", - "KEY": "" - } -} diff --git a/code/Executable/appsettings.json b/code/Executable/appsettings.json deleted file mode 100644 index 35bb7679..00000000 --- a/code/Executable/appsettings.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "DRY_RUN": false, - "HTTP_MAX_RETRIES": 0, - "HTTP_TIMEOUT": 100, - "HTTP_VALIDATE_CERT": "enabled", - "Logging": { - "LogLevel": "Information", - "Enhanced": true, - "File": { - "Enabled": false, - "Path": "" - } - }, - "SEARCH_ENABLED": true, - "SEARCH_DELAY": 30, - "Triggers": { - "QueueCleaner": "0 0/5 * * * ?", - "ContentBlocker": "0 0/5 * * * ?", - "DownloadCleaner": "0 0 * * * ?" - }, - "ContentBlocker": { - "Enabled": false, - "IGNORE_PRIVATE": false, - "IGNORED_DOWNLOADS_PATH": "" - }, - "QueueCleaner": { - "Enabled": false, - "RunSequentially": true, - "IGNORED_DOWNLOADS_PATH": "", - "IMPORT_FAILED_MAX_STRIKES": 0, - "IMPORT_FAILED_IGNORE_PRIVATE": false, - "IMPORT_FAILED_DELETE_PRIVATE": false, - "IMPORT_FAILED_IGNORE_PATTERNS": [], - "STALLED_MAX_STRIKES": 0, - "STALLED_RESET_STRIKES_ON_PROGRESS": false, - "STALLED_IGNORE_PRIVATE": false, - "STALLED_DELETE_PRIVATE": false, - "DOWNLOADING_METADATA_MAX_STRIKES": 0, - "SLOW_MAX_STRIKES": 0, - "SLOW_RESET_STRIKES_ON_PROGRESS": true, - "SLOW_IGNORE_PRIVATE": false, - "SLOW_DELETE_PRIVATE": false, - "SLOW_MIN_SPEED": "", - "SLOW_MAX_TIME": 0, - "SLOW_IGNORE_ABOVE_SIZE": "" - }, - "DownloadCleaner": { - "Enabled": false, - "DELETE_PRIVATE": false, - "CATEGORIES": [], - "UNLINKED_TARGET_CATEGORY": "cleanuperr-unlinked", - "UNLINKED_USE_TAG": false, - "UNLINKED_IGNORED_ROOT_DIR": "", - "UNLINKED_CATEGORIES": [], - "IGNORED_DOWNLOADS_PATH": "" - }, - "DOWNLOAD_CLIENT": "none", - "qBittorrent": { - "Url": "http://localhost:8080", - "URL_BASE": "", - "Username": "", - "Password": "" - }, - "Deluge": { - "Url": "http://localhost:8112", - "URL_BASE": "", - "Password": "testing" - }, - "Transmission": { - "Url": "http://localhost:9091", - "URL_BASE": "transmission", - "Username": "test", - "Password": "testing" - }, - "Sonarr": { - "Enabled": false, - "IMPORT_FAILED_MAX_STRIKES": -1, - "SearchType": "Episode", - "Block": { - "Type": "blacklist", - "Path": "" - }, - "Instances": [ - { - "Url": "http://localhost:8989", - "ApiKey": "" - } - ] - }, - "Radarr": { - "Enabled": false, - "IMPORT_FAILED_MAX_STRIKES": -1, - "Block": { - "Type": "blacklist", - "Path": "" - }, - "Instances": [ - { - "Url": "http://localhost:7878", - "ApiKey": "" - } - ] - }, - "Lidarr": { - "Enabled": false, - "IMPORT_FAILED_MAX_STRIKES": -1, - "Block": { - "Type": "blacklist", - "Path": "" - }, - "Instances": [ - { - "Url": "http://localhost:8686", - "ApiKey": "" - } - ] - }, - "Notifiarr": { - "ON_IMPORT_FAILED_STRIKE": false, - "ON_STALLED_STRIKE": false, - "ON_SLOW_STRIKE": false, - "ON_QUEUE_ITEM_DELETED": false, - "ON_DOWNLOAD_CLEANED": false, - "ON_CATEGORY_CHANGED": false, - "API_KEY": "", - "CHANNEL_ID": "" - }, - "Apprise": { - "ON_IMPORT_FAILED_STRIKE": false, - "ON_STALLED_STRIKE": false, - "ON_SLOW_STRIKE": false, - "ON_QUEUE_ITEM_DELETED": false, - "ON_DOWNLOAD_CLEANED": false, - "ON_CATEGORY_CHANGED": false, - "URL": "", - "KEY": "" - } -} diff --git a/code/Infrastructure/Verticals/Arr/Interfaces/ILidarrClient.cs b/code/Infrastructure/Verticals/Arr/Interfaces/ILidarrClient.cs deleted file mode 100644 index 9a5cb3b0..00000000 --- a/code/Infrastructure/Verticals/Arr/Interfaces/ILidarrClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Arr.Interfaces; - -public interface ILidarrClient : IArrClient -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Arr/Interfaces/IRadarrClient.cs b/code/Infrastructure/Verticals/Arr/Interfaces/IRadarrClient.cs deleted file mode 100644 index 71b0cff0..00000000 --- a/code/Infrastructure/Verticals/Arr/Interfaces/IRadarrClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Arr.Interfaces; - -public interface IRadarrClient : IArrClient -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Arr/Interfaces/ISonarrClient.cs b/code/Infrastructure/Verticals/Arr/Interfaces/ISonarrClient.cs deleted file mode 100644 index 7863f7f7..00000000 --- a/code/Infrastructure/Verticals/Arr/Interfaces/ISonarrClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Arr.Interfaces; - -public interface ISonarrClient : IArrClient -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/BlockFilesResult.cs b/code/Infrastructure/Verticals/DownloadClient/BlockFilesResult.cs deleted file mode 100644 index 1f8a3d01..00000000 --- a/code/Infrastructure/Verticals/DownloadClient/BlockFilesResult.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace Infrastructure.Verticals.DownloadClient; - -public sealed record BlockFilesResult -{ - /// - /// True if the download should be removed; otherwise false. - /// - public bool ShouldRemove { get; set; } - - /// - /// True if the download is private; otherwise false. - /// - public bool IsPrivate { get; set; } - - /// - /// True if the download was found by the client; otherwise false. - /// - public bool Found { get; set; } -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/Deluge/IDelugeService.cs b/code/Infrastructure/Verticals/DownloadClient/Deluge/IDelugeService.cs deleted file mode 100644 index 0c516fb2..00000000 --- a/code/Infrastructure/Verticals/DownloadClient/Deluge/IDelugeService.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.DownloadClient.Deluge; - -public interface IDelugeService : IDownloadService -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/IQBitService.cs b/code/Infrastructure/Verticals/DownloadClient/QBittorrent/IQBitService.cs deleted file mode 100644 index 2f7a14bc..00000000 --- a/code/Infrastructure/Verticals/DownloadClient/QBittorrent/IQBitService.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.DownloadClient.QBittorrent; - -public interface IQBitService : IDownloadService, IDisposable -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadClient/Transmission/ITransmissionService.cs b/code/Infrastructure/Verticals/DownloadClient/Transmission/ITransmissionService.cs deleted file mode 100644 index 230e19f9..00000000 --- a/code/Infrastructure/Verticals/DownloadClient/Transmission/ITransmissionService.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.DownloadClient.Transmission; - -public interface ITransmissionService : IDownloadService -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/DownloadRemover/Interfaces/IQueueItemRemover.cs b/code/Infrastructure/Verticals/DownloadRemover/Interfaces/IQueueItemRemover.cs deleted file mode 100644 index e99e6e18..00000000 --- a/code/Infrastructure/Verticals/DownloadRemover/Interfaces/IQueueItemRemover.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Data.Models.Arr; -using Infrastructure.Verticals.DownloadRemover.Models; - -namespace Infrastructure.Verticals.DownloadRemover.Interfaces; - -public interface IQueueItemRemover -{ - Task RemoveQueueItemAsync(QueueItemRemoveRequest request) where T : SearchItem; -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Jobs/IHandler.cs b/code/Infrastructure/Verticals/Jobs/IHandler.cs deleted file mode 100644 index 560241a6..00000000 --- a/code/Infrastructure/Verticals/Jobs/IHandler.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Infrastructure.Verticals.Jobs; - -public interface IHandler -{ - Task ExecuteAsync(); -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Apprise/IAppriseProxy.cs b/code/Infrastructure/Verticals/Notifications/Apprise/IAppriseProxy.cs deleted file mode 100644 index 256005f5..00000000 --- a/code/Infrastructure/Verticals/Notifications/Apprise/IAppriseProxy.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Data.Models.Configuration.Notification; - -namespace Infrastructure.Verticals.Notifications.Apprise; - -public interface IAppriseProxy -{ - Task SendNotification(ApprisePayload payload, AppriseConfig config); -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Models/FailedImportStrikeNotification.cs b/code/Infrastructure/Verticals/Notifications/Models/FailedImportStrikeNotification.cs deleted file mode 100644 index 3699bf12..00000000 --- a/code/Infrastructure/Verticals/Notifications/Models/FailedImportStrikeNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Notifications.Models; - -public sealed record FailedImportStrikeNotification : ArrNotification -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Models/QueueItemDeletedNotification.cs b/code/Infrastructure/Verticals/Notifications/Models/QueueItemDeletedNotification.cs deleted file mode 100644 index 5af2de3e..00000000 --- a/code/Infrastructure/Verticals/Notifications/Models/QueueItemDeletedNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Notifications.Models; - -public sealed record QueueItemDeletedNotification : ArrNotification -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Models/SlowStrikeNotification.cs b/code/Infrastructure/Verticals/Notifications/Models/SlowStrikeNotification.cs deleted file mode 100644 index 796443bd..00000000 --- a/code/Infrastructure/Verticals/Notifications/Models/SlowStrikeNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Notifications.Models; - -public sealed record SlowStrikeNotification : ArrNotification -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Models/StalledStrikeNotification.cs b/code/Infrastructure/Verticals/Notifications/Models/StalledStrikeNotification.cs deleted file mode 100644 index f194bc57..00000000 --- a/code/Infrastructure/Verticals/Notifications/Models/StalledStrikeNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Infrastructure.Verticals.Notifications.Models; - -public sealed record StalledStrikeNotification : ArrNotification -{ -} \ No newline at end of file diff --git a/code/Infrastructure/Verticals/Notifications/Notifiarr/INotifiarrProxy.cs b/code/Infrastructure/Verticals/Notifications/Notifiarr/INotifiarrProxy.cs deleted file mode 100644 index 99e10199..00000000 --- a/code/Infrastructure/Verticals/Notifications/Notifiarr/INotifiarrProxy.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Data.Models.Configuration.Notification; - -namespace Infrastructure.Verticals.Notifications.Notifiarr; - -public interface INotifiarrProxy -{ - Task SendNotification(NotifiarrPayload payload, NotifiarrConfig config); -} \ No newline at end of file diff --git a/code/cleanuparr.sln b/code/cleanuparr.sln new file mode 100644 index 00000000..8ffae744 --- /dev/null +++ b/code/cleanuparr.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Domain", "Cleanuparr.Domain\Cleanuparr.Domain.csproj", "{88DFBF8D-733A-45B4-B254-908D818E5D44}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Application", "Cleanuparr.Application\Cleanuparr.Application.csproj", "{5CE59F74-2C3B-4E87-9B23-37FC8AA62539}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Infrastructure", "Cleanuparr.Infrastructure\Cleanuparr.Infrastructure.csproj", "{FD470DF2-6150-4908-9C08-CB975D54B3D6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Persistence", "Cleanuparr.Persistence\Cleanuparr.Persistence.csproj", "{CBF2F5E6-6AF7-4859-8DC9-478EE7E5B667}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Shared", "Cleanuparr.Shared\Cleanuparr.Shared.csproj", "{85BE59A0-5BAB-42A2-8523-5144A1BE523E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Api", "Cleanuparr.Api\Cleanuparr.Api.csproj", "{C77FCF7C-AF23-4668-96AD-B502EA698752}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cleanuparr.Infrastructure.Tests", "Cleanuparr.Infrastructure.Tests\Cleanuparr.Infrastructure.Tests.csproj", "{8487A062-9977-408D-8496-CEAD966CEF6F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {88DFBF8D-733A-45B4-B254-908D818E5D44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88DFBF8D-733A-45B4-B254-908D818E5D44}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88DFBF8D-733A-45B4-B254-908D818E5D44}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88DFBF8D-733A-45B4-B254-908D818E5D44}.Release|Any CPU.Build.0 = Release|Any CPU + {5CE59F74-2C3B-4E87-9B23-37FC8AA62539}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CE59F74-2C3B-4E87-9B23-37FC8AA62539}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5CE59F74-2C3B-4E87-9B23-37FC8AA62539}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5CE59F74-2C3B-4E87-9B23-37FC8AA62539}.Release|Any CPU.Build.0 = Release|Any CPU + {FD470DF2-6150-4908-9C08-CB975D54B3D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FD470DF2-6150-4908-9C08-CB975D54B3D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD470DF2-6150-4908-9C08-CB975D54B3D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FD470DF2-6150-4908-9C08-CB975D54B3D6}.Release|Any CPU.Build.0 = Release|Any CPU + {CBF2F5E6-6AF7-4859-8DC9-478EE7E5B667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CBF2F5E6-6AF7-4859-8DC9-478EE7E5B667}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CBF2F5E6-6AF7-4859-8DC9-478EE7E5B667}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CBF2F5E6-6AF7-4859-8DC9-478EE7E5B667}.Release|Any CPU.Build.0 = Release|Any CPU + {85BE59A0-5BAB-42A2-8523-5144A1BE523E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85BE59A0-5BAB-42A2-8523-5144A1BE523E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85BE59A0-5BAB-42A2-8523-5144A1BE523E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85BE59A0-5BAB-42A2-8523-5144A1BE523E}.Release|Any CPU.Build.0 = Release|Any CPU + {C77FCF7C-AF23-4668-96AD-B502EA698752}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C77FCF7C-AF23-4668-96AD-B502EA698752}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C77FCF7C-AF23-4668-96AD-B502EA698752}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C77FCF7C-AF23-4668-96AD-B502EA698752}.Release|Any CPU.Build.0 = Release|Any CPU + {8487A062-9977-408D-8496-CEAD966CEF6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8487A062-9977-408D-8496-CEAD966CEF6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8487A062-9977-408D-8496-CEAD966CEF6F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8487A062-9977-408D-8496-CEAD966CEF6F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/code/cleanuperr.sln b/code/cleanuperr.sln deleted file mode 100644 index b69c4bc1..00000000 --- a/code/cleanuperr.sln +++ /dev/null @@ -1,40 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Executable", "Executable\Executable.csproj", "{38261017-0049-4377-B30F-7279CC2539B2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{7AEA44C2-BDAA-49D8-A961-1FCA7779B39B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Infrastructure", "Infrastructure\Infrastructure.csproj", "{3FEC04CA-8CC5-49F5-BBDE-1581C7C8AFB5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Data\Data.csproj", "{8871592A-B260-4B15-8EF8-6AB24480DE5D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Infrastructure.Tests", "Infrastructure.Tests\Infrastructure.Tests.csproj", "{F2DBB5FD-8D93-45D0-B211-5E9A8C14B684}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {38261017-0049-4377-B30F-7279CC2539B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38261017-0049-4377-B30F-7279CC2539B2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38261017-0049-4377-B30F-7279CC2539B2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38261017-0049-4377-B30F-7279CC2539B2}.Release|Any CPU.Build.0 = Release|Any CPU - {7AEA44C2-BDAA-49D8-A961-1FCA7779B39B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7AEA44C2-BDAA-49D8-A961-1FCA7779B39B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7AEA44C2-BDAA-49D8-A961-1FCA7779B39B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7AEA44C2-BDAA-49D8-A961-1FCA7779B39B}.Release|Any CPU.Build.0 = Release|Any CPU - {3FEC04CA-8CC5-49F5-BBDE-1581C7C8AFB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3FEC04CA-8CC5-49F5-BBDE-1581C7C8AFB5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3FEC04CA-8CC5-49F5-BBDE-1581C7C8AFB5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3FEC04CA-8CC5-49F5-BBDE-1581C7C8AFB5}.Release|Any CPU.Build.0 = Release|Any CPU - {8871592A-B260-4B15-8EF8-6AB24480DE5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8871592A-B260-4B15-8EF8-6AB24480DE5D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8871592A-B260-4B15-8EF8-6AB24480DE5D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8871592A-B260-4B15-8EF8-6AB24480DE5D}.Release|Any CPU.Build.0 = Release|Any CPU - {F2DBB5FD-8D93-45D0-B211-5E9A8C14B684}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F2DBB5FD-8D93-45D0-B211-5E9A8C14B684}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F2DBB5FD-8D93-45D0-B211-5E9A8C14B684}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F2DBB5FD-8D93-45D0-B211-5E9A8C14B684}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/code/plan.md b/code/plan.md new file mode 100644 index 00000000..2e852579 --- /dev/null +++ b/code/plan.md @@ -0,0 +1,330 @@ + # Cleanuperr Clean Architecture Migration Plan + +## Overview +This plan migrates the existing Cleanuperr .NET application from a mixed architecture to a clean architecture following Domain-Driven Design principles. + +## Target Architecture + +### Project Structure +``` +Cleanuperr.Domain/ # Core business logic (no dependencies) +├── Entities/ # Business entities +├── ValueObjects/ # Value objects +├── Enums/ # Domain enums +├── Events/ # Domain events +├── Exceptions/ # Domain-specific exceptions +└── Services/ # Domain services + +Cleanuperr.Application/ # Use cases and application logic +├── Features/ # Feature-based organization (CQRS) +│ ├── {FeatureName}/ +│ │ ├── Commands/ # Command handlers +│ │ ├── Queries/ # Query handlers +│ │ └── DTOs/ # Data transfer objects +├── Common/ +│ ├── Interfaces/ # Application service contracts +│ ├── Behaviours/ # MediatR behaviors +│ └── Exceptions/ # Application exceptions +└── Extensions/ # Extension methods + +Cleanuperr.Infrastructure/ # External concerns +├── Features/ # Feature-based infrastructure +│ ├── {FeatureName}/ +│ │ └── Services/ # External service implementations +├── Http/ # HTTP clients and configurations +├── Logging/ # Logging infrastructure +├── Health/ # Health checks +├── Hubs/ # SignalR hubs +├── Events/ # Event publishing +├── Services/ # Infrastructure services +├── Interceptors/ # Cross-cutting concerns +└── Extensions/ # Infrastructure extensions + +Cleanuperr.Persistence/ # Data access layer +├── Context/ # Entity Framework contexts +├── Configurations/ # Entity configurations +├── Repositories/ # Repository implementations +├── Migrations/ # Database migrations +└── Extensions/ # Persistence extensions + +Cleanuperr.Api/ # Web API presentation layer +├── Controllers/ # API controllers (thin) +├── Middleware/ # API middleware +├── DependencyInjection/ # DI configuration +├── Jobs/ # Background job scheduling +└── Models/ # API-specific models + +Cleanuperr.Shared/ # Cross-cutting concerns +├── Attributes/ # Custom attributes +├── CustomDataTypes/ # Shared data types +├── Helpers/ # Utility helpers +└── Constants/ # Shared constants +``` + +## File Migration Map + +### **Cleanuperr.Domain** (Core Business Logic) + +#### Entities (from Data/Models/) +- `Data/Models/Radarr/Movie.cs` → `Cleanuperr.Domain/Entities/Movie.cs` +- `Data/Models/Lidarr/Album.cs` → `Cleanuperr.Domain/Entities/Album.cs` +- `Data/Models/Lidarr/Artist.cs` → `Cleanuperr.Domain/Entities/Artist.cs` +- `Data/Models/Sonarr/Series.cs` → `Cleanuperr.Domain/Entities/Series.cs` +- `Data/Models/Sonarr/Episode.cs` → `Cleanuperr.Domain/Entities/Episode.cs` +- `Data/Models/Arr/Queue/QueueRecord.cs` → `Cleanuperr.Domain/Entities/QueueRecord.cs` +- `Data/Models/Arr/Queue/QueueMovie.cs` → `Cleanuperr.Domain/Entities/QueueMovie.cs` +- `Data/Models/Arr/Queue/QueueAlbum.cs` → `Cleanuperr.Domain/Entities/QueueAlbum.cs` +- `Data/Models/Arr/Queue/QueueSeries.cs` → `Cleanuperr.Domain/Entities/QueueSeries.cs` +- `Data/Models/Arr/Queue/Image.cs` → `Cleanuperr.Domain/Entities/Image.cs` +- `Data/Models/Arr/Queue/LidarrImage.cs` → `Cleanuperr.Domain/Entities/LidarrImage.cs` +- `Data/Models/Events/AppEvent.cs` → `Cleanuperr.Domain/Entities/AppEvent.cs` + +#### Enums (from Data/Enums/ and Common/Enums/) +- `Data/Enums/CleanReason.cs` → `Cleanuperr.Domain/Enums/CleanReason.cs` +- `Data/Enums/DeleteReason.cs` → `Cleanuperr.Domain/Enums/DeleteReason.cs` +- `Data/Enums/EventSeverity.cs` → `Cleanuperr.Domain/Enums/EventSeverity.cs` +- `Data/Enums/EventType.cs` → `Cleanuperr.Domain/Enums/EventType.cs` +- `Data/Enums/InstanceType.cs` → `Cleanuperr.Domain/Enums/InstanceType.cs` +- `Data/Enums/StrikeType.cs` → `Cleanuperr.Domain/Enums/StrikeType.cs` +- `Common/Enums/CertificateValidationType.cs` → `Cleanuperr.Domain/Enums/CertificateValidationType.cs` +- `Common/Enums/DownloadClientType.cs` → `Cleanuperr.Domain/Enums/DownloadClientType.cs` +- `Common/Enums/DownloadClientTypeName.cs` → `Cleanuperr.Domain/Enums/DownloadClientTypeName.cs` +- `Data/Models/Configuration/QueueCleaner/BlocklistType.cs` → `Cleanuperr.Domain/Enums/BlocklistType.cs` + +#### Value Objects +- `Common/CustomDataTypes/ByteSize.cs` → `Cleanuperr.Domain/ValueObjects/ByteSize.cs` +- `Common/CustomDataTypes/SmartTimeSpan.cs` → `Cleanuperr.Domain/ValueObjects/SmartTimeSpan.cs` + +#### Domain Exceptions +- `Common/Exceptions/FatalException.cs` → `Cleanuperr.Domain/Exceptions/FatalException.cs` +- `Data/Models/Deluge/Exceptions/DelugeClientException.cs` → `Cleanuperr.Domain/Exceptions/DelugeClientException.cs` +- `Data/Models/Deluge/Exceptions/DelugeLoginException.cs` → `Cleanuperr.Domain/Exceptions/DelugeLoginException.cs` +- `Data/Models/Deluge/Exceptions/DelugeLogoutException.cs` → `Cleanuperr.Domain/Exceptions/DelugeLogoutException.cs` + +### **Cleanuperr.Application** (Use Cases & Application Logic) + +#### Features (organize by business capability) + +**DownloadCleaner Feature:** +- Create: `Cleanuperr.Application/Features/DownloadCleaner/Commands/CleanDownloadsCommand.cs` +- Create: `Cleanuperr.Application/Features/DownloadCleaner/Commands/CleanDownloadsCommandHandler.cs` +- Create: `Cleanuperr.Application/Features/DownloadCleaner/DTOs/CleanDownloadsResult.cs` + +**QueueCleaner Feature:** +- Create: `Cleanuperr.Application/Features/QueueCleaner/Commands/CleanQueueCommand.cs` +- Create: `Cleanuperr.Application/Features/QueueCleaner/Commands/CleanQueueCommandHandler.cs` + +**Arr Integration Feature:** +- Create: `Cleanuperr.Application/Features/Arr/Queries/GetQueueQuery.cs` +- Create: `Cleanuperr.Application/Features/Arr/Queries/GetQueueQueryHandler.cs` +- `Executable/DTOs/ArrConfigDto.cs` → `Cleanuperr.Application/Features/Arr/DTOs/ArrConfigDto.cs` +- `Executable/DTOs/CreateArrInstanceDto.cs` → `Cleanuperr.Application/Features/Arr/DTOs/CreateArrInstanceDto.cs` +- `Executable/DTOs/UpdateLidarrConfigDto.cs` → `Cleanuperr.Application/Features/Arr/DTOs/UpdateLidarrConfigDto.cs` +- `Executable/DTOs/UpdateRadarrConfigDto.cs` → `Cleanuperr.Application/Features/Arr/DTOs/UpdateRadarrConfigDto.cs` +- `Executable/DTOs/UpdateSonarrConfigDto.cs` → `Cleanuperr.Application/Features/Arr/DTOs/UpdateSonarrConfigDto.cs` + +**DownloadClient Feature:** +- `Executable/DTOs/CreateDownloadClientDto.cs` → `Cleanuperr.Application/Features/DownloadClient/DTOs/CreateDownloadClientDto.cs` + +#### Common Application Services +- `Common/Exceptions/ValidationException.cs` → `Cleanuperr.Application/Common/Exceptions/ValidationException.cs` + +#### Interfaces (to be implemented in Infrastructure/Persistence) +- Create: `Cleanuperr.Application/Common/Interfaces/IApplicationDbContext.cs` +- Create: `Cleanuperr.Application/Common/Interfaces/IDownloadService.cs` +- Create: `Cleanuperr.Application/Common/Interfaces/IArrClient.cs` +- Create: `Cleanuperr.Application/Common/Interfaces/INotificationService.cs` +- Create: `Cleanuperr.Application/Common/Interfaces/IJobManagementService.cs` + +### **Cleanuperr.Infrastructure** (External Concerns) + +#### Features (Infrastructure implementations) + +**Arr Feature:** +- `Infrastructure/Verticals/Arr/Interfaces/IArrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Interfaces/IArrClient.cs` +- `Infrastructure/Verticals/Arr/Interfaces/ILidarrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Interfaces/ILidarrClient.cs` +- `Infrastructure/Verticals/Arr/Interfaces/IRadarrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Interfaces/IRadarrClient.cs` +- `Infrastructure/Verticals/Arr/Interfaces/ISonarrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Interfaces/ISonarrClient.cs` +- `Infrastructure/Verticals/Arr/ArrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Services/ArrClient.cs` +- `Infrastructure/Verticals/Arr/ArrClientFactory.cs` → `Cleanuperr.Infrastructure/Features/Arr/Services/ArrClientFactory.cs` +- `Infrastructure/Verticals/Arr/ArrQueueIterator.cs` → `Cleanuperr.Infrastructure/Features/Arr/Services/ArrQueueIterator.cs` +- `Infrastructure/Verticals/Arr/LidarrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Services/LidarrClient.cs` +- `Infrastructure/Verticals/Arr/RadarrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Services/RadarrClient.cs` +- `Infrastructure/Verticals/Arr/SonarrClient.cs` → `Cleanuperr.Infrastructure/Features/Arr/Services/SonarrClient.cs` + +**DownloadCleaner Feature:** +- `Infrastructure/Verticals/DownloadCleaner/DownloadCleaner.cs` → `Cleanuperr.Infrastructure/Features/DownloadCleaner/Services/DownloadCleanerService.cs` + +**DownloadClient Feature:** +- `Infrastructure/Verticals/DownloadClient/` → `Cleanuperr.Infrastructure/Features/DownloadClient/` + - All Deluge, QBittorrent, Transmission services and interfaces + - `DownloadService.cs`, `DownloadServiceFactory.cs`, `IDownloadService.cs` + - Result classes: `BlockFilesResult.cs`, `DownloadCheckResult.cs`, `SeedingCheckResult.cs` + +**Notifications Feature:** +- `Infrastructure/Verticals/Notifications/` → `Cleanuperr.Infrastructure/Features/Notifications/` + - All notification providers, consumers, models + - Apprise and Notifiarr implementations + +**ContentBlocker Feature:** +- `Infrastructure/Verticals/ContentBlocker/` → `Cleanuperr.Infrastructure/Features/ContentBlocker/` + +**Files Feature:** +- `Infrastructure/Verticals/Files/` → `Cleanuperr.Infrastructure/Features/Files/` + +**ItemStriker Feature:** +- `Infrastructure/Verticals/ItemStriker/` → `Cleanuperr.Infrastructure/Features/ItemStriker/` + +**Jobs Feature:** +- `Infrastructure/Verticals/Jobs/` → `Cleanuperr.Infrastructure/Features/Jobs/` + +**Security Feature:** +- `Infrastructure/Verticals/Security/` → `Cleanuperr.Infrastructure/Features/Security/` + +#### Core Infrastructure Services +- `Infrastructure/Health/` → `Cleanuperr.Infrastructure/Health/` +- `Infrastructure/Http/` → `Cleanuperr.Infrastructure/Http/` +- `Infrastructure/Logging/` → `Cleanuperr.Infrastructure/Logging/` +- `Infrastructure/Events/` → `Cleanuperr.Infrastructure/Events/` +- `Infrastructure/Services/` → `Cleanuperr.Infrastructure/Services/` +- `Infrastructure/Interceptors/` → `Cleanuperr.Infrastructure/Interceptors/` +- `Infrastructure/Utilities/` → `Cleanuperr.Infrastructure/Utilities/` +- `Infrastructure/Extensions/` → `Cleanuperr.Infrastructure/Extensions/` +- `Infrastructure/Helpers/` → `Cleanuperr.Infrastructure/Helpers/` +- `Infrastructure/Models/` → `Cleanuperr.Infrastructure/Models/` +- `Infrastructure/Hubs/` → `Cleanuperr.Infrastructure/Hubs/` + +### **Cleanuperr.Persistence** (Data Access) + +#### Context +- `Data/DataContext.cs` → `Cleanuperr.Persistence/Context/DataContext.cs` +- `Data/EventsContext.cs` → `Cleanuperr.Persistence/Context/EventsContext.cs` + +#### Configurations (move EF configurations from entities) +- Create: `Cleanuperr.Persistence/Configurations/MovieConfiguration.cs` +- Create: `Cleanuperr.Persistence/Configurations/AlbumConfiguration.cs` +- Create: `Cleanuperr.Persistence/Configurations/ArtistConfiguration.cs` +- etc. (for each entity) + +#### Migrations +- `Data/Migrations/` → `Cleanuperr.Persistence/Migrations/` + +#### Converters +- `Data/Converters/LowercaseEnumConverter.cs` → `Cleanuperr.Persistence/Converters/LowercaseEnumConverter.cs` +- `Data/Converters/UtcDateTimeConverter.cs` → `Cleanuperr.Persistence/Converters/UtcDateTimeConverter.cs` + +#### Configuration Models (these are DTOs for persistence) +- `Data/Models/Configuration/` → `Cleanuperr.Persistence/Models/Configuration/` +- `Data/Models/Arr/` (non-entity models) → `Cleanuperr.Persistence/Models/Arr/` +- `Data/Models/Deluge/` (non-entity models) → `Cleanuperr.Persistence/Models/External/Deluge/` +- `Data/Models/Cache/` → `Cleanuperr.Persistence/Models/Cache/` + +### **Cleanuperr.Api** (Web API Layer) + +#### Controllers (convert to thin controllers using MediatR) +- `Executable/Controllers/ApiDocumentationController.cs` → `Cleanuperr.Api/Controllers/ApiDocumentationController.cs` +- `Executable/Controllers/ConfigurationController.cs` → `Cleanuperr.Api/Controllers/ConfigurationController.cs` +- `Executable/Controllers/EventsController.cs` → `Cleanuperr.Api/Controllers/EventsController.cs` +- `Executable/Controllers/HealthCheckController.cs` → `Cleanuperr.Api/Controllers/HealthCheckController.cs` +- `Executable/Controllers/JobsController.cs` → `Cleanuperr.Api/Controllers/JobsController.cs` +- `Executable/Controllers/StatusController.cs` → `Cleanuperr.Api/Controllers/StatusController.cs` + +#### DependencyInjection +- `Executable/DependencyInjection/` → `Cleanuperr.Api/DependencyInjection/` + +#### Jobs +- `Executable/Jobs/` → `Cleanuperr.Api/Jobs/` + +#### Middleware +- `Executable/Middleware/` → `Cleanuperr.Api/Middleware/` + +#### Models (API-specific) +- `Executable/Models/` → `Cleanuperr.Api/Models/` + +#### Entry Point +- `Executable/Program.cs` → `Cleanuperr.Api/Program.cs` +- `Executable/HostExtensions.cs` → `Cleanuperr.Api/HostExtensions.cs` + +### **Cleanuperr.Shared** (Cross-cutting Concerns) + +#### Attributes +- `Common/Attributes/SensitiveDataAttribute.cs` → `Cleanuperr.Shared/Attributes/SensitiveDataAttribute.cs` + +#### Helpers +- `Common/Helpers/ConfigurationPathProvider.cs` → `Cleanuperr.Shared/Helpers/ConfigurationPathProvider.cs` +- `Common/Helpers/Constants.cs` → `Cleanuperr.Shared/Helpers/Constants.cs` +- `Common/Helpers/StaticConfiguration.cs` → `Cleanuperr.Shared/Helpers/StaticConfiguration.cs` + +## Implementation Steps + +### Phase 1: Project Setup +1. Delete existing new projects (if any) +2. Create fresh projects with proper dependencies +3. Install required NuGet packages +4. Update solution file + +### Phase 2: Domain Layer Migration +1. Create folder structure in Cleanuperr.Domain +2. Move and clean entities (remove EF attributes) +3. Move enums and value objects +4. Move domain exceptions +5. Ensure no external dependencies + +### Phase 3: Application Layer Migration +1. Create folder structure in Cleanuperr.Application +2. Create feature-based CQRS structure +3. Move and convert DTOs +4. Define application interfaces +5. Create command/query handlers + +### Phase 4: Persistence Layer Migration +1. Create folder structure in Cleanuperr.Persistence +2. Move EF contexts +3. Create entity configurations +4. Move migrations and converters +5. Move persistence-specific models + +### Phase 5: Infrastructure Layer Reorganization +1. Reorganize existing Infrastructure by features +2. Move vertical slices to feature-based structure +3. Update dependencies to use Application interfaces +4. Keep external service implementations + +### Phase 6: API Layer Migration +1. Move controllers and convert to thin controllers +2. Update controllers to use MediatR +3. Move DI, middleware, jobs +4. Update Program.cs + +### Phase 7: Shared Layer Migration +1. Move cross-cutting utilities +2. Move shared attributes and helpers + +### Phase 8: Cleanup +1. Update all namespace references +2. Fix using statements +3. Update project references +4. Delete old projects +5. Test compilation and functionality + +### Phase 9: Testing & Validation +1. Verify clean architecture principles +2. Test all functionality +3. Update documentation +4. Performance validation + +## Success Criteria +- [x] Solution compiles without errors +- [x] All tests pass +- [x] Clean separation of concerns achieved +- [x] Dependency direction flows inward +- [x] Feature-based organization implemented +- [x] CQRS pattern established +- [x] No circular dependencies +- [x] Infrastructure depends only on abstractions + +## Files to Delete After Migration +- `Data/` directory (entire) +- `Common/` directory (entire) +- `Executable/` directory (entire) +- Old solution file references \ No newline at end of file