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.

ai_model_manage.go 8.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. package models
  2. import (
  3. "fmt"
  4. "code.gitea.io/gitea/modules/log"
  5. "code.gitea.io/gitea/modules/setting"
  6. "code.gitea.io/gitea/modules/timeutil"
  7. "xorm.io/builder"
  8. "xorm.io/xorm"
  9. )
  10. type AiModelManage struct {
  11. ID string `xorm:"pk"`
  12. Name string `xorm:"INDEX NOT NULL"`
  13. Version string `xorm:"NOT NULL"`
  14. VersionCount int `xorm:"NOT NULL DEFAULT 0"`
  15. New int `xorm:"NOT NULL"`
  16. Type int `xorm:"NOT NULL"`
  17. Size int64 `xorm:"NOT NULL"`
  18. Description string `xorm:"varchar(2000)"`
  19. Label string `xorm:"varchar(1000)"`
  20. Path string `xorm:"varchar(400) NOT NULL"`
  21. DownloadCount int `xorm:"NOT NULL DEFAULT 0"`
  22. Engine int64 `xorm:"NOT NULL DEFAULT 0"`
  23. Status int `xorm:"NOT NULL DEFAULT 0"`
  24. Accuracy string `xorm:"varchar(1000)"`
  25. AttachmentId string `xorm:"NULL"`
  26. RepoId int64 `xorm:"INDEX NULL"`
  27. CodeBranch string `xorm:"varchar(400) NULL"`
  28. CodeCommitID string `xorm:"NULL"`
  29. UserId int64 `xorm:"NOT NULL"`
  30. UserName string
  31. UserRelAvatarLink string
  32. TrainTaskInfo string `xorm:"text NULL"`
  33. CreatedUnix timeutil.TimeStamp `xorm:"created"`
  34. UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
  35. IsCanOper bool
  36. IsCanDelete bool
  37. }
  38. type AiModelConvert struct {
  39. ID string `xorm:"pk"`
  40. Name string `xorm:"INDEX NOT NULL"`
  41. Status string `xorm:"NULL"`
  42. SrcEngine int `xorm:"NOT NULL DEFAULT 0"`
  43. RepoId int64 `xorm:"INDEX NULL"`
  44. ModelId string `xorm:"NOT NULL"`
  45. ModelVersion string `xorm:"NOT NULL"`
  46. DestFormat int `xorm:"NOT NULL DEFAULT 0"`
  47. NetOutputFormat int `xorm:"NULL"`
  48. UserId int64 `xorm:"NOT NULL"`
  49. RunTime int64 `xorm:"NULL"`
  50. TrainJobDuration string
  51. InputShape string `xorm:"varchar(2000)"`
  52. InputDataFormat string `xorm:"NOT NULL"`
  53. Description string `xorm:"varchar(2000)"`
  54. Path string `xorm:"varchar(400) NOT NULL"`
  55. CreatedUnix timeutil.TimeStamp `xorm:"created"`
  56. UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
  57. UserName string
  58. UserRelAvatarLink string
  59. IsCanOper bool
  60. IsCanDelete bool
  61. }
  62. type AiModelQueryOptions struct {
  63. ListOptions
  64. RepoID int64 // include all repos if empty
  65. UserID int64
  66. ModelID string
  67. SortType string
  68. New int
  69. // JobStatus CloudbrainStatus
  70. Type int
  71. Status int
  72. }
  73. func SaveModelConvert(modelConvert *AiModelConvert) error {
  74. sess := x.NewSession()
  75. defer sess.Close()
  76. re, err := sess.Insert(modelConvert)
  77. if err != nil {
  78. log.Info("insert modelConvert error." + err.Error())
  79. return err
  80. }
  81. log.Info("success to save modelConvert db.re=" + fmt.Sprint((re)))
  82. return nil
  83. }
  84. func SaveModelToDb(model *AiModelManage) error {
  85. sess := x.NewSession()
  86. defer sess.Close()
  87. re, err := sess.Insert(model)
  88. if err != nil {
  89. log.Info("insert error." + err.Error())
  90. return err
  91. }
  92. log.Info("success to save db.re=" + fmt.Sprint((re)))
  93. return nil
  94. }
  95. func QueryModelConvertById(id string) (*AiModelConvert, error) {
  96. sess := x.NewSession()
  97. defer sess.Close()
  98. sess.Select("*").Table(new(AiModelConvert)).Where("id='" + id + "'")
  99. aiModelManageConvertList := make([]*AiModelConvert, 0)
  100. err := sess.Find(&aiModelManageConvertList)
  101. if err == nil {
  102. if len(aiModelManageConvertList) == 1 {
  103. return aiModelManageConvertList[0], nil
  104. }
  105. }
  106. return nil, err
  107. }
  108. func QueryModelById(id string) (*AiModelManage, error) {
  109. sess := x.NewSession()
  110. defer sess.Close()
  111. sess.Select("*").Table("ai_model_manage").
  112. Where("id='" + id + "'")
  113. aiModelManageList := make([]*AiModelManage, 0)
  114. err := sess.Find(&aiModelManageList)
  115. if err == nil {
  116. if len(aiModelManageList) == 1 {
  117. return aiModelManageList[0], nil
  118. }
  119. }
  120. return nil, err
  121. }
  122. func DeleteModelConvertById(id string) error {
  123. sess := x.NewSession()
  124. defer sess.Close()
  125. re, err := sess.Delete(&AiModelConvert{
  126. ID: id,
  127. })
  128. if err != nil {
  129. return err
  130. }
  131. log.Info("success to delete AiModelManageConvert from db.re=" + fmt.Sprint((re)))
  132. return nil
  133. }
  134. func DeleteModelById(id string) error {
  135. sess := x.NewSession()
  136. defer sess.Close()
  137. re, err := sess.Delete(&AiModelManage{
  138. ID: id,
  139. })
  140. if err != nil {
  141. return err
  142. }
  143. log.Info("success to delete from db.re=" + fmt.Sprint((re)))
  144. return nil
  145. }
  146. func ModifyModelDescription(id string, description string) error {
  147. var sess *xorm.Session
  148. sess = x.ID(id)
  149. defer sess.Close()
  150. re, err := sess.Cols("description").Update(&AiModelManage{
  151. Description: description,
  152. })
  153. if err != nil {
  154. return err
  155. }
  156. log.Info("success to update description from db.re=" + fmt.Sprint((re)))
  157. return nil
  158. }
  159. func ModifyModelNewProperty(id string, new int, versioncount int) error {
  160. var sess *xorm.Session
  161. sess = x.ID(id)
  162. defer sess.Close()
  163. re, err := sess.Cols("new", "version_count").Update(&AiModelManage{
  164. New: new,
  165. VersionCount: versioncount,
  166. })
  167. if err != nil {
  168. return err
  169. }
  170. log.Info("success to update new property from db.re=" + fmt.Sprint((re)))
  171. return nil
  172. }
  173. func ModifyModelDownloadCount(id string) error {
  174. sess := x.NewSession()
  175. defer sess.Close()
  176. if _, err := sess.Exec("UPDATE `ai_model_manage` SET download_count = download_count + 1 WHERE id = ?", id); err != nil {
  177. return err
  178. }
  179. return nil
  180. }
  181. func QueryModelByName(name string, repoId int64) []*AiModelManage {
  182. sess := x.NewSession()
  183. defer sess.Close()
  184. sess.Select("*").Table("ai_model_manage").
  185. Where("name='" + name + "' and repo_id=" + fmt.Sprint(repoId)).OrderBy("created_unix desc")
  186. aiModelManageList := make([]*AiModelManage, 0)
  187. sess.Find(&aiModelManageList)
  188. return aiModelManageList
  189. }
  190. func QueryModel(opts *AiModelQueryOptions) ([]*AiModelManage, int64, error) {
  191. sess := x.NewSession()
  192. defer sess.Close()
  193. var cond = builder.NewCond()
  194. if opts.RepoID > 0 {
  195. cond = cond.And(
  196. builder.Eq{"ai_model_manage.repo_id": opts.RepoID},
  197. )
  198. }
  199. if opts.UserID > 0 {
  200. cond = cond.And(
  201. builder.Eq{"ai_model_manage.user_id": opts.UserID},
  202. )
  203. }
  204. if opts.New >= 0 {
  205. cond = cond.And(
  206. builder.Eq{"ai_model_manage.new": opts.New},
  207. )
  208. }
  209. if len(opts.ModelID) > 0 {
  210. cond = cond.And(
  211. builder.Eq{"ai_model_manage.id": opts.ModelID},
  212. )
  213. }
  214. if (opts.Type) >= 0 {
  215. cond = cond.And(
  216. builder.Eq{"ai_model_manage.type": opts.Type},
  217. )
  218. }
  219. count, err := sess.Where(cond).Count(new(AiModelManage))
  220. if err != nil {
  221. return nil, 0, fmt.Errorf("Count: %v", err)
  222. }
  223. if opts.Page >= 0 && opts.PageSize > 0 {
  224. var start int
  225. if opts.Page == 0 {
  226. start = 0
  227. } else {
  228. start = (opts.Page - 1) * opts.PageSize
  229. }
  230. sess.Limit(opts.PageSize, start)
  231. }
  232. sess.OrderBy("ai_model_manage.created_unix DESC")
  233. aiModelManages := make([]*AiModelManage, 0, setting.UI.IssuePagingNum)
  234. if err := sess.Table("ai_model_manage").Where(cond).
  235. Find(&aiModelManages); err != nil {
  236. return nil, 0, fmt.Errorf("Find: %v", err)
  237. }
  238. return aiModelManages, count, nil
  239. }
  240. func QueryModelConvert(opts *AiModelQueryOptions) ([]*AiModelConvert, int64, error) {
  241. sess := x.NewSession()
  242. defer sess.Close()
  243. var cond = builder.NewCond()
  244. if opts.RepoID > 0 {
  245. cond = cond.And(
  246. builder.Eq{"ai_model_convert.repo_id": opts.RepoID},
  247. )
  248. }
  249. if opts.UserID > 0 {
  250. cond = cond.And(
  251. builder.Eq{"ai_model_convert.user_id": opts.UserID},
  252. )
  253. }
  254. count, err := sess.Where(cond).Count(new(AiModelConvert))
  255. if err != nil {
  256. return nil, 0, fmt.Errorf("Count: %v", err)
  257. }
  258. if opts.Page >= 0 && opts.PageSize > 0 {
  259. var start int
  260. if opts.Page == 0 {
  261. start = 0
  262. } else {
  263. start = (opts.Page - 1) * opts.PageSize
  264. }
  265. sess.Limit(opts.PageSize, start)
  266. }
  267. sess.OrderBy("ai_model_convert.created_unix DESC")
  268. aiModelManageConvert := make([]*AiModelConvert, 0, setting.UI.IssuePagingNum)
  269. if err := sess.Table(new(AiModelConvert)).Where(cond).
  270. Find(&aiModelManageConvert); err != nil {
  271. return nil, 0, fmt.Errorf("Find: %v", err)
  272. }
  273. return aiModelManageConvert, count, nil
  274. }