From 81d01f28a35564426f89e3ee060dd8ba96037bf4 Mon Sep 17 00:00:00 2001 From: Jeff Leung Date: Sat, 13 Jan 2024 13:30:28 -0800 Subject: [PATCH] Add initial work to get minimal API's going --- ...1024.GeoFeed.Core.GeoFeedLocalCache.csproj | 23 +++++++++++++++ .../GeoFeedCacheDbContext.cs | 0 .../GeoFeedLocalCache/GeoFeedCacheEntry.cs | 0 .../GeoFeedLocalCache/GeoFeedCacheService.cs | 0 .../GeoFeedDesignTimeMigration.cs | 0 .../GeoFeedPreloader/PreloadGeoFeed.cs | 0 ...0240113204143_InitialMigration.Designer.cs | 0 .../20240113204143_InitialMigration.cs | 0 .../GeoFeedCacheDbContextModelSnapshot.cs | 0 .../AS1024.GeoFeed.MinimalAPI.csproj | 16 ++++++++++ AS1024.GeoFeed.MinimalAPI/Dockerfile | 29 +++++++++++++++++++ AS1024.GeoFeed.MinimalAPI/Program.cs | 18 ++++++++++++ .../Properties/launchSettings.json | 24 +++++++++++++++ .../appsettings.Development.json | 8 +++++ AS1024.GeoFeed.MinimalAPI/appsettings.json | 9 ++++++ AS1024.GeoFeed.sln | 16 ++++++++-- AS1024.GeoFeed/AS1024.GeoFeed.csproj | 1 + 17 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/GeoFeedLocalCache/GeoFeedCacheDbContext.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/GeoFeedLocalCache/GeoFeedCacheEntry.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/GeoFeedLocalCache/GeoFeedCacheService.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/GeoFeedPreloader/PreloadGeoFeed.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/Migrations/20240113204143_InitialMigration.Designer.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/Migrations/20240113204143_InitialMigration.cs (100%) rename {AS1024.GeoFeed.Core => AS1024.GeoFeed.Core.GeoFeedLocalCache}/Migrations/GeoFeedCacheDbContextModelSnapshot.cs (100%) create mode 100644 AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj create mode 100644 AS1024.GeoFeed.MinimalAPI/Dockerfile create mode 100644 AS1024.GeoFeed.MinimalAPI/Program.cs create mode 100644 AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json create mode 100644 AS1024.GeoFeed.MinimalAPI/appsettings.Development.json create mode 100644 AS1024.GeoFeed.MinimalAPI/appsettings.json diff --git a/AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj b/AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj new file mode 100644 index 0000000..b4b33b9 --- /dev/null +++ b/AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj @@ -0,0 +1,23 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + + + + diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheDbContext.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheDbContext.cs similarity index 100% rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheDbContext.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheDbContext.cs diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheEntry.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheEntry.cs similarity index 100% rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheEntry.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheEntry.cs diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheService.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheService.cs similarity index 100% rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheService.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheService.cs diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs similarity index 100% rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs diff --git a/AS1024.GeoFeed.Core/GeoFeedPreloader/PreloadGeoFeed.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedPreloader/PreloadGeoFeed.cs similarity index 100% rename from AS1024.GeoFeed.Core/GeoFeedPreloader/PreloadGeoFeed.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedPreloader/PreloadGeoFeed.cs diff --git a/AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.Designer.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.Designer.cs similarity index 100% rename from AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.Designer.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.Designer.cs diff --git a/AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.cs similarity index 100% rename from AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.cs diff --git a/AS1024.GeoFeed.Core/Migrations/GeoFeedCacheDbContextModelSnapshot.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/GeoFeedCacheDbContextModelSnapshot.cs similarity index 100% rename from AS1024.GeoFeed.Core/Migrations/GeoFeedCacheDbContextModelSnapshot.cs rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/GeoFeedCacheDbContextModelSnapshot.cs diff --git a/AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj b/AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj new file mode 100644 index 0000000..e2a9130 --- /dev/null +++ b/AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj @@ -0,0 +1,16 @@ + + + + net8.0 + enable + enable + true + true + Linux + + + + + + + diff --git a/AS1024.GeoFeed.MinimalAPI/Dockerfile b/AS1024.GeoFeed.MinimalAPI/Dockerfile new file mode 100644 index 0000000..53ab0b5 --- /dev/null +++ b/AS1024.GeoFeed.MinimalAPI/Dockerfile @@ -0,0 +1,29 @@ +#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. + +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +USER app +WORKDIR /app +EXPOSE 8080 + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +# Install clang/zlib1g-dev dependencies for publishing to native +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + clang zlib1g-dev +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj", "AS1024.GeoFeed.MinimalAPI/"] +RUN dotnet restore "./AS1024.GeoFeed.MinimalAPI/./AS1024.GeoFeed.MinimalAPI.csproj" +COPY . . +WORKDIR "/src/AS1024.GeoFeed.MinimalAPI" +RUN dotnet build "./AS1024.GeoFeed.MinimalAPI.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./AS1024.GeoFeed.MinimalAPI.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=true + +FROM mcr.microsoft.com/dotnet/runtime-deps:8.0 AS final +WORKDIR /app +EXPOSE 8080 +COPY --from=publish /app/publish . +ENTRYPOINT ["./AS1024.GeoFeed.MinimalAPI"] \ No newline at end of file diff --git a/AS1024.GeoFeed.MinimalAPI/Program.cs b/AS1024.GeoFeed.MinimalAPI/Program.cs new file mode 100644 index 0000000..7f35304 --- /dev/null +++ b/AS1024.GeoFeed.MinimalAPI/Program.cs @@ -0,0 +1,18 @@ +using System.Text.Json.Serialization; + +namespace AS1024.GeoFeed.MinimalAPI +{ + public class Program + { + public static void Main(string[] args) + { + var builder = WebApplication.CreateSlimBuilder(args); + + var app = builder.Build(); + var geoFeed = app.MapGroup("/geofeed.csv"); + + app.Run(); + } + } + +} diff --git a/AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json b/AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json new file mode 100644 index 0000000..6fce47b --- /dev/null +++ b/AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json @@ -0,0 +1,24 @@ +{ + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "todos", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5127" + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/todos", + "environmentVariables": { + "ASPNETCORE_HTTP_PORTS": "8080" + }, + "publishAllPorts": true + } + }, + "$schema": "http://json.schemastore.org/launchsettings.json" +} \ No newline at end of file diff --git a/AS1024.GeoFeed.MinimalAPI/appsettings.Development.json b/AS1024.GeoFeed.MinimalAPI/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/AS1024.GeoFeed.MinimalAPI/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/AS1024.GeoFeed.MinimalAPI/appsettings.json b/AS1024.GeoFeed.MinimalAPI/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/AS1024.GeoFeed.MinimalAPI/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/AS1024.GeoFeed.sln b/AS1024.GeoFeed.sln index dd95a8e..cf44d7b 100644 --- a/AS1024.GeoFeed.sln +++ b/AS1024.GeoFeed.sln @@ -8,9 +8,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed", "AS1024.Ge {8BA82A53-29E7-44A2-91BA-57C15BB4B0F5} = {8BA82A53-29E7-44A2-91BA-57C15BB4B0F5} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS1024.GeoFeed.Models", "AS1024.GeoFeed.Models\AS1024.GeoFeed.Models.csproj", "{8BA82A53-29E7-44A2-91BA-57C15BB4B0F5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed.Models", "AS1024.GeoFeed.Models\AS1024.GeoFeed.Models.csproj", "{8BA82A53-29E7-44A2-91BA-57C15BB4B0F5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS1024.GeoFeed.Core", "AS1024.GeoFeed.Core\AS1024.GeoFeed.Core.csproj", "{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed.Core", "AS1024.GeoFeed.Core\AS1024.GeoFeed.Core.csproj", "{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed.MinimalAPI", "AS1024.GeoFeed.MinimalAPI\AS1024.GeoFeed.MinimalAPI.csproj", "{36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS1024.GeoFeed.Core.GeoFeedLocalCache", "AS1024.GeoFeed.Core.GeoFeedLocalCache\AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj", "{C474F55D-AE8E-4DF3-A241-FB017551C74A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -30,6 +34,14 @@ Global {EE6D6C87-29C4-42A1-8251-7D2BF20F1797}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE6D6C87-29C4-42A1-8251-7D2BF20F1797}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE6D6C87-29C4-42A1-8251-7D2BF20F1797}.Release|Any CPU.Build.0 = Release|Any CPU + {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Release|Any CPU.Build.0 = Release|Any CPU + {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AS1024.GeoFeed/AS1024.GeoFeed.csproj b/AS1024.GeoFeed/AS1024.GeoFeed.csproj index 34ca58a..e739f05 100644 --- a/AS1024.GeoFeed/AS1024.GeoFeed.csproj +++ b/AS1024.GeoFeed/AS1024.GeoFeed.csproj @@ -22,6 +22,7 @@ +