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 11 kB

8 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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. Content string `gorm:"column:content" json:"Content"`
  28. AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
  29. CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
  30. }
  31. type BindingDAO struct {
  32. ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
  33. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  34. Name string `gorm:"column:name" json:"Name"`
  35. DataType string `gorm:"column:data_type" json:"dataType"`
  36. Content string `gorm:"column:content" json:"Content"`
  37. AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
  38. CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
  39. BindingCluster []BindingCluster `gorm:"foreignKey:binding_id;references:id" json:"bindingCluster"`
  40. }
  41. type BindingAccessData struct {
  42. ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
  43. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  44. UserName string `gorm:"column:username" json:"userName"`
  45. SSOId string `gorm:"column:sso_id" json:"ssoID"`
  46. Name string `gorm:"column:name" json:"Name"`
  47. DataType string `gorm:"column:data_type" json:"dataType"`
  48. Content string `gorm:"column:content" json:"Content"`
  49. AccessLevel string `gorm:"column:access_level" json:"accessLevel"`
  50. ApplicantID cdssdk.UserID `gorm:"column:applicant_id" json:"applicantID"`
  51. Status string `gorm:"column:status" json:"status"`
  52. CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
  53. }
  54. type BindingDetail struct {
  55. ID DataID `json:"ID"`
  56. UserID cdssdk.UserID `json:"ownerID"`
  57. UserName string `json:"userName"`
  58. SSOId string `json:"ssoID"`
  59. Name string `json:"Name"`
  60. Info sch.DataBinding `json:"info"`
  61. Package Package `json:"package"`
  62. Status string `json:"status"`
  63. AccessLevel string `json:"accessLevel"`
  64. CreateTime time.Time `json:"createTime"`
  65. }
  66. func (Binding) TableName() string {
  67. return "BindingData" // 确保和数据库中的表名一致
  68. }
  69. type BindingCluster struct {
  70. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  71. ClusterID ClusterID `gorm:"column:cluster_id" json:"clusterID"`
  72. Status string `gorm:"column:status" json:"status"`
  73. Param string `gorm:"column:param" json:"Param"`
  74. JsonData string `gorm:"column:json_data" json:"jsonData"`
  75. }
  76. func (BindingCluster) TableName() string {
  77. return "bindingCluster" // 确保和数据库中的表名一致
  78. }
  79. type Folder struct {
  80. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  81. Path string `gorm:"column:path_name" json:"path"`
  82. CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
  83. }
  84. func (Folder) TableName() string {
  85. return "folders"
  86. }
  87. type DataID int64
  88. type FolderID int64
  89. type Cluster struct {
  90. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"PackageID"`
  91. ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
  92. StorageID cdssdk.StorageID `gorm:"column:storage_id" json:"storageID"`
  93. }
  94. func (Cluster) TableName() string {
  95. return "uploadedCluster" // 确保和数据库中的表名一致
  96. }
  97. type Package struct {
  98. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  99. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  100. PackageName string `gorm:"column:package_name" json:"packageName"`
  101. BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
  102. DataType string `gorm:"column:data_type" json:"dataType"`
  103. JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
  104. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  105. CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
  106. Objects []cdssdk.Object `gorm:"column:objects" json:"objects"`
  107. UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"`
  108. Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
  109. //BlockChain []BlockChain `gorm:"foreignKey:package_id;references:package_id" json:"blockChains"` // 关联 BlockChain 数据
  110. UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"`
  111. }
  112. type PackageDAO struct {
  113. UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"`
  114. PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"`
  115. PackageName string `gorm:"column:package_name" json:"packageName"`
  116. BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"`
  117. DataType string `gorm:"column:data_type" json:"dataType"`
  118. //JsonData string `gorm:"column:json_data" json:"jsonData"` // JSON 数据字段
  119. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  120. CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
  121. UploadedCluster []Cluster `gorm:"foreignKey:package_id;references:package_id" json:"clusters"` // 关联 Cluster 数据
  122. Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"`
  123. UploadPriority string `gorm:"column:upload_priority" json:"uploadPriority"`
  124. }
  125. type PackageCloneDAO struct {
  126. ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
  127. ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"`
  128. ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"`
  129. Name string `gorm:"column:name" json:"name"`
  130. Description string `gorm:"column:description" json:"description"`
  131. BootstrapObjectID cdssdk.ObjectID `gorm:"column:bootstrap_object_id" json:"bootstrapObjectID"`
  132. ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
  133. //ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"`
  134. ImageID schsdk.ImageID `gorm:"column:image_id" json:"imageID"`
  135. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  136. CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
  137. }
  138. func (PackageCloneDAO) TableName() string {
  139. return "packageClone" // 确保和数据库中的表名一致
  140. }
  141. type PackageCloneParam struct {
  142. PackageID cdssdk.PackageID `json:"packageID" binding:"required"`
  143. PackageName string `json:"packageName" binding:"required"`
  144. Name string `json:"name"`
  145. Description string `json:"description"`
  146. BootstrapObjectID cdssdk.ObjectID `json:"bootstrapObjectID"`
  147. ClusterID schsdk.ClusterID `json:"clusterID"`
  148. ImageID schsdk.ImageID `json:"imageID"`
  149. }
  150. type PackageCloneVO struct {
  151. ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"`
  152. ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"`
  153. ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"`
  154. Name string `gorm:"column:name" json:"name"`
  155. Description string `gorm:"column:description" json:"description"`
  156. BootstrapObjectID cdssdk.ObjectID `gorm:"column:bootstrap_object_id" json:"bootstrapObjectID"`
  157. ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
  158. //ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"`
  159. ImageID string `gorm:"column:image_id" json:"imageID"`
  160. BindingID DataID `gorm:"column:binding_id" json:"bindingID"`
  161. CreateTime time.Time `gorm:"column:created_at" json:"createTime"`
  162. ClusterMapping ClusterMapping `gorm:"foreignKey:cluster_id;references:cluster_id" json:"cluster"`
  163. }
  164. type ClusterMapping struct {
  165. ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"`
  166. ClusterName string `gorm:"column:cluster_name" json:"clusterName"`
  167. StorageID cdssdk.StorageID `gorm:"column:storage_id" json:"storageID"`
  168. StorageType string `gorm:"column:storage_type" json:"storageType"`
  169. StoragePath string `gorm:"column:storage_path" json:"storagePath"`
  170. }
  171. func (ClusterMapping) TableName() string {
  172. return "ClusterMapping"
  173. }
  174. type ScheduleTarget interface {
  175. Noop()
  176. }
  177. var DataScheduleTargetTypeUnion = types.NewTypeUnion[ScheduleTarget](
  178. (*JCSScheduleTarget)(nil),
  179. (*UrlScheduleTarget)(nil),
  180. )
  181. var _ = serder.UseTypeUnionInternallyTagged(&DataScheduleTargetTypeUnion, "type")
  182. type ScheduleTargetBase struct{}
  183. func (d *ScheduleTargetBase) Noop() {}
  184. type JCSScheduleTarget struct {
  185. ScheduleTargetBase
  186. UserID cdssdk.UserID `json:"userID"`
  187. ScheduleStorages []ScheduleStorage `json:"scheduleStorages"`
  188. }
  189. type UrlScheduleTarget struct {
  190. ScheduleTargetBase
  191. ScheduleUrls []ScheduleUrl `json:"scheduleUrls"`
  192. }
  193. type ScheduleUrl struct {
  194. ClusterID ClusterID `json:"clusterID"`
  195. //RepositoryName string `json:"repositoryName"`
  196. JsonData string `json:"jsonData"`
  197. }
  198. type ScheduleStorage struct {
  199. StorageID cdssdk.StorageID `json:"storageID"`
  200. RootPath string `json:"rootPath"`
  201. }