using economy.Models; using Microsoft.EntityFrameworkCore; using System.Text; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); // HttpClient »ç¿ë builder.Services.AddHttpClient(); builder.Services.AddHttpClient(); builder.Services.AddHttpClient(); builder.Services.AddHttpClient(); builder.Services.AddHttpClient(); builder.Services.AddHttpClient(); builder.Services.AddHttpClient(); builder.Services.AddMemoryCache(); // DB ¿¬°á builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // ÀÎÄÚµù µî·Ï var app = builder.Build(); // economy database bootstrap (creates once on first run) try { var masterCsb = new Microsoft.Data.SqlClient.SqlConnectionStringBuilder(builder.Configuration.GetConnectionString("DefaultConnection")) { InitialCatalog = "master" }; using var masterConn = new Microsoft.Data.SqlClient.SqlConnection(masterCsb.ConnectionString); masterConn.Open(); using var createDbCmd = masterConn.CreateCommand(); createDbCmd.CommandText = "IF DB_ID(N'economy') IS NULL CREATE DATABASE economy;"; createDbCmd.ExecuteNonQuery(); } catch (Exception e) { Console.WriteLine($"Database init error: {e.Message}"); } // ApiCache table bootstrap (creates once; app still boots if DB is down) using (var scope = app.Services.CreateScope()) { try { var context = scope.ServiceProvider.GetRequiredService(); context.Database.ExecuteSqlRaw("IF OBJECT_ID(N'dbo.ApiCache', N'U') IS NULL CREATE TABLE dbo.ApiCache (CacheKey NVARCHAR(100) NOT NULL PRIMARY KEY, Payload NVARCHAR(MAX) NOT NULL, UpdatedAt DATETIME2 NOT NULL);"); } catch (Exception e) { Console.WriteLine($"ApiCache init error: {e.Message}"); } } // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();