<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.logger.DatabaseOperateLogMapper">

    <!--
      按指定物理表插入日志，支持按月分表。

      说明：
      1. 这里只插入 DO 中显式定义的业务字段，BaseDO 的 createTime 等交给数据库默认值处理；
      2. tableName 使用 ${} 拼接，仅接受服务端组装的合法表名，不对外暴露，避免 SQL 注入风险。
    -->
    <insert id="insertLog">
        INSERT INTO ${tableName}
        (
            operate_type,
            table_name,
            primary_key,
            primary_key_value,
            before_data,
            after_data,
            sql_statement,
            sql_params,
            user_id,
            user_type,
            user_nickname,
            cost_time,
            success,
            error_message,
            trace_id,
            request_ip,
            request_method,
            request_url,
            tenant_id
        )
        VALUES
        (
            #{log.operateType},
            #{log.tableName},
            #{log.primaryKey},
            #{log.primaryKeyValue},
            #{log.beforeData},
            #{log.afterData},
            #{log.sqlStatement},
            #{log.sqlParams},
            #{log.userId},
            #{log.userType},
            #{log.userNickname},
            #{log.costTime},
            #{log.success},
            #{log.errorMessage},
            #{log.traceId},
            #{log.requestIp},
            #{log.requestMethod},
            #{log.requestUrl},
            #{log.tenantId}
        )
    </insert>

</mapper>


