From a2001646092423421cabe7bc65553d5631a45a0e Mon Sep 17 00:00:00 2001 From: Aaron Po Date: Wed, 12 Nov 2025 18:36:51 -0500 Subject: [PATCH] Initialize solution structure and add WebAPI project --- BusinessLayer/BusinessLayer.csproj | 9 +++ DataAccessLayer/Class1.cs | 6 ++ DataAccessLayer/DataAccessLayer.csproj | 9 +++ DataAccessLayer/entities/UserAccount.cs | 0 DataAccessLayer/entities/UserCredential.cs | 0 DataAccessLayer/entities/UserVerification.cs | 0 .../DataLayer.csproj | 0 SeedDB/Program.cs => DataLayer/SeedDB.cs | 3 +- {SeedDB => DataLayer}/SeedStoredProcs.sql | 0 {SeedDB => DataLayer}/schema.sql | 0 WebAPI/Program.cs | 42 ++++++++++++ WebAPI/Properties/launchSettings.json | 23 +++++++ WebAPI/WebAPI.csproj | 13 ++++ WebAPI/WebAPI.http | 6 ++ WebAPI/appsettings.Development.json | 8 +++ WebAPI/appsettings.json | 9 +++ biergarten.sln | 68 +++++++++++++++---- 17 files changed, 181 insertions(+), 15 deletions(-) create mode 100644 BusinessLayer/BusinessLayer.csproj create mode 100644 DataAccessLayer/Class1.cs create mode 100644 DataAccessLayer/DataAccessLayer.csproj create mode 100644 DataAccessLayer/entities/UserAccount.cs create mode 100644 DataAccessLayer/entities/UserCredential.cs create mode 100644 DataAccessLayer/entities/UserVerification.cs rename SeedDB/SeedDB.csproj => DataLayer/DataLayer.csproj (100%) rename SeedDB/Program.cs => DataLayer/SeedDB.cs (98%) rename {SeedDB => DataLayer}/SeedStoredProcs.sql (100%) rename {SeedDB => DataLayer}/schema.sql (100%) create mode 100644 WebAPI/Program.cs create mode 100644 WebAPI/Properties/launchSettings.json create mode 100644 WebAPI/WebAPI.csproj create mode 100644 WebAPI/WebAPI.http create mode 100644 WebAPI/appsettings.Development.json create mode 100644 WebAPI/appsettings.json diff --git a/BusinessLayer/BusinessLayer.csproj b/BusinessLayer/BusinessLayer.csproj new file mode 100644 index 0000000..125f4c9 --- /dev/null +++ b/BusinessLayer/BusinessLayer.csproj @@ -0,0 +1,9 @@ + + + + net9.0 + enable + enable + + + diff --git a/DataAccessLayer/Class1.cs b/DataAccessLayer/Class1.cs new file mode 100644 index 0000000..b3a3edf --- /dev/null +++ b/DataAccessLayer/Class1.cs @@ -0,0 +1,6 @@ +namespace DataAccessLayer; + +public class Class1 +{ + +} diff --git a/DataAccessLayer/DataAccessLayer.csproj b/DataAccessLayer/DataAccessLayer.csproj new file mode 100644 index 0000000..125f4c9 --- /dev/null +++ b/DataAccessLayer/DataAccessLayer.csproj @@ -0,0 +1,9 @@ + + + + net9.0 + enable + enable + + + diff --git a/DataAccessLayer/entities/UserAccount.cs b/DataAccessLayer/entities/UserAccount.cs new file mode 100644 index 0000000..e69de29 diff --git a/DataAccessLayer/entities/UserCredential.cs b/DataAccessLayer/entities/UserCredential.cs new file mode 100644 index 0000000..e69de29 diff --git a/DataAccessLayer/entities/UserVerification.cs b/DataAccessLayer/entities/UserVerification.cs new file mode 100644 index 0000000..e69de29 diff --git a/SeedDB/SeedDB.csproj b/DataLayer/DataLayer.csproj similarity index 100% rename from SeedDB/SeedDB.csproj rename to DataLayer/DataLayer.csproj diff --git a/SeedDB/Program.cs b/DataLayer/SeedDB.cs similarity index 98% rename from SeedDB/Program.cs rename to DataLayer/SeedDB.cs index 3283211..c384b0a 100644 --- a/SeedDB/Program.cs +++ b/DataLayer/SeedDB.cs @@ -4,8 +4,7 @@ using System.Text; using Konscious.Security.Cryptography; using Microsoft.Data.SqlClient; - -string ConnectionString = Environment.GetEnvironmentVariable("SEEDDB_CONNECTION_STRING")!; +string ConnectionString = Environment.GetEnvironmentVariable("SEEDDB_CONNECTION_STRING")!; static async Task BuildSchema(SqlConnection connection) { diff --git a/SeedDB/SeedStoredProcs.sql b/DataLayer/SeedStoredProcs.sql similarity index 100% rename from SeedDB/SeedStoredProcs.sql rename to DataLayer/SeedStoredProcs.sql diff --git a/SeedDB/schema.sql b/DataLayer/schema.sql similarity index 100% rename from SeedDB/schema.sql rename to DataLayer/schema.sql diff --git a/WebAPI/Program.cs b/WebAPI/Program.cs new file mode 100644 index 0000000..7ffecff --- /dev/null +++ b/WebAPI/Program.cs @@ -0,0 +1,42 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddOpenApi(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.MapOpenApi(); +} + +app.UseHttpsRedirection(); + +var summaries = new[] +{ + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" +}; + +app.MapGet("/weatherforecast", () => +{ + var forecast = Enumerable.Range(1, 5).Select(index => + new WeatherForecast + ( + DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + Random.Shared.Next(-20, 55), + summaries[Random.Shared.Next(summaries.Length)] + )) + .ToArray(); + return forecast; +}) +.WithName("GetWeatherForecast"); + +app.UseStaticFiles(); +app.Run(); + +record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary) +{ + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); +} diff --git a/WebAPI/Properties/launchSettings.json b/WebAPI/Properties/launchSettings.json new file mode 100644 index 0000000..5941a5e --- /dev/null +++ b/WebAPI/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5069", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7002;http://localhost:5069", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/WebAPI/WebAPI.csproj b/WebAPI/WebAPI.csproj new file mode 100644 index 0000000..7383e60 --- /dev/null +++ b/WebAPI/WebAPI.csproj @@ -0,0 +1,13 @@ + + + + net9.0 + enable + enable + + + + + + + diff --git a/WebAPI/WebAPI.http b/WebAPI/WebAPI.http new file mode 100644 index 0000000..f3c8e91 --- /dev/null +++ b/WebAPI/WebAPI.http @@ -0,0 +1,6 @@ +@WebAPI_HostAddress = http://localhost:5069 + +GET {{WebAPI_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/WebAPI/appsettings.Development.json b/WebAPI/appsettings.Development.json new file mode 100644 index 0000000..ff66ba6 --- /dev/null +++ b/WebAPI/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/WebAPI/appsettings.json b/WebAPI/appsettings.json new file mode 100644 index 0000000..4d56694 --- /dev/null +++ b/WebAPI/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/biergarten.sln b/biergarten.sln index 1038e2e..971b0c9 100644 --- a/biergarten.sln +++ b/biergarten.sln @@ -3,7 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.14.36603.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeedDB", "SeedDB\SeedDB.csproj", "{45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataLayer", "DataLayer\DataLayer.csproj", "{F8223224-F3B7-4D9D-A701-9F0ADDA20792}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataAccessLayer", "DataAccessLayer\DataAccessLayer.csproj", "{5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebAPI", "WebAPI\WebAPI.csproj", "{D6B25565-723E-4F79-AA83-A48A3C3DD6C2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BusinessLayer", "BusinessLayer\BusinessLayer.csproj", "{EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,18 +21,54 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Debug|x64.ActiveCfg = Debug|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Debug|x64.Build.0 = Debug|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Debug|x86.ActiveCfg = Debug|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Debug|x86.Build.0 = Debug|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Release|Any CPU.Build.0 = Release|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Release|x64.ActiveCfg = Release|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Release|x64.Build.0 = Release|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Release|x86.ActiveCfg = Release|Any CPU - {45F7F75E-FD8D-4862-9BDB-6E59F6941DFB}.Release|x86.Build.0 = Release|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Debug|x64.ActiveCfg = Debug|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Debug|x64.Build.0 = Debug|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Debug|x86.ActiveCfg = Debug|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Debug|x86.Build.0 = Debug|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Release|Any CPU.Build.0 = Release|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Release|x64.ActiveCfg = Release|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Release|x64.Build.0 = Release|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Release|x86.ActiveCfg = Release|Any CPU + {F8223224-F3B7-4D9D-A701-9F0ADDA20792}.Release|x86.Build.0 = Release|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Debug|x64.ActiveCfg = Debug|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Debug|x64.Build.0 = Debug|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Debug|x86.ActiveCfg = Debug|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Debug|x86.Build.0 = Debug|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Release|Any CPU.Build.0 = Release|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Release|x64.ActiveCfg = Release|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Release|x64.Build.0 = Release|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Release|x86.ActiveCfg = Release|Any CPU + {5B2A93D1-007B-42D1-8F76-E1BF25F9B3B4}.Release|x86.Build.0 = Release|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Debug|x64.ActiveCfg = Debug|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Debug|x64.Build.0 = Debug|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Debug|x86.ActiveCfg = Debug|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Debug|x86.Build.0 = Debug|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Release|Any CPU.Build.0 = Release|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Release|x64.ActiveCfg = Release|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Release|x64.Build.0 = Release|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Release|x86.ActiveCfg = Release|Any CPU + {D6B25565-723E-4F79-AA83-A48A3C3DD6C2}.Release|x86.Build.0 = Release|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Debug|x64.ActiveCfg = Debug|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Debug|x64.Build.0 = Debug|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Debug|x86.ActiveCfg = Debug|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Debug|x86.Build.0 = Debug|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Release|Any CPU.Build.0 = Release|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Release|x64.ActiveCfg = Release|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Release|x64.Build.0 = Release|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Release|x86.ActiveCfg = Release|Any CPU + {EC30D3C4-34BB-4824-A0C5-6802BAAA6C48}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE