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