package com.qiaoba.module.tenant.service;

import com.qiaoba.api.tenant.entity.SysTenant;
import com.qiaoba.module.tenant.entity.vo.TenantInitCheckVo;
import com.qiaoba.module.tenant.entity.vo.TenantInitVo;

import java.sql.SQLException;

/**
 * 租户初始化 服务层
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023/6/27 9:06
 */
public interface SysTenantInitService {

    /**
     * 初始化之前的检查
     *
     * @param tenantId 租户ID
     * @return 检查结果信息
     */
    TenantInitCheckVo check(String tenantId);

    /**
     * 创建表
     *
     * @param tenantId 租户ID
     * @return 结果
     */
    TenantInitVo createTables(String tenantId);

    /**
     * 导入表数据
     *
     * @param tenantId 租户ID
     * @return 结果
     * @throws SQLException SQLException
     */
    TenantInitVo initData(String tenantId) throws SQLException;

    /**
     * 初始化完毕
     *
     * @param tenantId 租户ID
     */
    void initCompleted(String tenantId);

    /**
     * 将租户的数据同步到缓存
     *
     * @param sysTenant 租户信息
     */
    void syncTenantData2Cache(SysTenant sysTenant);
}
