package dao

import (
	"github.com/tidbcloud/aipower/commons/database"
	"github.com/tidbcloud/aipower/internal/bean/entity"
)

func GetLatestPromptByAIModelAndDeploy(aiModel, deployment string) (*entity.PromptTemplate, error) {
	var (
		prompt entity.PromptTemplate
		db     = database.DBConn.DB.Table("prompt_templates")
	)

	err := db.Where("ai_model = ? AND deployment = ?", aiModel, deployment).Order("created_at DESC").First(&prompt).Error

	return &prompt, err
}

func GetAllPromptsByAIModelAndDeploy(aiModel, deployment string) ([]entity.PromptTemplate, error) {
	var (
		prompts []entity.PromptTemplate
		db      = database.DBConn.DB.Table("prompt_templates")
	)

	q := db

	if aiModel != "" {
		q = q.Where("ai_model = ?", aiModel)
	}
	if deployment != "" {
		q = q.Where("deployment = ?", deployment)
	}

	err := q.Order("created_at DESC").Find(&prompts).Error

	return prompts, err
}

func SavePrompt(aiModel, deployment, version, content string) error {
	db := database.DBConn.DB.Table("prompt_templates")

	return db.Save(&entity.PromptTemplate{
		AIModel:    aiModel,
		Deployment: deployment,
		Version:    version,
		Content:    content,
	}).Error
}
