Migrating to Ratermania.Automation
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PartSource.Automation.Factories;
|
||||
using PartSource.Automation.Jobs;
|
||||
using PartSource.Automation.Jobs.Interfaces;
|
||||
@@ -11,107 +13,71 @@ using PartSource.Automation.Services;
|
||||
using PartSource.Data;
|
||||
using PartSource.Data.AutoMapper;
|
||||
using PartSource.Services;
|
||||
using Ratermania.Automation;
|
||||
using Ratermania.Automation.DependencyInjection;
|
||||
using Ratermania.Automation.Logging;
|
||||
using Ratermania.Shopify;
|
||||
using Ratermania.Shopify.DependencyInjection;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PartSource.Automation
|
||||
{ internal class Program
|
||||
{
|
||||
{
|
||||
class Program
|
||||
{
|
||||
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
IServiceProvider serviceProvider = ConfigureServices();
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
using IHost host = CreateHostBuilder().Build();
|
||||
|
||||
JobFactory jobFactory = serviceProvider.GetService<JobFactory>();
|
||||
EmailService emailService = serviceProvider.GetService<EmailService>();
|
||||
await host.StartAsync();
|
||||
}
|
||||
|
||||
foreach (string arg in args)
|
||||
{
|
||||
Console.Write($"Running job {arg}... ");
|
||||
|
||||
try
|
||||
{
|
||||
IAutomationJob job = jobFactory.Build(arg);
|
||||
AutomationJobResult result = job.Run().Result;
|
||||
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
emailService.Send($"{arg} Completed Successfully", result.Message);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
emailService.Send($"{arg} Failed", result.Message);
|
||||
}
|
||||
|
||||
Console.WriteLine("Done");
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static IServiceProvider ConfigureServices()
|
||||
{
|
||||
string environment = Environment.GetEnvironmentVariable("PS_AUTOMATION_ENVIRONMENT");
|
||||
|
||||
IConfigurationBuilder builder = new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
||||
.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true);
|
||||
|
||||
IConfigurationRoot configuration = builder.Build();
|
||||
|
||||
EmailConfiguration emailConfiguration = new EmailConfiguration();
|
||||
FtpConfiguration ftpConfiguration = new FtpConfiguration();
|
||||
SsisConfiguration ssisConfiguration = new SsisConfiguration();
|
||||
|
||||
configuration.Bind("emailConfiguration", emailConfiguration);
|
||||
configuration.Bind("ftpConfiguration", ftpConfiguration);
|
||||
configuration.Bind("ssisConfiguration", ssisConfiguration);
|
||||
|
||||
ServiceProvider serviceProvider = new ServiceCollection()
|
||||
.AddDbContext<PartSourceContext>(options =>
|
||||
options.UseSqlServer(configuration.GetConnectionString("PartSourceDatabase"), opts => opts.EnableRetryOnFailure())
|
||||
)
|
||||
|
||||
.AddShopify(options =>
|
||||
private static IHostBuilder CreateHostBuilder()
|
||||
{
|
||||
return Host.CreateDefaultBuilder()
|
||||
.ConfigureAppConfiguration(builder =>
|
||||
{
|
||||
options.ApiKey = configuration["Shopify:ApiKey"];
|
||||
options.ApiSecret = configuration["Shopify:ApiSecret"];
|
||||
options.ApiVersion = "2020-01";
|
||||
options.ShopDomain = configuration["Shopify:ShopDomain"];
|
||||
})
|
||||
string environment = Environment.GetEnvironmentVariable("AUTOMATION_ENVIRONMENT");
|
||||
|
||||
.AddAutoMapper(typeof(PartSourceProfile))
|
||||
builder.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
||||
.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true);
|
||||
})
|
||||
.ConfigureServices((builder, services) =>
|
||||
{
|
||||
services.AddDbContext<PartSourceContext>(options =>
|
||||
options.UseSqlServer(builder.Configuration.GetConnectionString("PartSourceDatabase"), opts => opts.EnableRetryOnFailure())
|
||||
)
|
||||
|
||||
.AddSingleton(emailConfiguration)
|
||||
.AddSingleton(ftpConfiguration)
|
||||
.AddSingleton(ssisConfiguration)
|
||||
.AddSingleton<NexpartService>()
|
||||
.AddSingleton<VehicleService>()
|
||||
.AddSingleton<SsisService>()
|
||||
.AddSingleton<FtpService>()
|
||||
.AddSingleton<EmailService>()
|
||||
.AddSingleton<AddAndUpdateProducts>()
|
||||
//.AddSingleton<BuildCategories>()
|
||||
//.AddSingleton<BackupProducts>()
|
||||
//.AddSingleton<BuildVehicleCache>()
|
||||
.AddSingleton<DeleteProducts>()
|
||||
.AddSingleton<StatusCheck>()
|
||||
.AddSingleton<UpdateFitment>()
|
||||
.AddSingleton<UpdatePricing>()
|
||||
.AddSingleton<UpdatePositioning>()
|
||||
.AddSingleton<ExecuteSsisPackages>()
|
||||
.AddSingleton<JobFactory>()
|
||||
.BuildServiceProvider();
|
||||
.AddShopify(options =>
|
||||
{
|
||||
options.ApiKey = builder.Configuration["Shopify:ApiKey"];
|
||||
options.ApiSecret = builder.Configuration["Shopify:ApiSecret"];
|
||||
options.ApiVersion = "2020-01";
|
||||
options.ShopDomain = builder.Configuration["Shopify:ShopDomain"];
|
||||
})
|
||||
|
||||
return serviceProvider;
|
||||
}
|
||||
}
|
||||
.AddAutomation(options =>
|
||||
{
|
||||
options.HasBaseInterval(new TimeSpan(0, 1, 0))
|
||||
.HasMaxFailures(5)
|
||||
.HasJob<TestJob>(options =>
|
||||
{
|
||||
options.HasInterval(new TimeSpan(0, 5, 0));
|
||||
})
|
||||
.AddApiServer();
|
||||
})
|
||||
|
||||
.AddAutoMapper(typeof(PartSourceProfile));
|
||||
})
|
||||
.ConfigureLogging((builder, logging) =>
|
||||
{
|
||||
logging.AddEventLog();
|
||||
|
||||
logging.AddProvider(new AutomationLoggerProvider());
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user