package com.muyu.system.controller;

import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.annotation.InnerAuth;
import com.muyu.common.system.domain.SysFirmDatasource;
import com.muyu.system.service.SysFirmDatasourceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 数据源信息控制层
 * @Author WangXin
 * @Data 2024/10/2
 * @Description 公司数据源信息控制层
 * @Version 1.0.0
 */
@RestController
@RequestMapping("/firmDatasource")
@Tag(name = "sysFirmDatasourceController", description = "数据源信息控制层")
public class SysFirmDatasourceController extends BaseController<BaseEntity> {

    @Resource
    private SysFirmDatasourceService sysFirmDatasourceService;

    /**
     * saas数据源
     * @return 公司数据源
     */
    @GetMapping("/firmDatasourceList")
    @InnerAuth
    public Result<List<SysFirmDatasource>> firmDatasourceList(){
        return success(sysFirmDatasourceService.firmDatasourceList());
    }

    /**
     * 根据id查询数据源信息
     * @param id 数据源id
     * @return 数据原信息结果集
     */
    @GetMapping("/findById/{id}")
    @Operation(summary = "根据id查询数据源信息",description = "根据id查询数据源信息")
    public Result<SysFirmDatasource> findById(@PathVariable("id") Long id) {
        return success(sysFirmDatasourceService.getById(id));
    }

    /**
     * 添加数据原信息
     * @param sysFirmDatasource 数据源信息
     * @return 添加的主键
     */
    @Operation(summary = "添加数据原信息",description = "在给公司分配数据源时添加数据源")
    @PostMapping("/addFirmDatasource")
    public Result<SysFirmDatasource> addFirmDatasource(@RequestBody SysFirmDatasource sysFirmDatasource) {
        sysFirmDatasourceService.save(sysFirmDatasource);
        return success(sysFirmDatasource);
    }

    /**
     * 修改数据源
     * @param sysFirmDatasource 修改数据源信息
     * @return 数据源信息
     */
    @Operation(summary = "根据id修改数据源信息", description = "根据id修改数据源信息")
    @PutMapping("/updFindById")
    public Result<SysFirmDatasource> updFindById(@RequestBody SysFirmDatasource sysFirmDatasource) {
        sysFirmDatasourceService.updateById(sysFirmDatasource);
        return success(sysFirmDatasource);
    }

}
