diff --git a/docker/.gitignore b/docker/.gitignore
new file mode 100644
index 0000000..31447cc
--- /dev/null
+++ b/docker/.gitignore
@@ -0,0 +1,2 @@
+code-gen/
+!code-gen/**/docker-compose.yml
\ No newline at end of file
diff --git a/docker/code-gen/docker-compose.yml b/docker/code-gen/docker-compose.yml
new file mode 100644
index 0000000..b77e381
--- /dev/null
+++ b/docker/code-gen/docker-compose.yml
@@ -0,0 +1,42 @@
+services:
+
+ palantir:
+ image: mcr.microsoft.com/dotnet/sdk:9.0
+ container_name: codegen-backend
+ volumes:
+ - ./dotnet:/app/
+ working_dir: /app
+ restart: no
+ command: >
+ dotnet
+ run
+ --project Suspectus.Gandalf.Palantir.Api
+ -v n
+ --urls "http://0.0.0.0:5035"
+ -- --controllers-only
+ healthcheck:
+ test: [ "CMD", "curl", "-f", "http://localhost:5035/openapi/v1.json" ]
+ interval: 5s
+ timeout: 3s
+ retries: 100
+ start_period: 40s
+ start_interval: 20s
+
+ typescript-gen:
+ image: swaggerapi/swagger-codegen-cli-v3
+ container_name: codegen-cli
+ command: >
+ config-help
+ -l typescript-angular
+# generate
+# -i http://palantir:5035/openapi/v1.json
+# -l csharp
+# -o /local
+# -c /options.json
+ restart: no
+ depends_on:
+ palantir:
+ condition: service_healthy
+ volumes:
+ - ./palantir-client:/local
+# - ./options.json:/options.json
\ No newline at end of file
diff --git a/obj/Data.EntityFrameworkCore.targets b/obj/Data.EntityFrameworkCore.targets
deleted file mode 100644
index 7d6485d..0000000
--- a/obj/Data.EntityFrameworkCore.targets
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/scripts/code-gen/gen-palantir-client.cmd b/scripts/code-gen/gen-palantir-client.cmd
new file mode 100644
index 0000000..87b56f7
--- /dev/null
+++ b/scripts/code-gen/gen-palantir-client.cmd
@@ -0,0 +1,10 @@
+@echo off
+pushd "../../docker/code-gen"
+rmdir /s /q "palantir-client"
+rmdir /s /q "dotnet"
+xcopy "../../src/dotnet" "./dotnet\" /E/H
+cmd /c "docker-compose up --abort-on-container-exit --force-recreate"
+cmd /c "docker-compose down"
+rmdir /s /q "../../src/dotnet/Suspectus.Gandalf.Palantir.Client/Generated"
+xcopy "./palantir-client" "../../src/dotnet/Suspectus.Gandalf.Palantir.Client/Generated\" /E/H
+popd
diff --git a/src/dotnet/.run/Gandalf.run.xml b/src/dotnet/.run/Gandalf.run.xml
new file mode 100644
index 0000000..990965c
--- /dev/null
+++ b/src/dotnet/.run/Gandalf.run.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/dotnet/Suspectus.Gandalf.Palantir.Api/Program.cs b/src/dotnet/Suspectus.Gandalf.Palantir.Api/Program.cs
index 17d4676..51d9815 100644
--- a/src/dotnet/Suspectus.Gandalf.Palantir.Api/Program.cs
+++ b/src/dotnet/Suspectus.Gandalf.Palantir.Api/Program.cs
@@ -11,16 +11,34 @@ using Suspectus.Gandalf.Palantir.Data.Database.Repositories;
var builder = WebApplication.CreateBuilder(args);
-
builder.Services.AddSingleton(TimeProvider.System);
builder.Services.AddEndpointsApiExplorer();
+
+var onlyControllers = args.Contains("--controllers-only");
+if (onlyControllers)
+{
+ builder.Services.AddOpenApi();
+ builder.Services.AddRouting(options => options.LowercaseUrls = true);
+ builder.Services.AddControllers().AddJsonOptions(options =>
+ {
+ options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
+ options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
+ options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
+ });
+ var onlyControllersApp = builder.Build();
+ onlyControllersApp.MapOpenApi();
+ onlyControllersApp.UseHttpsRedirection();
+ onlyControllersApp.MapControllers();
+ onlyControllersApp.Run();
+ return;
+}
+
builder.Services.AddDbContext(cfg => cfg
.UseNpgsql(
builder.Configuration.GetConnectionString("DefaultConnection"),
x => x.MigrationsAssembly("Suspectus.Gandalf.Palantir.Data")
)
);
-
builder.Services.AddAutoMapper(typeof(ApplicationContext).Assembly);
builder.Services.Configure(opt =>
diff --git a/src/dotnet/Suspectus.Gandalf.Palantir.Api/Properties/launchSettings.json b/src/dotnet/Suspectus.Gandalf.Palantir.Api/Properties/launchSettings.json
index d2ca3c6..380857d 100644
--- a/src/dotnet/Suspectus.Gandalf.Palantir.Api/Properties/launchSettings.json
+++ b/src/dotnet/Suspectus.Gandalf.Palantir.Api/Properties/launchSettings.json
@@ -20,6 +20,17 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
+ },
+ "http-openapi-only": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "launchUrl": "swagger",
+ "applicationUrl": "http://localhost:5035",
+ "commandLineArgs": "--controllers-only",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
}
}
}