src/Cli/Program.cs
+11
-13
diff --git a/src/Cli/Program.cs b/src/Cli/Program.cs
index 35f8194..40614ce 100644
@@ -1,7 +1,7 @@
using System;
using System.Threading;
using System.Threading;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Slopper.Cli;
using Slopper.Domain;
using Slopper.Infrastructure.Ai;
@@ -20,16 +20,14 @@ using var app = builder.Build();
await app.StartAsync(CancellationToken.None);
// using var scope = app.Services.CreateScope();
// var clipGenerator = scope.ServiceProvider.GetRequiredService<ClipGenerator>();
// await clipGenerator.Generate(CancellationToken.None);
var clipExtractor = app.Services.GetRequiredService<IClipExtractor>();
await clipExtractor.ExtractClip(
new(Guid.NewGuid(), args[0], new Subtitles.Embedded(2)),
TimeSpan.FromSeconds(11),
TimeSpan.FromSeconds(2),
args[1],
CancellationToken.None
);
var logger = app.Services.GetRequiredService<ILogger<Program>>();
using var scope = app.Services.CreateScope();
var clipRepository = scope.ServiceProvider.GetRequiredService<IClipRepository>();
var clips = clipRepository.GetLatest();
await foreach (var clip in clips)
{
logger.LogInformation("Clip {ClipId} {Path} {CreatedAt}", clip.Id, clip.Path, clip.CreatedAt);
}
await app.StopAsync(CancellationToken.None);
src/Domain/IClipRepository.cs
+4
-0
diff --git a/src/Domain/IClipRepository.cs b/src/Domain/IClipRepository.cs
index 11ee6ab..f3f4e55 100644
@@ -1,3 +1,5 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -5,5 +7,7 @@ namespace Slopper.Domain;
public interface IClipRepository
{
IAsyncEnumerable<Clip> GetLatest(Guid? after = null, int limit = 10, CancellationToken cancellationToken = default);
Task Save(Clip clip, CancellationToken cancellationToken);
}
src/Infrastructure/Database/Slopper/ClipRepository.cs
+14
-0
diff --git a/src/Infrastructure/Database/Slopper/ClipRepository.cs b/src/Infrastructure/Database/Slopper/ClipRepository.cs
index 01debb2..6c57d4f 100644
@@ -1,11 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Slopper.Domain;
namespace Slopper.Infrastructure.Database.Slopper;
internal sealed class ClipRepository(SlopperDbContext slopperContext) : IClipRepository
{
public IAsyncEnumerable<Clip> GetLatest(Guid? after, int limit, CancellationToken cancellationToken)
{
IQueryable<Clip> query = slopperContext.Clips.OrderByDescending(c => c.Id);
if (after is Guid afterKey)
{
query = query.Where(q => q.Id < afterKey);
}
return query.Take(limit).AsAsyncEnumerable();
}
public async Task Save(Clip clip, CancellationToken cancellationToken)
{
slopperContext.Clips.Add(clip);