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"` 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"` } 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"` } func (Binding) TableName() string { return "BindingData" // 确保和数据库中的表名一致 } 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 []PackageVersion `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 []PackageVersion `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"` UploadPriority string `gorm:"column:upload_priority" json:"uploadPriority"` } type PackageVersion struct { ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"` PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` PackageName string `gorm:"column:package_name" json:"packageName"` Version int64 `gorm:"column:package_version" json:"version"` } func (PackageVersion) TableName() string { return "packageVersion" // 确保和数据库中的表名一致 } //type PackageScheduleType interface { // Noop() //} // //var PackageScheduleTypeUnion = types.NewTypeUnion[PackageScheduleType]( // (*PackagePreferencesSchedule)(nil), // (*PackageSpecifyClusterSchedule)(nil), //) // //var _ = serder.UseTypeUnionInternallyTagged(&PackageScheduleTypeUnion, "type") // //type PackageScheduleBase struct{} // //func (d *PackageScheduleBase) Noop() {} // //type PackagePreferencesSchedule struct { // serder.Metadata `union:"region"` // PackageScheduleBase // Type string `json:"type"` // a sch.Preferences //} // //type PackageSpecifyClusterSchedule struct { // serder.Metadata `union:"region"` // PackageScheduleBase // Type string `json:"type"` //} 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"` }