// Package sqleditor add by blacknc <blacknc@163.com> at 2023/03/13 23:29:55
package sqleditor

import (
	"context"
	entity "dataapps/internal/entity/sqleditor"
	service "dataapps/internal/service/sqleditor"
	"time"

	"github.com/tidbcloud/dataapps/idl/pbgen/proto/sqleditor"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

type sqleditorGrpcService struct {
	sqleditor.UnsafeSqlEditorServiceServer
}

func NewSqleditorGrpcService() sqleditor.SqlEditorServiceServer {
	return &sqleditorGrpcService{}
}

func (s *sqleditorGrpcService) CreateOpLog(ctx context.Context, req *sqleditor.CreateOpLogReq) (*sqleditor.CreateOpLogResp, error) {

	if err := service.CreateOplog(ctx, entity.SqlEditorOplog{
		OrgId:         req.OrgId,
		ProjectId:     req.ProjectId,
		ClusterId:     req.ClusterId,
		SessionId:     req.SessionId,
		Chat2QuerySId: req.Chat2QuerySid,
		SqlFileId:     req.SqlFileId,
		EventType:     req.EventType,
		UserQuestion:  req.UserQuestion,
		SqlContent:    req.SqlContent,
		IsAccept:      req.IsAccept,
		IsModified:    req.IsModified,
		StartTime:     req.StartTime,
		EndTime:       req.EndTime,
		Duration:      req.Duration,
		AffectedRows:  req.AffectedRows,
		Status:        int8(req.Status),
		ErrorMessage:  req.ErrorMessage,
		CreatedBy:     req.CreatedBy,
		CreatedAt:     time.Unix(req.CreatedAt, 0),
		PromptVersion: req.PromptVersion,
		Databases:     req.Databases,
		Channel:       req.Channel,
	}); err != nil {
		tilog.Error(ctx, "CreateOplog failed", zap.Error(err))
		return nil, err
	}

	return &sqleditor.CreateOpLogResp{}, nil
}
