mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
feat: [storageExt] define DFsService
This commit is contained in:
parent
d3140d0501
commit
5e9935fed4
@ -0,0 +1,51 @@
|
|||||||
|
package tech.powerjob.server.extension.dfs;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分布式文件服务
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2023/7/16
|
||||||
|
*/
|
||||||
|
public interface DFsService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存储文件
|
||||||
|
* @param storeRequest 存储请求
|
||||||
|
* @throws IOException 异常
|
||||||
|
*/
|
||||||
|
void store(StoreRequest storeRequest) throws IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载文件
|
||||||
|
* @param downloadRequest 文件下载请求
|
||||||
|
* @throws IOException 异常
|
||||||
|
*/
|
||||||
|
void download(DownloadRequest downloadRequest) throws IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文件
|
||||||
|
* @param fileLocation 文件位置
|
||||||
|
* @throws IOException 异常
|
||||||
|
*/
|
||||||
|
void delete(FileLocation fileLocation) throws IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件元信息
|
||||||
|
* @param fileLocation 文件位置
|
||||||
|
* @return 存在则返回文件元信息
|
||||||
|
* @throws IOException 异常
|
||||||
|
*/
|
||||||
|
Optional<FileMeta> fetchFileMeta(FileLocation fileLocation) throws IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清理 powerjob 认为“过期”的文件
|
||||||
|
* 部分存储系统自带生命周期管理(如阿里云OSS,则不需要单独实现该方法)
|
||||||
|
* @param bucket bucket
|
||||||
|
* @param days 天数,需要清理超过 X 天的文件
|
||||||
|
*/
|
||||||
|
default void cleanExpiredFiles(String bucket, int days) {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package tech.powerjob.server.extension.dfs;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* download request
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2023/7/16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class DownloadRequest implements Serializable {
|
||||||
|
|
||||||
|
private transient File target;
|
||||||
|
|
||||||
|
private FileLocation fileLocation;
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package tech.powerjob.server.extension.dfs;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件路径
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2023/7/16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class FileLocation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 存储桶
|
||||||
|
*/
|
||||||
|
private String bucket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package tech.powerjob.server.extension.dfs;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FileMeta
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2023/7/16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class FileMeta {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件大小
|
||||||
|
*/
|
||||||
|
private final long length;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 元数据
|
||||||
|
*/
|
||||||
|
private Map<String, Objects> metaInfo;
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package tech.powerjob.server.extension.dfs;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* StoreRequest
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2023/7/16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class StoreRequest implements Serializable {
|
||||||
|
|
||||||
|
private transient File localFile;
|
||||||
|
|
||||||
|
private FileLocation fileLocation;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user