sozsoft-platform/api/modules/Sozsoft.Mcp/Sozsoft.Mcp.Application.Contracts/Dtos/McpQueryDtos.cs
2026-09-10 17:40:43 +03:00

127 lines
4.3 KiB
C#

using System.Collections.Generic;
namespace Sozsoft.Mcp.Dtos;
/// <summary>
/// Bir listenin verisini ekranin kendi sorgusuyla okuma istegi. Filtre, siralama ve gruplama
/// DevExtreme veri yukleme bicimindedir; ekranin grid'i de ayni bicimi kullanir.
/// </summary>
public class McpListQueryRequestDto
{
public string ListFormCode { get; set; } = string.Empty;
/// <summary>Ornek: <c>["Status","=","Open"]</c> ya da <c>[["A","&gt;",1],"and",["B","contains","x"]]</c>.</summary>
public string? Filter { get; set; }
/// <summary>Ornek: <c>[{"selector":"CreationTime","desc":true}]</c>.</summary>
public string? Sort { get; set; }
/// <summary>Ornek: <c>[{"selector":"CustomerId","desc":false,"isExpanded":false}]</c>.</summary>
public string? Group { get; set; }
/// <summary>Ornek: <c>[{"selector":"Id","summaryType":"count"}]</c>.</summary>
public string? GroupSummary { get; set; }
/// <summary>Ornek: <c>[{"selector":"Amount","summaryType":"sum"}]</c>.</summary>
public string? TotalSummary { get; set; }
public int Skip { get; set; }
/// <summary>Istenen satir sayisi; sunucu kaydindaki tavana kirpilir.</summary>
public int Take { get; set; }
}
/// <summary>Liste sorgusunun sonucu.</summary>
public class McpListQueryResultDto
{
public object? Data { get; set; }
/// <summary>Filtreye uyan toplam kayit sayisi (sayfalamadan once).</summary>
public int TotalCount { get; set; }
public int GroupCount { get; set; }
public object[]? Summary { get; set; }
/// <summary>Uygulanan satir tavani; <see cref="TotalCount"/> bundan buyukse sonuc sayfalanmistir.</summary>
public int Take { get; set; }
}
/// <summary>Parametreli tek SELECT istegi.</summary>
public class McpSelectRequestDto
{
public string Sql { get; set; } = string.Empty;
/// <summary>Sorgudaki adli parametreler.</summary>
public Dictionary<string, object?> Parameters { get; set; } = [];
/// <summary>Istenen satir sayisi; sunucu kaydindaki tavana kirpilir.</summary>
public int MaxRows { get; set; }
}
/// <summary>
/// Kayitli bir veritabani nesnesi (view, stored procedure, function) ya da Custom Endpoint.
/// </summary>
public class McpSavedQueryDto
{
/// <summary><c>McpConsts.SavedQueryKinds</c> degerlerinden biri.</summary>
public string Kind { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string? SchemaName { get; set; }
public string? Description { get; set; }
/// <summary>Custom Endpoint'te beklenen parametre adlari; veritabani nesnelerinde bostur.</summary>
public List<string> ParameterNames { get; set; } = [];
}
/// <summary>Kayitli bir nesnenin ya da Custom Endpoint'in cagrilmasi.</summary>
public class McpSavedQueryRequestDto
{
/// <summary><see cref="McpSavedQueryDto.Kind"/> ile ayni degerler.</summary>
public string Kind { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
/// <summary>Bos birakilirsa saglayicinin varsayilan semasi kullanilir.</summary>
public string? SchemaName { get; set; }
public Dictionary<string, object?> Parameters { get; set; } = [];
public int MaxRows { get; set; }
}
/// <summary>Sorgu sonucu.</summary>
public class McpQueryResultDto
{
public List<string> Columns { get; set; } = [];
public List<Dictionary<string, object?>> Rows { get; set; } = [];
public int RowCount { get; set; }
/// <summary>Satir sayisi tavana dayandiginda true; sonuc kesilmis demektir.</summary>
public bool Truncated { get; set; }
public long ExecutionTimeMs { get; set; }
}
/// <summary>Bir ListForm ekrani uzerinden kayit yazma/silme istegi.</summary>
public class McpRowRequestDto
{
public string ListFormCode { get; set; } = string.Empty;
/// <summary>Alan adi → deger. Silme isleminde bos birakilir.</summary>
public Dictionary<string, object?> Values { get; set; } = [];
/// <summary>Guncelleme ve silmede anahtar alan degerleri.</summary>
public List<object?> Keys { get; set; } = [];
}
/// <summary>Yazma isleminin sonucu.</summary>
public class McpWriteResultDto
{
/// <summary>Insert'te uretilen anahtar; guncelleme ve silmede bostur.</summary>
public string? Key { get; set; }
/// <summary>Guncelleme ve silmede etkilenen satir sayisi.</summary>
public int AffectedRows { get; set; }
}