Files
jdescopingtool/OLD/WorkerService/Program.cs
T
Joseph Doherty 26ff8d9b4f Initial commit: JDE Scoping Tool migration project
Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
2026-01-02 07:43:29 -05:00

74 lines
2.6 KiB
C#
Executable File

using System;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Dapper;
using DataModel;
using Topshelf;
using WorkerService.Helpers;
using WorkerService.Models;
using WorkerService.Models.Reporting;
using WorkerService.Process;
namespace WorkerService
{
class Program
{
static void Main(string[] args)
{
string cs = Config.LotFinderDBCS;
//Load app domain assemblies
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => !a.IsDynamic).ToList();
var loadedPaths = loadedAssemblies.Select(a => a.Location).ToArray();
var referencedPaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll");
var toLoad = referencedPaths.Where(r => !loadedPaths.Contains(r, StringComparer.InvariantCultureIgnoreCase)).ToList();
toLoad.ForEach(path => loadedAssemblies.Add(AppDomain.CurrentDomain.Load(AssemblyName.GetAssemblyName(path))));
//Override defaults
SqlMapper.Settings.CommandTimeout = 1200 * 50;
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
DataSourceConfig dsConfig = UpdateProcessor.configs.FirstOrDefault(c => c.TableName.Contains("User"));
UpdateProcessor.DoUpdate(dsConfig.TableName);
return;
if (args.Length > 0 && args[0].Equals("REFRESH_ARCHIVE", StringComparison.CurrentCultureIgnoreCase))
{
Parallel.ForEach(UpdateProcessor.configs.Where(c => c.TableName.Contains("Hist")), config =>
{
UpdateProcessor.DoUpdate(config.TableName);
});
return;
}
Host host = HostFactory.New(x =>
{
x.UseNLog();
x.StartAutomatically();
x.EnableServiceRecovery(rc => { rc.RestartService(1); });
x.EnableShutdown();
x.Service<WorkProcessor>(s =>
{
s.ConstructUsing(name => new WorkProcessor());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("JDE scoping search processor");
x.SetDisplayName("JDE_SearchProcessor");
x.SetServiceName("JDE_SearchProcessor");
});
host.Run();
}
}
}