| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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<DataGoKR>();
- builder.Services.AddHttpClient<FlowerAtOrKR>();
- builder.Services.AddHttpClient<KoreaEximGoKR>();
- builder.Services.AddHttpClient<DhlotteryCoKR>();
- builder.Services.AddHttpClient<FIFA_API>();
- builder.Services.AddHttpClient<NTS_API>();
- builder.Services.AddHttpClient<Alpha_API>();
- builder.Services.AddMemoryCache();
- // DB ¿¬°á
- builder.Services.AddDbContext<EconomyContext>(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<EconomyContext>();
- 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();
|