2025-11-02 10:21:28 -08:00

59 lines
2.4 KiB
C#

using Church.Net.DAL.EF;
using Church.Net.DAL.EFCoreDBF.Core;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using WebAPI.Hubs;
using WebAPI;
using Newtonsoft.Json.Serialization;
using WebAPI.Services;
using Microsoft.AspNetCore.Authorization;
using WebAPI.Handlers;
namespace Church.Net.WebAPI.Bindings
{
public class APIBinding : IBinding
{
public void Binding(IServiceCollection services)
{
services.AddControllers().AddNewtonsoftJson(options =>
{
// Use the default property (Pascal) casing
options.SerializerSettings.ContractResolver = new DefaultContractResolver()
{
NamingStrategy = new CamelCaseNamingStrategy(),
};
//options.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;
options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
services.AddSignalR();
services.AddSingleton<GameRoomLogic>();
services.AddSingleton<GameRoomHub>();
//Localted at \\ArkNAS\docker\ChurchAPI\docker-compose.yaml
string databaseConnString = Environment.GetEnvironmentVariable("DB_CONN_STRING");
#if DEBUG
databaseConnString = "Host=192.168.68.55;Port=49154;Database=Church;Username=chris;Password=1124";
#endif
//services.AddSingleton(_ => new DatabaseOptions { ConnectionString = databaseConnString });
services.AddSingleton(_ => new DatabaseOptions { ConnectionString = databaseConnString });
//services.AddSingleton<ChurchNetContext>(new ChurchNetContext());
services.AddDbContext<ChurchNetContext>(options =>
options.UseNpgsql(
//Configuration.GetConnectionString()
//"Host=192.168.68.55;Port=49154;Database=ChurchSandbox;Username=chris;Password=1124"
databaseConnString
));
services.AddHostedService<WorkerService>();
services.AddSingleton<IAuthorizationMiddlewareResultHandler, BasicAuthorizationMiddlewareResultHandler>();
}
}
}