using Confluent.Kafka.Admin;
using Microsoft.AspNetCore.Mvc;
using TelpoKafkaConsole.Service;
using TelpoKafkaConsole.WebApi.Controllers.Api;
using TelpoKafkaConsole.WebApi.Model.Request;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace TelpoKafkaConsole.WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TopicController : ControllerBase
    {
        private readonly KafkaAdminService _servicekafkaAdmin;

        public TopicController(KafkaAdminService kafkaAdminService) { _servicekafkaAdmin = kafkaAdminService; }    
       
        [HttpGet("{topic}")]
        public async Task<ApiResponse<List<TopicDescription>>> Get(string topic)
        {
            var topicInfo = await _servicekafkaAdmin.DescribeTopicsAsync(new List<string>() { topic });
            return ApiResponse<List<TopicDescription>>.Success(topicInfo);
        }

        [HttpPost]
        public async Task<ApiResponse<string>> Post([FromBody] TopicReq topic)
        {
            await _servicekafkaAdmin.CreateTopic(topic.TopicName,TimeSpan.FromDays(3));
            return ApiResponse<string>.Success($"创建 Topic {topic} 成功");
        }

        [HttpDelete("{topic}")]
        public async Task<ApiResponse<string>> Delete(string topic)
        {
            await _servicekafkaAdmin.DeleteTopics(new List<string>() {topic});
            return ApiResponse<string>.Success($"删除 Topic {topic} 成功");
        }
    }
}