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

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