package org.wcs.serve.controller.app;

import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.wcs.model.dto.serve.siemensDb.AddSiemensDbReq;
import org.wcs.model.dto.serve.siemensDb.QuerySiemensDbReq;
import org.wcs.model.dto.serve.siemensDb.UpdateSiemensDbReq;
import org.wcs.model.vo.serve.AppServeDataResponse;
import org.wcs.model.vo.serve.AppServeResponse;
import org.wcs.model.vo.serve.common.PageDataResponse;
import org.wcs.model.vo.serve.siemensDb.SiemensDbVo;
import org.wcs.serve.service.intf.ISiemensDbService;

/**
 * 西门子DB控制器
 */
@RestController
@RequestMapping("/app/siemensDb")
@ResponseBody
@RequiredArgsConstructor
public class SiemensDbController {

    private final ISiemensDbService siemensDbService;

    /**
     * 查询西门子DB数据
     * @param pageIndex 页码
     * @param pageSize 页大小
     * @param request 查询参数
     * @return 查询结果
     */
    @PostMapping("/querySiemensDbByPage")
    public AppServeDataResponse<PageDataResponse<SiemensDbVo>> querySiemensDb(@RequestParam("pageIndex") Integer pageIndex, @RequestParam("pageSize") Integer pageSize, @RequestBody QuerySiemensDbReq request) {
        return siemensDbService.querySiemensDb(pageIndex, pageSize, request);
    }

    /**
     * 新增西门子DB数据
     * @param request 新增参数
     * @return 新增结果
     */
    @PostMapping("/addSiemensDb")
    public AppServeResponse addSiemensDb(@RequestBody @Validated AddSiemensDbReq request) {
        return siemensDbService.addSiemensDb(request);
    }

    /**
     * 修改西门子DB数据
     * @param request 修改参数
     * @return 修改结果
     */
    @PostMapping("/updateSiemensDb")
    public AppServeResponse updateSiemensDb(@RequestBody @Validated UpdateSiemensDbReq request) {
        return siemensDbService.updateSiemensDb(request);
    }

    /**
     * 删除西门子DB数据
     * @param dbName DB名称
     * @return 删除结果
     */
    @DeleteMapping("/deleteSiemensDb")
    public AppServeResponse deleteSiemensDb(@RequestParam("dbName") String dbName) {
        return siemensDbService.deleteSiemensDb(dbName);
    }

    /**
     * 重新加载DB地址
     * @return 重新加载结果
     */
    @PutMapping("/reloadDbAddress")
    public AppServeResponse reloadDbAddress() {
        return siemensDbService.reloadDbAddress();
    }


}
