using BlueCurve.Search.Document.Common; using BlueCurve.Search.Indexing; using BlueCurve.Search.Job.Abstractions; namespace BlueCurve.Examples; public sealed class ExampleJob : IJob { public async Task StartAsync(JobPluginParameters parameters, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var url = new Uri("https://example.com/documents/welcome"); var documentId = parameters.Fingerprint.Compute(url.AbsoluteUri); var hostId = parameters.Fingerprint.ComputeHost(url); var index = parameters.DocumentBuilderFactory .CreateIndexBuilder(url, documentId, hostId) .AddFields(Field.CreateTitleField("Welcome")) .AddFields(Field.CreateMainContentField("This document was created by a BlueCurve job.")) .Build(new ContentType("text/plain")); if (await parameters.ResultPipeline.PostAsync(index)) { await parameters.StateStore.SetStringAsync("last_successful_document", url.AbsoluteUri, cancellationToken); } } public void Dispose() { } public ValueTask DisposeAsync() => ValueTask.CompletedTask; }