using System.Collections.Generic; namespace GB5Shared.GOP.GBQueryExecutor.Models { /// Result of ExecuteScalarAsync — a single typed value. public sealed class QueryScalarResult { public T? Value { get; init; } public long DurationMs { get; init; } public bool IsSuccess { get; init; } public string? Error { get; init; } } /// Result of ExecuteRowAsync — a single row as a column-value map. public sealed class QueryRowResult { public IReadOnlyDictionary Row { get; init; } = new Dictionary(); public bool Found { get; init; } public long DurationMs { get; init; } } /// Result of ExecuteDatasetAsync — multiple rows. public sealed class QueryDataResult { public IReadOnlyList> Rows { get; init; } = []; public int RowsReturned { get; init; } public bool IsCapReached { get; init; } public long DurationMs { get; init; } } }