package utils

import (
	"context"

	"github.com/tidbcloud/core-portal/internal/central/pkg/auth/authuser"
	"github.com/tidbcloud/pkgv2/log"
	"go.uber.org/zap"
)

func AuditLog(ctx context.Context, err error, eventType log.AuditEventType, fields ...zap.Field) {
	logger := log.WithContextL(ctx)
	logger.Info("start to record audit log", zap.String("eventType", string(eventType)))

	audit := log.NewAuditSession(eventType)
	if clientIP, err := GetClientIP(ctx); err == nil {
		audit.SetClientIP(clientIP)
	}
	if user, err := authuser.GetUserFromContext(ctx); err == nil {
		audit.SetUserID(uint64(user.ID))
	}
	audit.IsSuccess(err == nil)
	audit.AddFields(zap.Error(err))
	audit.AddFields(fields...)
	audit.Submit()
}
