fix: 解决同步快照名称加载错误的问题 (#1875)

This commit is contained in:
ssongliu 2023-08-08 16:44:12 +08:00 committed by GitHub
parent 0c4400d6f7
commit 0e8a4eaf2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 29 additions and 22 deletions

View file

@ -37,7 +37,7 @@ type IBackupService interface {
BatchDeleteRecord(ids []uint) error BatchDeleteRecord(ids []uint) error
NewClient(backup *model.BackupAccount) (cloud_storage.CloudStorageClient, error) NewClient(backup *model.BackupAccount) (cloud_storage.CloudStorageClient, error)
ListFiles(req dto.BackupSearchFile) ([]interface{}, error) ListFiles(req dto.BackupSearchFile) ([]string, error)
MysqlBackup(db dto.CommonBackup) error MysqlBackup(db dto.CommonBackup) error
MysqlRecover(db dto.CommonRecover) error MysqlRecover(db dto.CommonRecover) error
@ -273,7 +273,7 @@ func (u *BackupService) Update(req dto.BackupOperate) error {
return nil return nil
} }
func (u *BackupService) ListFiles(req dto.BackupSearchFile) ([]interface{}, error) { func (u *BackupService) ListFiles(req dto.BackupSearchFile) ([]string, error) {
backup, err := backupRepo.Get(backupRepo.WithByType(req.Type)) backup, err := backupRepo.Get(backupRepo.WithByType(req.Type))
if err != nil { if err != nil {
return nil, err return nil, err
@ -284,9 +284,19 @@ func (u *BackupService) ListFiles(req dto.BackupSearchFile) ([]interface{}, erro
} }
prefix := "system_snapshot" prefix := "system_snapshot"
if len(backup.BackupPath) != 0 { if len(backup.BackupPath) != 0 {
prefix = path.Join("/"+strings.TrimPrefix(backup.BackupPath, "/"), prefix) prefix = path.Join(strings.TrimPrefix(backup.BackupPath, "/"), prefix)
} }
return client.ListObjects(prefix) files, err := client.ListObjects(prefix)
if err != nil {
return nil, err
}
var datas []string
for _, file := range files {
if len(file) != 0 {
datas = append(datas, path.Base(file))
}
}
return datas, nil
} }
func (u *BackupService) NewClient(backup *model.BackupAccount) (cloud_storage.CloudStorageClient, error) { func (u *BackupService) NewClient(backup *model.BackupAccount) (cloud_storage.CloudStorageClient, error) {

View file

@ -127,7 +127,7 @@ func (cos *cosClient) GetBucket() (string, error) {
} }
} }
func (cos cosClient) ListObjects(prefix string) ([]interface{}, error) { func (cos cosClient) ListObjects(prefix string) ([]string, error) {
client, err := cos.newClientWithBucket() client, err := cos.newClientWithBucket()
if err != nil { if err != nil {
return nil, err return nil, err
@ -137,7 +137,7 @@ func (cos cosClient) ListObjects(prefix string) ([]interface{}, error) {
return nil, err return nil, err
} }
var result []interface{} var result []string
for _, item := range datas.Contents { for _, item := range datas.Contents {
result = append(result, item.Key) result = append(result, item.Key)
} }

View file

@ -119,13 +119,13 @@ func (kodo *kodoClient) GetBucket() (string, error) {
} }
} }
func (kodo kodoClient) ListObjects(prefix string) ([]interface{}, error) { func (kodo kodoClient) ListObjects(prefix string) ([]string, error) {
bucket, err := kodo.GetBucket() bucket, err := kodo.GetBucket()
if err != nil { if err != nil {
return nil, constant.ErrInvalidParams return nil, constant.ErrInvalidParams
} }
var result []interface{} var result []string
marker := "" marker := ""
for { for {
entries, _, nextMarker, hashNext, err := kodo.client.ListFiles(bucket, prefix, "", marker, 1000) entries, _, nextMarker, hashNext, err := kodo.client.ListFiles(bucket, prefix, "", marker, 1000)

View file

@ -164,7 +164,7 @@ func (minIo *minIoClient) GetBucket() (string, error) {
} }
} }
func (minIo minIoClient) ListObjects(prefix string) ([]interface{}, error) { func (minIo minIoClient) ListObjects(prefix string) ([]string, error) {
bucket, err := minIo.GetBucket() bucket, err := minIo.GetBucket()
if err != nil { if err != nil {
return nil, constant.ErrInvalidParams return nil, constant.ErrInvalidParams
@ -174,7 +174,7 @@ func (minIo minIoClient) ListObjects(prefix string) ([]interface{}, error) {
Prefix: prefix, Prefix: prefix,
} }
var result []interface{} var result []string
for object := range minIo.client.ListObjects(context.Background(), bucket, opts) { for object := range minIo.client.ListObjects(context.Background(), bucket, opts) {
if object.Err != nil { if object.Err != nil {
continue continue

View file

@ -196,7 +196,7 @@ func (onedrive oneDriveClient) Download(src, target string) (bool, error) {
return true, nil return true, nil
} }
func (onedrive *oneDriveClient) ListObjects(prefix string) ([]interface{}, error) { func (onedrive *oneDriveClient) ListObjects(prefix string) ([]string, error) {
prefix = "/" + strings.TrimPrefix(prefix, "/") prefix = "/" + strings.TrimPrefix(prefix, "/")
folderID, err := onedrive.loadIDByPath(prefix) folderID, err := onedrive.loadIDByPath(prefix)
if err != nil { if err != nil {
@ -212,7 +212,7 @@ func (onedrive *oneDriveClient) ListObjects(prefix string) ([]interface{}, error
return nil, fmt.Errorf("do request for list failed, err: %v", err) return nil, fmt.Errorf("do request for list failed, err: %v", err)
} }
var itemList []interface{} var itemList []string
for _, item := range driveItems.DriveItems { for _, item := range driveItems.DriveItems {
itemList = append(itemList, item.Name) itemList = append(itemList, item.Name)
} }

View file

@ -116,7 +116,7 @@ func (oss *ossClient) GetBucket() (*osssdk.Bucket, error) {
} }
} }
func (oss *ossClient) ListObjects(prefix string) ([]interface{}, error) { func (oss *ossClient) ListObjects(prefix string) ([]string, error) {
bucket, err := oss.GetBucket() bucket, err := oss.GetBucket()
if err != nil { if err != nil {
return nil, constant.ErrInvalidParams return nil, constant.ErrInvalidParams
@ -125,7 +125,7 @@ func (oss *ossClient) ListObjects(prefix string) ([]interface{}, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
var result []interface{} var result []string
for _, obj := range lor.Objects { for _, obj := range lor.Objects {
result = append(result, obj.Key) result = append(result, obj.Key)
} }

View file

@ -184,13 +184,13 @@ func (s3C *s3Client) getBucket() (string, error) {
} }
} }
func (s3C *s3Client) ListObjects(prefix string) ([]interface{}, error) { func (s3C *s3Client) ListObjects(prefix string) ([]string, error) {
bucket, err := s3C.getBucket() bucket, err := s3C.getBucket()
if err != nil { if err != nil {
return nil, constant.ErrInvalidParams return nil, constant.ErrInvalidParams
} }
svc := s3.New(&s3C.Sess) svc := s3.New(&s3C.Sess)
var result []interface{} var result []string
if err := svc.ListObjectsPages(&s3.ListObjectsInput{ if err := svc.ListObjectsPages(&s3.ListObjectsInput{
Bucket: &bucket, Bucket: &bucket,
Prefix: &prefix, Prefix: &prefix,

View file

@ -218,7 +218,7 @@ func (s sftpClient) getBucket() (string, error) {
} }
} }
func (s sftpClient) ListObjects(prefix string) ([]interface{}, error) { func (s sftpClient) ListObjects(prefix string) ([]string, error) {
bucket, err := s.getBucket() bucket, err := s.getBucket()
if err != nil { if err != nil {
return nil, err return nil, err
@ -236,7 +236,7 @@ func (s sftpClient) ListObjects(prefix string) ([]interface{}, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
var result []interface{} var result []string
for _, file := range files { for _, file := range files {
result = append(result, file.Name()) result = append(result, file.Name())
} }

View file

@ -7,7 +7,7 @@ import (
type CloudStorageClient interface { type CloudStorageClient interface {
ListBuckets() ([]interface{}, error) ListBuckets() ([]interface{}, error)
ListObjects(prefix string) ([]interface{}, error) ListObjects(prefix string) ([]string, error)
Exist(path string) (bool, error) Exist(path string) (bool, error)
Delete(path string) (bool, error) Delete(path string) (bool, error)
Upload(src, target string) (bool, error) Upload(src, target string) (bool, error)

View file

@ -113,9 +113,6 @@ const loadBackups = async () => {
const loadFiles = async () => { const loadFiles = async () => {
const res = await getFilesFromBackup(form.from); const res = await getFilesFromBackup(form.from);
fileNames.value = res.data || []; fileNames.value = res.data || [];
for (let i = 0; i < fileNames.value.length; i++) {
fileNames.value[i] = fileNames.value[i].replaceAll('system_snapshot/', '');
}
}; };
defineExpose({ defineExpose({