private async Task <bool> HasRun(IOneTimeJob job, CancellationToken cancellationToken) { var sql = "SELECT COUNT([Id]) AS Count FROM [dbo].[Datasweep] WHERE [Id] = @id"; var count = await _dataSession.Sql(sql) .Parameter("@id", job.Id) .QueryValueAsync <int>(cancellationToken); return(count > 0); }
private async Task MarkDone(IOneTimeJob job, CancellationToken cancellationToken) { var jobType = job.GetType().Name; var sql = "INSERT [dbo].[Datasweep] ([Id], [Description]) VALUES (@id, @description)"; var result = await _dataSession.Sql(sql) .Parameter("@id", job.Id) .Parameter("@description", $"One-Time Job {jobType}") .ExecuteAsync(cancellationToken); }
private async Task ProcessAsync(IOneTimeJob job, CancellationToken cancellationToken) { if (await HasRun(job, cancellationToken)) { return; } await job.ExecuteAsync(cancellationToken); await MarkDone(job, cancellationToken); }