diff --git a/services/Directory/FilterLists.Directory.Api/Dockerfile b/services/Directory/FilterLists.Directory.Api/Dockerfile index 1ee94c124..09aa5926d 100644 --- a/services/Directory/FilterLists.Directory.Api/Dockerfile +++ b/services/Directory/FilterLists.Directory.Api/Dockerfile @@ -11,6 +11,7 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true # restore API WORKDIR /app COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ +COPY Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj Directory/FilterLists.Directory.Infrastructure/ COPY Directory/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj Directory/FilterLists.Directory.Infrastructure.Migrations/ COPY Directory/FilterLists.Directory.Api.Contracts/FilterLists.Directory.Api.Contracts.csproj Directory/FilterLists.Directory.Api.Contracts/ @@ -23,6 +24,7 @@ RUN dotnet restore WORKDIR /app COPY /.editorconfig . COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ +COPY Directory/FilterLists.Directory.Domain/. Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/. Directory/FilterLists.Directory.Infrastructure/ COPY Directory/FilterLists.Directory.Infrastructure.Migrations/. Directory/FilterLists.Directory.Infrastructure.Migrations/ COPY Directory/FilterLists.Directory.Api.Contracts/. Directory/FilterLists.Directory.Api.Contracts/ diff --git a/services/Directory/FilterLists.Directory.Api/dev.Dockerfile b/services/Directory/FilterLists.Directory.Api/dev.Dockerfile index 4628fcfd9..babff1374 100644 --- a/services/Directory/FilterLists.Directory.Api/dev.Dockerfile +++ b/services/Directory/FilterLists.Directory.Api/dev.Dockerfile @@ -10,6 +10,7 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true # restore API WORKDIR /app COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ +COPY Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj Directory/FilterLists.Directory.Infrastructure/ COPY Directory/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj Directory/FilterLists.Directory.Infrastructure.Migrations/ COPY Directory/FilterLists.Directory.Api.Contracts/FilterLists.Directory.Api.Contracts.csproj Directory/FilterLists.Directory.Api.Contracts/ @@ -22,6 +23,7 @@ RUN dotnet restore WORKDIR /app COPY /.editorconfig . COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ +COPY Directory/FilterLists.Directory.Domain/. Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/. Directory/FilterLists.Directory.Infrastructure/ COPY Directory/FilterLists.Directory.Infrastructure.Migrations/. Directory/FilterLists.Directory.Infrastructure.Migrations/ COPY Directory/FilterLists.Directory.Api.Contracts/. Directory/FilterLists.Directory.Api.Contracts/ diff --git a/services/Directory/FilterLists.Directory.Api/migrate.Dockerfile b/services/Directory/FilterLists.Directory.Api/migrate.Dockerfile index 456518702..f85303d63 100644 --- a/services/Directory/FilterLists.Directory.Api/migrate.Dockerfile +++ b/services/Directory/FilterLists.Directory.Api/migrate.Dockerfile @@ -6,6 +6,7 @@ ENTRYPOINT ["dotnet", "test", "--logger:trx"] # restore WORKDIR /app COPY SharedKernel/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj SharedKernel/FilterLists.SharedKernel.Logging/ +COPY Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj Directory/FilterLists.Directory.Infrastructure/ COPY Directory/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj Directory/FilterLists.Directory.Infrastructure.Migrations/ COPY Directory/FilterLists.Directory.Api.Contracts/FilterLists.Directory.Api.Contracts.csproj Directory/FilterLists.Directory.Api.Contracts/ @@ -18,6 +19,7 @@ RUN dotnet restore # build WORKDIR /app COPY SharedKernel/FilterLists.SharedKernel.Logging/. SharedKernel/FilterLists.SharedKernel.Logging/ +COPY Directory/FilterLists.Directory.Domain/. Directory/FilterLists.Directory.Domain/ COPY Directory/FilterLists.Directory.Infrastructure/. Directory/FilterLists.Directory.Infrastructure/ COPY Directory/FilterLists.Directory.Infrastructure.Migrations/. Directory/FilterLists.Directory.Infrastructure.Migrations/ COPY Directory/FilterLists.Directory.Api.Contracts/. Directory/FilterLists.Directory.Api.Contracts/ diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterList.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterList.cs new file mode 100644 index 000000000..9896531da --- /dev/null +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterList.cs @@ -0,0 +1,18 @@ +namespace FilterLists.Directory.Domain.Aggregates; + +public class FilterList +{ + public int Id { get; private set; } + public string Name { get; private set; } = null!; + public string? Description { get; private set; } + public int? LicenseId { get; private set; } + public Uri? HomeUrl { get; private set; } + public Uri? OnionUrl { get; private set; } + public Uri? PolicyUrl { get; private set; } + public Uri? SubmissionUrl { get; private set; } + public Uri? IssuesUrl { get; private set; } + public Uri? ForumUrl { get; private set; } + public Uri? ChatUrl { get; private set; } + public string? EmailAddress { get; private set; } + public Uri? DonateUrl { get; private set; } +} diff --git a/services/Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj b/services/Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj new file mode 100644 index 000000000..9f193f411 --- /dev/null +++ b/services/Directory/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj @@ -0,0 +1,19 @@ + + + + net6.0 + enable + enable + + + + Collin M. Barrett + FilterLists + FilterLists Directory + The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances. + Copyright (c) 2021 Collin M. Barrett + https://github.com/collinbarrett/FilterLists + https://filterlists.com + + + \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/ConfigurationExtensions.cs b/services/Directory/FilterLists.Directory.Infrastructure/ConfigurationExtensions.cs index 49a32e14d..0c678be27 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/ConfigurationExtensions.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/ConfigurationExtensions.cs @@ -1,4 +1,5 @@ -using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; +using FilterLists.Directory.Infrastructure.Persistence.Commands.Context; +using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; using FilterLists.SharedKernel.Logging; using Microsoft.AspNetCore.Builder; using Microsoft.EntityFrameworkCore; @@ -34,6 +35,7 @@ public static void AddInfrastructure(this IServiceCollection services, IConfigur #endif }); services.AddScoped(); + services.AddScoped(); } public static void UseInfrastructure(this IApplicationBuilder app) diff --git a/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj b/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj index a4885cf9b..7d82668d4 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj +++ b/services/Directory/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj @@ -24,6 +24,7 @@ + \ No newline at end of file diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/CommandContext.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/CommandContext.cs new file mode 100644 index 000000000..ab96858d9 --- /dev/null +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/CommandContext.cs @@ -0,0 +1,16 @@ +namespace FilterLists.Directory.Infrastructure.Persistence.Commands.Context; + +internal class CommandContext : ICommandContext, IAsyncDisposable +{ + private readonly CommandDbContext _dbContext; + + public CommandContext(CommandDbContext dbContext) + { + _dbContext = dbContext; + } + + public async ValueTask DisposeAsync() + { + await _dbContext.DisposeAsync(); + } +} diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/CommandDbContext.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/CommandDbContext.cs new file mode 100644 index 000000000..72cf72ad5 --- /dev/null +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/CommandDbContext.cs @@ -0,0 +1,15 @@ +using Microsoft.EntityFrameworkCore; + +namespace FilterLists.Directory.Infrastructure.Persistence.Commands.Context; + +public class CommandDbContext : DbContext +{ + public CommandDbContext(DbContextOptions options) : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.ApplyConfigurationsFromAssembly(GetType().Assembly); + } +} diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/ICommandContext.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/ICommandContext.cs new file mode 100644 index 000000000..f18b4e0a2 --- /dev/null +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/Context/ICommandContext.cs @@ -0,0 +1,5 @@ +namespace FilterLists.Directory.Infrastructure.Persistence.Commands.Context; + +public interface ICommandContext +{ +} diff --git a/services/Directory/azure-pipelines.api.yaml b/services/Directory/azure-pipelines.api.yaml index 75fb863d2..85c58c1b6 100644 --- a/services/Directory/azure-pipelines.api.yaml +++ b/services/Directory/azure-pipelines.api.yaml @@ -7,6 +7,7 @@ trigger: [ services/Directory/azure-pipelines.api.yaml, services/SharedKernel/FilterLists.SharedKernel.Logging/*, + services/Directory/FilterLists.Directory.Domain/*, services/Directory/FilterLists.Directory.Infrastructure/*, services/Directory/FilterLists.Directory.Infrastructure.Migrations/*, services/Directory/FilterLists.Directory.Api.Contracts/*, @@ -31,6 +32,7 @@ pr: [ services/Directory/azure-pipelines.api.yaml, services/SharedKernel/FilterLists.SharedKernel.Logging/*, + services/Directory/FilterLists.Directory.Domain/*, services/Directory/FilterLists.Directory.Infrastructure/*, services/Directory/FilterLists.Directory.Infrastructure.Migrations/*, services/Directory/FilterLists.Directory.Api.Contracts/*, diff --git a/services/Directory/azure-pipelines.migrate.yaml b/services/Directory/azure-pipelines.migrate.yaml index 5549caf19..c703a1e1e 100644 --- a/services/Directory/azure-pipelines.migrate.yaml +++ b/services/Directory/azure-pipelines.migrate.yaml @@ -122,7 +122,7 @@ steps: condition: and(eq(variables['abortJustMigrated.aborted'], 'false'), succeeded()) inputs: workingDirectory: services/Directory - script: dotnet ef migrations add $(System.PullRequest.PullRequestNumber) -p FilterLists.Directory.Infrastructure.Migrations -s FilterLists.Directory.Api + script: dotnet ef migrations add $(System.PullRequest.PullRequestNumber) -p FilterLists.Directory.Infrastructure.Migrations -s FilterLists.Directory.Api --context QueryDbContext - task: Bash@3 displayName: commit or abandon no-op migration diff --git a/services/FilterLists.sln b/services/FilterLists.sln index c8a96088c..b728e09a6 100644 --- a/services/FilterLists.sln +++ b/services/FilterLists.sln @@ -69,6 +69,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Directory.Api.C EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Archival.Domain", "Archival\FilterLists.Archival.Domain\FilterLists.Archival.Domain.csproj", "{6402E81A-75C2-422F-933B-AAC1ED8C4128}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Directory.Domain", "Directory\FilterLists.Directory.Domain\FilterLists.Directory.Domain.csproj", "{EE844873-71D7-4B9D-93BF-DF65B9E4770D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -123,6 +125,10 @@ Global {6402E81A-75C2-422F-933B-AAC1ED8C4128}.Debug|Any CPU.Build.0 = Debug|Any CPU {6402E81A-75C2-422F-933B-AAC1ED8C4128}.Release|Any CPU.ActiveCfg = Release|Any CPU {6402E81A-75C2-422F-933B-AAC1ED8C4128}.Release|Any CPU.Build.0 = Release|Any CPU + {EE844873-71D7-4B9D-93BF-DF65B9E4770D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE844873-71D7-4B9D-93BF-DF65B9E4770D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE844873-71D7-4B9D-93BF-DF65B9E4770D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE844873-71D7-4B9D-93BF-DF65B9E4770D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -140,6 +146,7 @@ Global {5485F55E-DFED-4DA0-8A00-220B081FAC96} = {59197818-6C72-4A3C-A595-49F3D7D2EB18} {4D3D2508-CCC6-4C0B-B5E4-734DD5EC588F} = {AE5D6471-1B6E-4B06-A313-34EF81F35342} {6402E81A-75C2-422F-933B-AAC1ED8C4128} = {5E52FEF9-9605-4ACB-8A42-A20E06331599} + {EE844873-71D7-4B9D-93BF-DF65B9E4770D} = {AE5D6471-1B6E-4B06-A313-34EF81F35342} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {758B57EF-7505-4BE2-90A2-E2DE2EC32909}