Files
AI-Stock-Trader/WebServer/Program.cs
T

65 lines
2.2 KiB
C#

using WebServer.Components;
using Controllers.PythonInterop;
using Controllers.DataBase;
using Controllers.Payment;
// Load the module in globally and use correct path for local or docker runners
AIModule interopModule = new AIModule();
if (args.Contains("Retrain-AI")) {
// This runs once per month on the first -> set by the crontab.txt
interopModule.PullAI();
interopModule.TrainAI();
} else if (args.Contains("Perform-AI")) {
// This runs every hour that the stock market is open -> set by the crontab.txt
// Get all current holdings for Stocks
// Perform the AI Signal per stock
// Perform action in background for each stock
} else {
// This runs when the server is started normally
// Make sure the data is ready before first run
string firstPullRan = (new DbDriver()).Get("FirstPull");
if (firstPullRan != "1") {
interopModule.PullAI();
interopModule.TrainAI();
(new DbDriver()).Set("FirstPull", "1");
}
// Create the webapp
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
// Insert the DB driver for Dependency Injection
builder.Services.AddScoped<DbDriver>();
// Insert the payment Processor
builder.Services.AddSingleton<IPayment>(
new PaymentTestor() // Of type Payment Testor -> Change this with stripe or square in the future
);
// Insert the python modlue for Dependency Injection
builder.Services.AddSingleton(interopModule);
// Build the app
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment()) {
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
// Conffigure policies
app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents<App>().AddInteractiveServerRenderMode();
// Start the web app
app.Run();
}