package uploadersdk import ( "gitlink.org.cn/cloudream/common/pkgs/types" sch "gitlink.org.cn/cloudream/common/sdks/pcmscheduler" schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" "gitlink.org.cn/cloudream/common/utils/serder" "time" ) type ClusterID string type BlockChain struct { ObjectID cdssdk.ObjectID `gorm:"column:object_id" json:"objectID"` BlockChainID string `gorm:"column:blockchain_id" json:"blockChainID"` BlockChainType string `gorm:"column:blockchain_type" json:"blockChainType"` //FileName string `gorm:"column:file_name" json:"fileName"` //FileHash string `gorm:"column:file_hash" json:"fileHash"` //FileSize int64 `gorm:"column:file_size" json:"fileSize"` } func (BlockChain) TableName() string { return "BlockChain" // 确保和数据库中的表名一致 } type Binding struct { ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` Name string `gorm:"column:name" json:"Name"` DataType string `gorm:"column:data_type" json:"dataType"` //JsonData string `gorm:"column:json_data" json:"jsonData"` Content string `gorm:"column:content" json:"Content"` AccessLevel string `gorm:"column:access_level" json:"accessLevel"` CreateTime time.Time `gorm:"column:created_at" json:"createTime"` } type BindingAccessData struct { ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` UserName string `gorm:"column:username" json:"userName"` SSOId string `gorm:"column:sso_id" json:"ssoID"` Name string `gorm:"column:name" json:"Name"` DataType string `gorm:"column:data_type" json:"dataType"` Content string `gorm:"column:content" json:"Content"` AccessLevel string `gorm:"column:access_level" json:"accessLevel"` ApplicantID cdssdk.UserID `gorm:"column:applicant_id" json:"applicantID"` Status string `gorm:"column:status" json:"status"` CreateTime time.Time `gorm:"column:created_at" json:"createTime"` } type BindingDetail struct { ID DataID `json:"ID"` UserID cdssdk.UserID `json:"ownerID"` UserName string `json:"userName"` SSOId string `json:"ssoID"` Name string `json:"Name"` Info sch.DataBinding `json:"info"` Packages []Package `json:"packages"` Status string `json:"status"` AccessLevel string `json:"accessLevel"` CreateTime time.Time `json:"createTime"` } func (Binding) TableName() string { return "BindingData" // 确保和数据库中的表名一致 } type BindingCluster struct { BindingID DataID `gorm:"column:binding_id" json:"bindingID"` ClusterID ClusterID `gorm:"column:cluster_id" json:"clusterID"` Status string `gorm:"column:status" json:"status"` JsonData string `gorm:"column:json_data" json:"jsonData"` } type Folder struct { PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` Path string `gorm:"column:path_name" json:"path"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"` } func (Folder) TableName() string { return "folders" } type DataID int64 type FolderID int64 type Cluster struct { PackageID cdssdk.PackageID `gorm:"column:package_id" json:"PackageID"` ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` StorageID cdssdk.StorageID `gorm:"column:storage_id" json:"storageID"` } func (Cluster) TableName() string { return "uploadedCluster" // 确保和数据库中的表名一致 } type Package struct { UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` PackageName string `gorm:"column:package_name" json:"packageName"` BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"` DataType string `gorm:"column:data_type" json:"dataType"` JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段 BindingID DataID `gorm:"column:binding_id" json:"bindingID"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"` Objects []cdssdk.Object `gorm:"column:objects" json:"objects"` UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"` Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"` //BlockChain []BlockChain `gorm:"foreignKey:package_id;references:package_id" json:"blockChains"` // 关联 BlockChain 数据 UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"` } type PackageDAO struct { UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` PackageName string `gorm:"column:package_name" json:"packageName"` BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"` DataType string `gorm:"column:data_type" json:"dataType"` JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段 BindingID DataID `gorm:"column:binding_id" json:"bindingID"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"` UploadedCluster []Cluster `gorm:"foreignKey:package_id;references:package_id" json:"clusters"` // 关联 Cluster 数据 Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"` UploadPriority string `gorm:"column:upload_priority" json:"uploadPriority"` } type PackageCloneDAO struct { ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"` ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"` Name string `gorm:"column:name" json:"name"` Description string `gorm:"column:description" json:"description"` BootstrapObjectID cdssdk.ObjectID `gorm:"column:bootstrap_object_id" json:"bootstrapObjectID"` ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"` ImageID string `gorm:"column:image_id" json:"imageID"` CreateTime time.Time `gorm:"column:created_at" json:"createTime"` } func (PackageCloneDAO) TableName() string { return "packageClone" // 确保和数据库中的表名一致 } type PackageCloneParam struct { PackageID cdssdk.PackageID `json:"packageID" binding:"required"` PackageName string `json:"packageName" binding:"required"` BucketID cdssdk.BucketID `json:"bucketID" binding:"required"` Name string `json:"name"` Description string `json:"description"` BootstrapObjectID cdssdk.ObjectID `json:"bootstrapObjectID"` ClusterID schsdk.ClusterID `json:"clusterID"` ParentImageID schsdk.ImageID `json:"parentImageID"` ImageID string `json:"imageID"` } type PackageCloneVO struct { ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"` ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"` Name string `gorm:"column:name" json:"name"` Description string `gorm:"column:description" json:"description"` BootstrapObjectID cdssdk.ObjectID `gorm:"column:bootstrap_object_id" json:"bootstrapObjectID"` ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"` ImageID string `gorm:"column:image_id" json:"imageID"` CreateTime time.Time `gorm:"column:created_at" json:"createTime"` ClusterMapping ClusterMapping `gorm:"foreignKey:cluster_id;references:cluster_id" json:"cluster"` } type ClusterMapping struct { ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` ClusterName string `gorm:"column:cluster_name" json:"clusterName"` StorageID cdssdk.StorageID `gorm:"column:storage_id" json:"storageID"` StorageType string `gorm:"column:storage_type" json:"storageType"` StoragePath string `gorm:"column:storage_path" json:"storagePath"` } func (ClusterMapping) TableName() string { return "ClusterMapping" } //type PackageCloneClusterDAO struct { // ID DataID `gorm:"column:id" json:"ID"` // ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` // ClusterName string `gorm:"column:cluster_name" json:"clusterName"` //} // //type PackageCloneCluster struct { // ClusterID schsdk.ClusterID `json:"clusterID"` // ClusterName string `json:"clusterName"` //} type ScheduleTarget interface { Noop() } var DataScheduleTargetTypeUnion = types.NewTypeUnion[ScheduleTarget]( (*JCSScheduleTarget)(nil), (*UrlScheduleTarget)(nil), ) var _ = serder.UseTypeUnionInternallyTagged(&DataScheduleTargetTypeUnion, "type") type ScheduleTargetBase struct{} func (d *ScheduleTargetBase) Noop() {} type JCSScheduleTarget struct { ScheduleTargetBase UserID cdssdk.UserID `json:"userID"` ScheduleStorages []ScheduleStorage `json:"scheduleStorages"` } type UrlScheduleTarget struct { ScheduleTargetBase ScheduleUrls []ScheduleUrl `json:"scheduleUrls"` } type ScheduleUrl struct { ClusterID ClusterID `json:"clusterID"` //RepositoryName string `json:"repositoryName"` JsonData string `json:"jsonData"` } type ScheduleStorage struct { StorageID cdssdk.StorageID `json:"storageID"` RootPath string `json:"rootPath"` }