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 Keys { get; set; } = []; } /// Yazma isleminin sonucu. public class McpWriteResultDto { /// Insert'te uretilen anahtar; guncelleme ve silmede bostur. public string? Key { get; set; } /// Guncelleme ve silmede etkilenen satir sayisi. public int AffectedRows { get; set; } }