using System.Text.Json; using System.Text.Json.Serialization; namespace SfeduSchedule.Plugin.UniVerse; public sealed record UniverseUserLookupResult( UniverseUserLookupStatus Status, string? SubId = null, string? ErrorMessage = null) { public static UniverseUserLookupResult Found(string subId) => new(UniverseUserLookupStatus.Found, subId); public static UniverseUserLookupResult NotFound() => new(UniverseUserLookupStatus.NotFound); public static UniverseUserLookupResult UpstreamError(string message) => new(UniverseUserLookupStatus.UpstreamError, ErrorMessage: message); } internal sealed record UniverseUsersGraphQlRequest( [property: JsonPropertyName("query")] string Query, [property: JsonPropertyName("variables")] UniverseUsersGraphQlVariables Variables); internal sealed record UniverseUsersGraphQlVariables( [property: JsonPropertyName("t")] string Text); internal sealed record UniverseUsersGraphQlResponse( [property: JsonPropertyName("data")] UniverseUsersGraphQlData? Data, [property: JsonPropertyName("errors")] IReadOnlyList? Errors); internal sealed record UniverseUsersGraphQlData( [property: JsonPropertyName("users")] UniverseUsersConnection? Users); internal sealed record UniverseUsersConnection( [property: JsonPropertyName("items")] IReadOnlyList Items); internal sealed record UniverseUserItem( [property: JsonPropertyName("id")] string? Id, [property: JsonPropertyName("name")] string? Name, [property: JsonPropertyName("displayName")] string? DisplayName, [property: JsonPropertyName("description")] string? Description);