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