package docker

import (
	"context"
	"gitee.ltd/lxh/wechat-robot/internal/config"
	"github.com/gofiber/fiber/v2/log"
)

const (
	// WechatBotLabelKey 微信机器人容器标签键
	WechatBotLabelKey = "app.type"
	// WechatBotLabelValue 微信机器人容器标签值
	WechatBotLabelValue = "wechat-bot"
)

// CreateRobotContainer 创建微信机器人容器
func CreateRobotContainer(ctx context.Context, cfg *config.DockerConfig, robotName string, port int) (string, string, error) {
	// 创建容器标签
	labels := map[string]string{
		WechatBotLabelKey: WechatBotLabelValue,
		"robot.name":      robotName,
	}

	// 创建环境变量
	env := []string{
		"BOT_NAME=" + robotName,
	}

	// 创建容器
	containerID, err := CreateContainer(ctx, cfg, "wechat-bot-"+robotName, env, labels, port)
	if err != nil {
		return "", "", err
	}

	// 启动容器
	err = StartContainer(ctx, containerID)
	if err != nil {
		// 如果启动失败，尝试删除容器
		_ = RemoveContainer(ctx, containerID, true)
		return "", "", err
	}

	// 获取容器访问地址
	containerHost, err := GetContainerHost(ctx, containerID, cfg)
	if err != nil {
		log.Warnf("警告: 无法获取容器访问地址: %v", err)
		containerHost = "localhost:9000" // 使用默认值
	}

	return containerID, containerHost, nil
}
