package servlet.admin;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.sql.Connection;

import javabean.Base;
import javabean.Util;

/**
 * Servlet 实现类，用于删除借阅规则
 *
 * 该 Servlet 用于处理删除借阅规则的请求，接收规则 ID 并将对应的借阅规则从数据库中删除。
 */
@WebServlet("/admin/ruleDel")
public class RuleDel extends HttpServlet {

	/**
	 * 处理 GET 请求，删除指定的借阅规则
	 *
	 * 该方法接收前端传来的规则 ID，根据该 ID 从数据库中删除对应的借阅规则。
	 *
	 * @param req 请求对象
	 * @param resp 响应对象
	 * @throws ServletException 如果发生 Servlet 错误
	 * @throws IOException 如果发生 I/O 错误
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 设置响应内容类型为 JSON
		resp.setContentType("application/json; charset=utf8");

		// 获取前端传来的规则 ID
		String id = req.getParameter("id");

		// 数据库连接相关变量
		Connection connection = null;
		PreparedStatement pstmt = null;
		ResultSet resultSet = null;
		int result = 0;
		String sql = "";

		// 返回数据相关变量
		int code = 1;  // 默认为失败
		String msg = "error";  // 默认为错误消息

		// 获取 PrintWriter 用于返回响应
		PrintWriter out = resp.getWriter();

		try {
			// 获取数据库连接
			connection = Base.getConnection();
			sql = "delete from rules where id = ?";

			// 使用 PreparedStatement 来执行删除操作
			pstmt = connection.prepareStatement(sql);
			pstmt.setString(1, id);
			result = pstmt.executeUpdate();  // 执行删除操作

			// 判断删除操作是否成功
			if (result == 1) {
				code = 0;
				msg = "删除成功";  // 删除成功
			} else {
				msg = "删除失败";  // 删除失败
			}

		} catch (ClassNotFoundException e) {
			msg = "class没找到";  // 发生 ClassNotFoundException 异常时返回错误消息
		} catch (SQLException e) {
			msg = "sql错误";  // 发生 SQL 异常时返回错误消息
		}

		// 将结果作为 JSON 响应返回
		out.print(Util.jsonResponse(code, msg, null));
	}
}
