update seed application

This commit is contained in:
Aaron Po
2026-01-12 00:14:42 -05:00
parent 372aac897a
commit c928ddecb5
3 changed files with 38 additions and 61 deletions

View File

@@ -4,6 +4,7 @@ using System.Text;
using Konscious.Security.Cryptography;
using Microsoft.Data.SqlClient;
string ConnectionString = Environment.GetEnvironmentVariable(
"DB_CONNECTION_STRING"
)!;
@@ -17,14 +18,15 @@ static async Task BuildSchema(SqlConnection connection)
static async Task AddStoredProcsAndFunctions(SqlConnection connection)
{
// New approach: load functions first, then procedures, from dedicated folders.
// Fallback to legacy combined file if folders are missing.
string projectRoot = Path.GetFullPath(
Path.Combine(AppContext.BaseDirectory, "..", "..", "..")
);
string functionsDir = Path.Combine(projectRoot, "seed", "functions");
string proceduresDir = Path.Combine(projectRoot, "seed", "procedures");
string crudDir = Path.GetFullPath(
Path.Combine(projectRoot, "..", "DataAccessLayer", "Sql", "crud")
);
if (Directory.Exists(functionsDir))
{
@@ -66,6 +68,26 @@ static async Task AddStoredProcsAndFunctions(SqlConnection connection)
}
}
if (Directory.Exists(crudDir))
{
foreach (
string file in Directory
.EnumerateFiles(
crudDir,
"*.sql",
SearchOption.TopDirectoryOnly
)
.OrderBy(f => f, StringComparer.OrdinalIgnoreCase)
)
{
string sql = await File.ReadAllTextAsync(file);
await ExecuteScriptAsync(connection, sql);
Console.WriteLine(
$"Executed CRUD script: {Path.GetFileName(file)}"
);
}
}
Console.WriteLine(
"Functions and stored procedures added or updated successfully."
);

View File

@@ -1,37 +1,5 @@
// Load a local .env file into environment variables when present (useful for local development)
try
{
var envPath = Path.Combine(Directory.GetCurrentDirectory(), ".env");
if (File.Exists(envPath))
{
foreach (var line in File.ReadAllLines(envPath))
{
var trimmed = line.Trim();
if (string.IsNullOrEmpty(trimmed) || trimmed.StartsWith("#"))
continue;
var idx = trimmed.IndexOf('=');
if (idx <= 0)
continue;
var key = trimmed.Substring(0, idx).Trim();
var val = trimmed.Substring(idx + 1).Trim();
if (val.Length >= 2 && ((val.StartsWith("\"") && val.EndsWith("\"")) || (val.StartsWith("'") && val.EndsWith("'"))))
{
val = val.Substring(1, val.Length - 2);
}
if (Environment.GetEnvironmentVariable(key) == null)
Environment.SetEnvironmentVariable(key, val);
}
}
}
catch
{
// If dotenv loading fails, continue without blocking startup.
}
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
@@ -39,7 +7,6 @@ builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
@@ -48,21 +15,6 @@ if (app.Environment.IsDevelopment())
}
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing",
"Bracing",
"Chilly",
"Cool",
"Mild",
"Warm",
"Balmy",
"Hot",
"Sweltering",
"Scorching",
};
app.MapControllers();
app.Run();

View File

@@ -8,15 +8,18 @@ services:
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "${SA_PASSWORD}"
ports:
- "1433:1433"
volumes:
- sqlserverdata:/var/opt/mssql
healthcheck:
test: [ "CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "localhost", "-U", "sa", "-P", "${SA_PASSWORD}", "-Q", "SELECT 1" ]
test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "localhost", "-U", "sa", "-P", "${SA_PASSWORD}", "-Q", "SELECT 1" ]
interval: 10s
timeout: 5s
retries: 12
networks:
- devnet
volumes:
sqlserverdata:
nuget-cache: