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.4 kB

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