From 3d1d21ed0ab9c2a15a964e3d86104279e0d2cc60 Mon Sep 17 00:00:00 2001 From: ivar Date: Tue, 7 Oct 2025 23:19:14 +0200 Subject: as --- VegaData/Program.cs | 58 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) (limited to 'VegaData/Program.cs') diff --git a/VegaData/Program.cs b/VegaData/Program.cs index ee1dad5..e6ca86a 100644 --- a/VegaData/Program.cs +++ b/VegaData/Program.cs @@ -14,8 +14,10 @@ try { } catch (Exception e) { Console.WriteLine(e); } + app.MapStaticAssets(); -app.MapGet("shows", (Database db) => db.Shows); +app.MapGet("shows", (Database db) => db.Shows.Where(c => c.StartDateTime >= DateTime.Now).ToList()); +app.MapGet("tz", () => TimeZoneInfo.Local.Id); app.MapGet("/", () => Results.Redirect("/index.html")); app.Run(); @@ -36,20 +38,20 @@ class Database(DbContextOptions options) : DbContext(options) class Show { public int Id { get; set; } - public string Title { get; set; } - public string Scene { get; set; } - public DateTime StartDateTime { get; set; } - public string TicketUrl { get; set; } - public string Type { get; set; } - public string MovieVersion { get; set; } - public string MovieMainVersion { get; set; } - public string[] Tags { get; set; } + public required string Title { get; set; } + public required string Scene { get; set; } + public required DateTime StartDateTime { get; set; } + public required string TicketUrl { get; set; } + public required string Type { get; set; } + public required string MovieVersion { get; set; } + public required string MovieMainVersion { get; set; } + public required string[] Tags { get; set; } } class DataWorker(IServiceScopeFactory serviceScopeFactory) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { - const int hour = 3600 * 60 * 60 * 60; + const int hour = 3600 * 60; while (!stoppingToken.IsCancellationRequested) { try { await Work(stoppingToken); @@ -66,10 +68,9 @@ class DataWorker(IServiceScopeFactory serviceScopeFactory) : BackgroundService var http = scope.ServiceProvider.GetRequiredService(); var logger = scope.ServiceProvider.GetRequiredService>(); var refreshData = Environment.GetEnvironmentVariable("VEGADATA_REFRESH_DATA") == "1"; - logger.LogInformation("Syncing data. refresh:{refreshData}", refreshData); + logger.LogInformation("Syncing data. Refresh={RefreshData}", refreshData); var shows = await http.GetFromJsonAsync("https://www.vegascene.no/api/program", ct); var addedCount = 0; - if (refreshData) { db.Shows.RemoveRange(db.Shows); await db.SaveChangesAsync(ct); @@ -79,14 +80,14 @@ class DataWorker(IServiceScopeFactory serviceScopeFactory) : BackgroundService var count = await db.Shows.CountAsync(ct); foreach (var show in shows?.Shows ?? []) { - var existing = await db.Shows.AnyAsync(s => - s.Title == show.MovieTitle && s.StartDateTime == show.ShowStart, ct); + if (string.IsNullOrWhiteSpace(show.TicketSaleUrl)) continue; + var existing = await db.Shows.AnyAsync(s => s.Title == show.MovieTitle && s.StartDateTime == show.ShowStart, ct); if (existing) continue; - logger.LogInformation("Adding show {title} at {startDateTime}", show.MovieTitle, show.ShowStart); + logger.LogInformation("Adding show {Title} at {StartDateTime}", show.MovieTitle, show.ShowStart); db.Shows.Add(new Show() { Title = show.MovieTitle, Scene = show.ScreenName, - StartDateTime = show.ShowStart.ToUniversalTime(), + StartDateTime = show.ShowStart, MovieMainVersion = show.MovieMainVersionId, MovieVersion = show.MovieVersionId, TicketUrl = show.TicketSaleUrl, @@ -96,47 +97,44 @@ class DataWorker(IServiceScopeFactory serviceScopeFactory) : BackgroundService addedCount++; } await db.SaveChangesAsync(ct); - logger.LogInformation("Synced data, old count:{count}, new count:{addedCount}", count, addedCount); + logger.LogInformation("Synced data, old count:{Count}, new count:{AddedCount}", count, addedCount); } class ShowsResponse { - public List Shows { get; set; } + public required List Shows { get; set; } } class VegaShow { [JsonPropertyName("screenName")] - public string ScreenName { get; set; } + public required string ScreenName { get; set; } [JsonPropertyName("ticketSaleUrl")] - public string TicketSaleUrl { get; set; } + public required string TicketSaleUrl { get; set; } [JsonPropertyName("showType")] - public string ShowType { get; set; } + public required string ShowType { get; set; } [JsonPropertyName("showStart")] - public DateTime ShowStart { get; set; } + public required DateTime ShowStart { get; set; } [JsonPropertyName("movieVersionId")] - public string MovieVersionId { get; set; } + public required string MovieVersionId { get; set; } [JsonPropertyName("movieMainVersionId")] - public string MovieMainVersionId { get; set; } + public required string MovieMainVersionId { get; set; } [JsonPropertyName("movieTitle")] - public string MovieTitle { get; set; } + public required string MovieTitle { get; set; } [JsonPropertyName("versionTags")] - public VersionTag[] VersionTags { get; set; } + public required VersionTag[] VersionTags { get; set; } } public class VersionTag { [JsonPropertyName("tag")] - public string Tag { get; set; } - - [JsonPropertyName("type")] - public string Type { get; set; } + public required string Tag { get; set; } } } \ No newline at end of file -- cgit v1.3