:drunk: No idea what did AI did
This commit is contained in:
		| @@ -1,9 +1,9 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\DysonNetwork.Common\DysonNetwork.Common.csproj" /> | ||||
|      | ||||
|     </ItemGroup> | ||||
|     <ProjectReference Include="..\DysonNetwork.Sphere\DysonNetwork.Sphere.csproj" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AngleSharp" Version="1.3.0" /> | ||||
| @@ -12,11 +12,13 @@ | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.6" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.3.0" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.3.0" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.6" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="9.0.6" /> | ||||
|     <PackageReference Include="Minio" Version="6.0.5" /> | ||||
|     <PackageReference Include="NetVips" Version="3.1.0" /> | ||||
|     <PackageReference Include="NodaTime" Version="3.2.2" /> | ||||
|     <PackageReference Include="NodaTime.Serialization.JsonNet" Version="3.2.0" /> | ||||
|     <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" /> | ||||
|     <PackageReference Include="Quartz" Version="3.14.0" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="9.0.1" /> | ||||
|     <PackageReference Include="tusdotnet" Version="2.10.0" /> | ||||
| @@ -26,6 +28,8 @@ | ||||
|     <TargetFramework>net9.0</TargetFramework> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <Nullable>enable</Nullable> | ||||
|     <GenerateDocumentationFile>true</GenerateDocumentationFile> | ||||
|     <NoWarn>1701;1702;1591</NoWarn> | ||||
|   </PropertyGroup> | ||||
|  | ||||
| </Project> | ||||
|   | ||||
| @@ -4,16 +4,11 @@ using Quartz; | ||||
| using DysonNetwork.Drive.Auth; | ||||
| using DysonNetwork.Drive.Models; | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| using DysonNetwork.Common.Models; | ||||
| using System; | ||||
|  | ||||
| namespace DysonNetwork.Drive.Handlers; | ||||
|  | ||||
| public class LastActiveInfo | ||||
| { | ||||
|     public Session Session { get; set; } = null!; | ||||
|     public Account Account { get; set; } = null!; | ||||
|     public Instant SeenAt { get; set; } | ||||
| } | ||||
|  | ||||
| public class LastActiveFlushHandler(IServiceProvider serviceProvider) : IFlushHandler<LastActiveInfo> | ||||
| { | ||||
|     public async Task FlushAsync(IReadOnlyList<LastActiveInfo> items) | ||||
| @@ -23,18 +18,18 @@ public class LastActiveFlushHandler(IServiceProvider serviceProvider) : IFlushHa | ||||
|  | ||||
|         // Remove duplicates by grouping on (sessionId, accountId), taking the most recent SeenAt | ||||
|         var distinctItems = items | ||||
|             .GroupBy(x => (SessionId: x.Session.Id, AccountId: x.Account.Id)) | ||||
|             .GroupBy(x => (SessionId: x.SessionId, AccountId: x.AccountId)) | ||||
|             .Select(g => g.OrderByDescending(x => x.SeenAt).First()) | ||||
|             .ToList(); | ||||
|  | ||||
|         // Build dictionaries so we can match session/account IDs to their new "last seen" timestamps | ||||
|         var sessionIdMap = distinctItems | ||||
|             .GroupBy(x => x.SessionId) | ||||
|             .ToDictionary(g => g.Key, g => g.Last().SeenAt); | ||||
|             .ToDictionary(g => Guid.Parse(g.Key), g => g.Last().SeenAt); | ||||
|  | ||||
|         var accountIdMap = distinctItems | ||||
|             .GroupBy(x => x.AccountId) | ||||
|             .ToDictionary(g => g.Key, g => g.Last().SeenAt); | ||||
|             .ToDictionary(g => Guid.Parse(g.Key), g => g.Last().SeenAt); | ||||
|  | ||||
|         // Update sessions using native EF Core ExecuteUpdateAsync | ||||
|         foreach (var kvp in sessionIdMap) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user