summaryrefslogtreecommitdiffstats
path: root/VegaData/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'VegaData/Program.cs')
-rw-r--r--VegaData/Program.cs58
1 files changed, 28 insertions, 30 deletions
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<Database> 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<HttpClient>();
var logger = scope.ServiceProvider.GetRequiredService<ILogger<DataWorker>>();
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<ShowsResponse>("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<VegaShow> Shows { get; set; }
+ public required List<VegaShow> 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