You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

models.go 7.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package uploadersdk
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/types"
  4. sch "gitlink.org.cn/cloudream/common/sdks/pcmscheduler"
  5. schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler"
  6. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  7. "gitlink.org.cn/cloudream/common/utils/serder"
  8. "time"
  9. )
  10. type ClusterID string
  11. type BlockChain struct {
  12. ObjectID cdssdk.ObjectID `gorm:"column:object_id" json:"objectID"`
  13. BlockChainID string `gorm:"column:blockchain_id" json:"blockChainID"`
  14. BlockChainType string `gorm:"column:blockchain_type" json:"blockChainType"`
  15. //FileName string `gorm:"column:file_name" json:"fileName"`
  16. //FileHash string `gorm:"column:file_hash" json:"fileHash"`
  17. //FileSize int64 `gorm:"column:file_size" json:"fileSize"`
  18. }
  19. func (BlockChain) TableName() string {
  20. return "BlockChain" // 确保和数据库中的表名一致
  21. }
  22. type Binding struct {
  23. ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
  24. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  25. Name string `gorm:"column:name" json:"Name"`
  26. DataType string `gorm:"column:data_type" json:"dataType"`
  27. JsonData string `gorm:"column:json_data" json:"jsonData"`
  28. Content string `gorm:"column:content" json:"Content"`
  29. AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
  30. CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
  31. }
  32. type BindingAccessData struct {
  33. ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
  34. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  35. UserName string `gorm:"column:username" json:"userName"`
  36. SSOId string `gorm:"column:sso_id" json:"ssoID"`
  37. Name string `gorm:"column:name" json:"Name"`
  38. DataType string `gorm:"column:data_type" json:"dataType"`
  39. Content string `gorm:"column:content" json:"Content"`
  40. AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
  41. ApplicantID cdssdk.UserID `gorm:"column:applicant_id" json:"applicantID"`
  42. Status string `gorm:"column:status" json:"status"`
  43. }
  44. type BindingDetail struct {
  45. ID DataID `json:"ID"`
  46. UserID cdssdk.UserID `json:"ownerID"`
  47. UserName string `json:"userName"`
  48. SSOId string `json:"ssoID"`
  49. Name string `json:"Name"`
  50. Info sch.DataBinding `json:"info"`
  51. Packages []Package `json:"packages"`
  52. Status string `json:"status"`
  53. AccessLevel string `json:"accessLevel"`
  54. }
  55. func (Binding) TableName() string {
  56. return "BindingData" // 确保和数据库中的表名一致
  57. }
  58. type Folder struct {
  59. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  60. Path string `gorm:"column:path_name" json:"path"`
  61. CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
  62. }
  63. func (Folder) TableName() string {
  64. return "folders"
  65. }
  66. type DataID int64
  67. type FolderID int64
  68. type Cluster struct {
  69. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"PackageID"`
  70. ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
  71. StorageID cdssdk.StorageID `gorm:"column:storage_id" json:"storageID"`
  72. }
  73. func (Cluster) TableName() string {
  74. return "uploadedCluster" // 确保和数据库中的表名一致
  75. }
  76. type Package struct {
  77. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  78. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  79. PackageName string `gorm:"column:package_name" json:"packageName"`
  80. BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
  81. DataType string `gorm:"column:data_type" json:"dataType"`
  82. JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
  83. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  84. CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
  85. Objects []cdssdk.Object `gorm:"column:objects" json:"objects"`
  86. UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"`
  87. Versions []PackageVersion `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
  88. //BlockChain []BlockChain `gorm:"foreignKey:package_id;references:package_id" json:"blockChains"` // 关联 BlockChain 数据
  89. UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"`
  90. }
  91. type PackageDAO struct {
  92. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  93. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  94. PackageName string `gorm:"column:package_name" json:"packageName"`
  95. BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
  96. DataType string `gorm:"column:data_type" json:"dataType"`
  97. JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
  98. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  99. CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
  100. UploadedCluster []Cluster `gorm:"foreignKey:package_id;references:package_id" json:"clusters"` // 关联 Cluster 数据
  101. Versions []PackageVersion `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
  102. UploadPriority string `gorm:"column:upload_priority" json:"uploadPriority"`
  103. }
  104. type PackageVersion struct {
  105. ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"`
  106. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  107. PackageName string `gorm:"column:package_name" json:"packageName"`
  108. Version int64 `gorm:"column:package_version" json:"version"`
  109. }
  110. func (PackageVersion) TableName() string {
  111. return "packageVersion" // 确保和数据库中的表名一致
  112. }
  113. //type PackageScheduleType interface {
  114. // Noop()
  115. //}
  116. //
  117. //var PackageScheduleTypeUnion = types.NewTypeUnion[PackageScheduleType](
  118. // (*PackagePreferencesSchedule)(nil),
  119. // (*PackageSpecifyClusterSchedule)(nil),
  120. //)
  121. //
  122. //var _ = serder.UseTypeUnionInternallyTagged(&PackageScheduleTypeUnion, "type")
  123. //
  124. //type PackageScheduleBase struct{}
  125. //
  126. //func (d *PackageScheduleBase) Noop() {}
  127. //
  128. //type PackagePreferencesSchedule struct {
  129. // serder.Metadata `union:"region"`
  130. // PackageScheduleBase
  131. // Type string `json:"type"`
  132. // a sch.Preferences
  133. //}
  134. //
  135. //type PackageSpecifyClusterSchedule struct {
  136. // serder.Metadata `union:"region"`
  137. // PackageScheduleBase
  138. // Type string `json:"type"`
  139. //}
  140. type ScheduleTarget interface {
  141. Noop()
  142. }
  143. var DataScheduleTargetTypeUnion = types.NewTypeUnion[ScheduleTarget](
  144. (*JCSScheduleTarget)(nil),
  145. (*UrlScheduleTarget)(nil),
  146. )
  147. var _ = serder.UseTypeUnionInternallyTagged(&DataScheduleTargetTypeUnion, "type")
  148. type ScheduleTargetBase struct{}
  149. func (d *ScheduleTargetBase) Noop() {}
  150. type JCSScheduleTarget struct {
  151. ScheduleTargetBase
  152. UserID cdssdk.UserID `json:"userID"`
  153. ScheduleStorages []ScheduleStorage `json:"scheduleStorages"`
  154. }
  155. type UrlScheduleTarget struct {
  156. ScheduleTargetBase
  157. ScheduleUrls []ScheduleUrl `json:"scheduleUrls"`
  158. }
  159. type ScheduleUrl struct {
  160. ClusterID ClusterID `json:"clusterID"`
  161. //RepositoryName string `json:"repositoryName"`
  162. JsonData string `json:"jsonData"`
  163. }
  164. type ScheduleStorage struct {
  165. StorageID cdssdk.StorageID `json:"storageID"`
  166. RootPath string `json:"rootPath"`
  167. }