Skip to content

Commit

Permalink
feat:support download task
Browse files Browse the repository at this point in the history
  • Loading branch information
Chat2DB-Pro committed Jan 31, 2024
1 parent be9dbfd commit 6f96808
Show file tree
Hide file tree
Showing 27 changed files with 1,040 additions and 174 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package ai.chat2db.server.domain.api.enums;

public enum DeletedTypeEnum {

Y,N
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package ai.chat2db.server.domain.api.enums;

public enum TaskStatusEnum {

INIT, PROCESSING, FINISH, ERROR
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ai.chat2db.server.domain.api.enums;

public enum TaskTypeEnum {

/**
* download table data
*/
DOWNLOAD_TABLE_DATA,

/**
* upload table data
*/
UPLOAD_TABLE_DATA,

/**
* download table structure
*/
DOWNLOAD_TABLE_STRUCTURE,

/**
* upload table structure
*/
UPLOAD_TABLE_STRUCTURE,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package ai.chat2db.server.domain.api.model;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class Task implements Serializable {
/**
* 主键
*/
private Long id;

/**
* 创建时间
*/
private Date gmtCreate;

/**
* 修改时间
*/
private Date gmtModified;

/**
* 数据源连接ID
*/
private Long dataSourceId;

/**
* db名称
*/
private String databaseName;

/**
* schema名称
*/
private String schemaName;

/**
* table_name
*/
private String tableName;

/**
* 是否被删除,y表示删除,n表示未删除
*/
private String deleted;

/**
* 用户id
*/
private Long userId;

/**
* task type, such as: DOWNLOAD_DATA, UPLOAD_TABLE_DATA, DOWNLOAD_TABLE_STRUCTURE, UPLOAD_TABLE_STRUCTURE,
*/
private String taskType;

/**
* task status
*/
private String taskStatus;

/**
* task progress
*/
private String taskProgress;

/**
* task name
*/
private String taskName;

/**
* download url
*/
private String downloadUrl;

/**
* task content
*/
private byte[] content;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package ai.chat2db.server.domain.api.param;

import lombok.Data;

import java.io.Serializable;

@Data
public class TaskCreateParam implements Serializable {

private static final long serialVersionUID = 1L;

/**
* 数据源连接ID
*/
private Long dataSourceId;

/**
* db名称
*/
private String databaseName;

/**
* schema名称
*/
private String schemaName;

/**
* table_name
*/
private String tableName;

/**
* 用户id
*/
private Long userId;


/**
* task progress
*/
private String taskProgress;

/**
* task name
*/
private String taskName;

/**
* task type, such as: DOWNLOAD_DATA, UPLOAD_TABLE_DATA, DOWNLOAD_TABLE_STRUCTURE, UPLOAD_TABLE_STRUCTURE,
*/
private String taskType;


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ai.chat2db.server.domain.api.param;

import ai.chat2db.server.tools.base.wrapper.param.PageQueryParam;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class TaskPageParam extends PageQueryParam implements Serializable {


private Long userId;

private List<String> taskType;

private String taskStatus;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package ai.chat2db.server.domain.api.param;

import lombok.Data;

import java.io.Serializable;

@Data
public class TaskUpdateParam implements Serializable {


private static final long serialVersionUID = 1L;

/**
* task id
*/
private Long id;

/**
* 用户id
*/
private Long userId;

/**
* task type, such as: DOWNLOAD_DATA, UPLOAD_TABLE_DATA, DOWNLOAD_TABLE_STRUCTURE, UPLOAD_TABLE_STRUCTURE,
*/
private String taskStatus;

/**
* task progress
*/
private String taskProgress;

/**
* task name
*/
private String taskName;

/**
* task description
*/
private String downloadUrl;

/**
* task content
*/
private byte[] content;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package ai.chat2db.server.domain.api.service;

import ai.chat2db.server.domain.api.model.Task;
import ai.chat2db.server.domain.api.param.TaskCreateParam;
import ai.chat2db.server.domain.api.param.TaskPageParam;
import ai.chat2db.server.domain.api.param.TaskUpdateParam;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.PageResult;

public interface TaskService {

/**
* create task
*
* @param param task param
* @return task id
*/
DataResult<Long> create(TaskCreateParam param);

/**
* update task status
*
* @param param task param
* @return action result
*/
ActionResult updateStatus(TaskUpdateParam param);


/**
* get task list
*
* @param param task id
* @return task
*/
PageResult<Task> page(TaskPageParam param);

/**
* get task
*
* @param id task id
* @return task
*/
DataResult<Task> get(Long id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package ai.chat2db.server.domain.core.converter;

import ai.chat2db.server.domain.api.model.Task;
import ai.chat2db.server.domain.api.param.TaskCreateParam;
import ai.chat2db.server.domain.repository.entity.TaskDO;
import lombok.extern.slf4j.Slf4j;
import org.mapstruct.Mapper;

import java.util.List;
@Slf4j
@Mapper(componentModel = "spring")
public abstract class TaskConverter {

public abstract TaskDO todo(TaskCreateParam param);


public abstract Task toModel(TaskDO param);


public abstract List<Task> toModel(List<TaskDO> param);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package ai.chat2db.server.domain.core.impl;

import ai.chat2db.server.domain.api.enums.DeletedTypeEnum;
import ai.chat2db.server.domain.api.enums.TaskStatusEnum;
import ai.chat2db.server.domain.api.model.Task;
import ai.chat2db.server.domain.api.param.TaskCreateParam;
import ai.chat2db.server.domain.api.param.TaskPageParam;
import ai.chat2db.server.domain.api.param.TaskUpdateParam;
import ai.chat2db.server.domain.api.service.TaskService;
import ai.chat2db.server.domain.core.converter.TaskConverter;
import ai.chat2db.server.domain.repository.MapperUtils;
import ai.chat2db.server.domain.repository.entity.TaskDO;
import ai.chat2db.server.tools.base.wrapper.result.ActionResult;
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
import ai.chat2db.server.tools.base.wrapper.result.PageResult;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class TaskServiceImpl implements TaskService {

/**
* task converter
*/
@Autowired
private TaskConverter taskConverter;

@Override
public DataResult<Long> create(TaskCreateParam param) {
TaskDO taskDO = taskConverter.todo(param);
taskDO.setDeleted(DeletedTypeEnum.N.name());
taskDO.setTaskStatus(TaskStatusEnum.INIT.name());
MapperUtils.getTaskMapper().insert(taskDO);
return DataResult.of(taskDO.getId());
}

@Override
public ActionResult updateStatus(TaskUpdateParam param) {
TaskDO taskDO = new TaskDO();
taskDO.setId(param.getId());
taskDO.setTaskStatus(param.getTaskStatus());
taskDO.setContent(param.getContent());
MapperUtils.getTaskMapper().updateById(taskDO);
return ActionResult.isSuccess();
}

@Override
public PageResult<Task> page(TaskPageParam param) {
Page<TaskDO> page = new Page<>();
page.setCurrent(param.getPageNo());
page.setSize(param.getPageSize());
page.setOrders(Lists.newArrayList(OrderItem.desc("gmt_create")));
IPage<TaskDO> iPage = MapperUtils.getTaskMapper().pageQuery(page, param.getUserId(), DeletedTypeEnum.N.name());
if (iPage != null) {
return PageResult.of(taskConverter.toModel(iPage.getRecords()), param);
}
return PageResult.empty(param.getPageNo(), param.getPageSize());
}

@Override
public DataResult<Task> get(Long id) {
TaskDO task = MapperUtils.getTaskMapper().selectById(id);
return DataResult.of(taskConverter.toModel(task));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ai.chat2db.server.domain.repository;

import ai.chat2db.server.domain.repository.mapper.TaskMapper;

public class MapperUtils {

public static TaskMapper getTaskMapper() {
return Dbutils.getMapper(TaskMapper.class);
}
}
Loading

0 comments on commit 6f96808

Please sign in to comment.