using System.Collections.Generic;
using System.ComponentModel;
using System.Threading.Tasks;
using ModelContextProtocol.Server;
using Sozsoft.Mcp.Dtos;
namespace Sozsoft.Mcp.Tools;
///
/// Veri yazma araclari. Yazma bir ListForm ekraninin sozlesmesinden gecer; ekran yetkisi ve
/// tenant filtresi aynen uygulanir. Sunucu kaydinda AllowWrite kapaliysa bu araclar
/// arac listesinde hic gorunmez.
///
[McpServerToolType]
public sealed class McpDataTools(IMcpDataAppService dataAppService)
{
[McpServerTool(Name = McpToolNames.InsertRow, Destructive = false, Idempotent = false)]
[Description("Bir listeye yeni kayit ekler. Alan adlari describe_list cikisindaki field degerleridir.")]
public async Task InsertRowAsync(
[Description("Kaydin eklenecegi listenin kodu.")]
string listFormCode,
[Description("Alan adi -> deger eslemesi.")]
Dictionary values)
=> await dataAppService.InsertRowAsync(new McpRowRequestDto
{
ListFormCode = listFormCode,
Values = values ?? []
});
[McpServerTool(Name = McpToolNames.UpdateRow, Destructive = true, Idempotent = true)]
[Description("Bir listedeki kaydi anahtar degerine gore gunceller. Yalnizca verilen alanlar yazilir.")]
public async Task UpdateRowAsync(
[Description("Kaydin bulundugu listenin kodu.")]
string listFormCode,
[Description("Guncellenecek kaydin anahtar alan degeri; describe_list cikisindaki keyFieldName alanina karsilik gelir.")]
List