From 266857b4ac58e491b7bb76d9c8f5acc4f7b77313 Mon Sep 17 00:00:00 2001 From: JeshuaRen <270813223@qq.com> Date: Fri, 1 Nov 2024 17:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4UploadPartOutput=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdks/storage/storage.go | 95 +++++++++++++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 22 deletions(-) diff --git a/sdks/storage/storage.go b/sdks/storage/storage.go index 72a150c..5914cfe 100644 --- a/sdks/storage/storage.go +++ b/sdks/storage/storage.go @@ -7,6 +7,38 @@ import ( "gitlink.org.cn/cloudream/common/utils/serder" ) +type Storage struct { + StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey; autoIncrement;"` + Name string `json:"name" gorm:"column:Name; not null"` + // 完全管理此存储服务的Hub的ID + MasterHub NodeID `json:"masterHub" gorm:"column:MasterHub; not null"` + // 存储服务的地址,包含鉴权所需数据 + Address StorageAddress `json:"address" gorm:"column:Address; type:json; not null; serializer:union"` + // 存储服务拥有的特别功能 + Features []StorageFeature `json:"features" gorm:"column:Features; type:json; serializer:union"` +} + +func (Storage) TableName() string { + return "Storage" +} + +func (s *Storage) String() string { + return fmt.Sprintf("%v(%v)", s.Name, s.StorageID) +} + +// 共享存储服务的配置数据 +type SharedStorage struct { + StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey"` + // 调度文件时保存文件的根路径 + LoadBase string `json:"loadBase" gorm:"column:LoadBase; not null"` + // 回源数据时数据存放位置的根路径 + DataReturnBase string `json:"dataReturnBase" gorm:"column:DataReturnBase; not null"` +} + +func (SharedStorage) TableName() string { + return "SharedStorage" +} + // 存储服务地址 type StorageAddress interface { GetType() string @@ -30,34 +62,53 @@ func (a *LocalStorageAddress) String() string { return "Local" } -type Storage struct { - StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey; autoIncrement;"` - Name string `json:"name" gorm:"column:Name; not null"` - // 完全管理此存储服务的Hub的ID - MasterHub NodeID `json:"masterHub" gorm:"column:MasterHub; not null"` - // 存储服务的地址,包含鉴权所需数据 - Address StorageAddress `json:"address" gorm:"column:Address; type:json; not null; serializer:union"` - // 存储服务拥有的特别功能 - Features []StorageFeature `json:"features" gorm:"column:Features; type:json; serializer:union"` +type OSSAddress struct { + serder.Metadata `union:"Local"` + Region string `json:"region"` + AK string `json:"accessKeyId"` + SK string `json:"secretAccessKey"` + Endpoint string `json:"endpoint"` + Bucket string `json:"bucket"` } -func (Storage) TableName() string { - return "Storage" +func (a *OSSAddress) GetType() string { + return "OSSAddress" } -func (s *Storage) String() string { - return fmt.Sprintf("%v(%v)", s.Name, s.StorageID) +func (a *OSSAddress) String() string { + return "OSSAddress" } -// 共享存储服务的配置数据 -type SharedStorage struct { - StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey"` - // 调度文件时保存文件的根路径 - LoadBase string `json:"loadBase" gorm:"column:LoadBase; not null"` - // 回源数据时数据存放位置的根路径 - DataReturnBase string `json:"dataReturnBase" gorm:"column:DataReturnBase; not null"` +type OBSAddress struct { + serder.Metadata `union:"Local"` + Region string `json:"region"` + AK string `json:"accessKeyId"` + SK string `json:"secretAccessKey"` + Endpoint string `json:"endpoint"` + Bucket string `json:"bucket"` } -func (SharedStorage) TableName() string { - return "SharedStorage" +func (a *OBSAddress) GetType() string { + return "OBSAddress" +} + +func (a *OBSAddress) String() string { + return "OBSAddress" +} + +type COSAddress struct { + serder.Metadata `union:"Local"` + Region string `json:"region"` + AK string `json:"accessKeyId"` + SK string `json:"secretAccessKey"` + Endpoint string `json:"endpoint"` + Bucket string `json:"bucket"` +} + +func (a *COSAddress) GetType() string { + return "COSAddress" +} + +func (a *COSAddress) String() string { + return "COSAddress" }