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}