|
- package models
-
- import (
- "fmt"
-
- "code.gitea.io/gitea/modules/log"
- "code.gitea.io/gitea/modules/setting"
- "code.gitea.io/gitea/modules/timeutil"
- "xorm.io/builder"
- "xorm.io/xorm"
- )
-
- type AiModelManage struct {
- ID string `xorm:"pk"`
- Name string `xorm:"INDEX NOT NULL"`
- Version string `xorm:"NOT NULL"`
- VersionCount int `xorm:"NOT NULL DEFAULT 0"`
- New int `xorm:"NOT NULL"`
- Type int `xorm:"NOT NULL"`
- Size int64 `xorm:"NOT NULL"`
- Description string `xorm:"varchar(2000)"`
- Label string `xorm:"varchar(1000)"`
- Path string `xorm:"varchar(400) NOT NULL"`
- DownloadCount int `xorm:"NOT NULL DEFAULT 0"`
- Engine int64 `xorm:"NOT NULL DEFAULT 0"`
- Status int `xorm:"NOT NULL DEFAULT 0"`
- Accuracy string `xorm:"varchar(1000)"`
- AttachmentId string `xorm:"NULL"`
- RepoId int64 `xorm:"INDEX NULL"`
- CodeBranch string `xorm:"varchar(400) NULL"`
- CodeCommitID string `xorm:"NULL"`
- UserId int64 `xorm:"NOT NULL"`
- UserName string
- UserRelAvatarLink string
- TrainTaskInfo string `xorm:"text NULL"`
- CreatedUnix timeutil.TimeStamp `xorm:"created"`
- UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
- IsCanOper bool
- IsCanDelete bool
- }
-
- type AiModelQueryOptions struct {
- ListOptions
- RepoID int64 // include all repos if empty
- UserID int64
- ModelID string
- SortType string
- New int
- // JobStatus CloudbrainStatus
- Type int
- }
-
- func SaveModelToDb(model *AiModelManage) error {
- sess := x.NewSession()
- defer sess.Close()
-
- re, err := sess.Insert(model)
- if err != nil {
- log.Info("insert error." + err.Error())
- return err
- }
- log.Info("success to save db.re=" + fmt.Sprint((re)))
- return nil
- }
-
- func QueryModelById(id string) (*AiModelManage, error) {
- sess := x.NewSession()
- defer sess.Close()
- sess.Select("*").Table("ai_model_manage").
- Where("id='" + id + "'")
- aiModelManageList := make([]*AiModelManage, 0)
- err := sess.Find(&aiModelManageList)
- if err == nil {
- if len(aiModelManageList) == 1 {
- return aiModelManageList[0], nil
- }
- }
- return nil, err
- }
-
- func DeleteModelById(id string) error {
- sess := x.NewSession()
- defer sess.Close()
-
- re, err := sess.Delete(&AiModelManage{
- ID: id,
- })
- if err != nil {
- return err
- }
- log.Info("success to delete from db.re=" + fmt.Sprint((re)))
- return nil
-
- }
-
- func ModifyModelDescription(id string, description string) error {
- var sess *xorm.Session
- sess = x.ID(id)
- defer sess.Close()
- re, err := sess.Cols("description").Update(&AiModelManage{
- Description: description,
- })
- if err != nil {
- return err
- }
- log.Info("success to update description from db.re=" + fmt.Sprint((re)))
- return nil
- }
-
- func ModifyModelNewProperty(id string, new int, versioncount int) error {
- var sess *xorm.Session
- sess = x.ID(id)
- defer sess.Close()
- re, err := sess.Cols("new", "version_count").Update(&AiModelManage{
- New: new,
- VersionCount: versioncount,
- })
- if err != nil {
- return err
- }
- log.Info("success to update new property from db.re=" + fmt.Sprint((re)))
- return nil
- }
-
- func ModifyModelDownloadCount(id string) error {
- sess := x.NewSession()
- defer sess.Close()
- if _, err := sess.Exec("UPDATE `ai_model_manage` SET download_count = download_count + 1 WHERE id = ?", id); err != nil {
- return err
- }
-
- return nil
- }
-
- func QueryModelByName(name string, repoId int64) []*AiModelManage {
- sess := x.NewSession()
- defer sess.Close()
- sess.Select("*").Table("ai_model_manage").
- Where("name='" + name + "' and repo_id=" + fmt.Sprint(repoId)).OrderBy("created_unix desc")
- aiModelManageList := make([]*AiModelManage, 0)
- sess.Find(&aiModelManageList)
- return aiModelManageList
- }
-
- func QueryModel(opts *AiModelQueryOptions) ([]*AiModelManage, int64, error) {
- sess := x.NewSession()
- defer sess.Close()
-
- var cond = builder.NewCond()
- if opts.RepoID > 0 {
- cond = cond.And(
- builder.Eq{"ai_model_manage.repo_id": opts.RepoID},
- )
- }
-
- if opts.UserID > 0 {
- cond = cond.And(
- builder.Eq{"ai_model_manage.user_id": opts.UserID},
- )
- }
-
- if opts.New >= 0 {
- cond = cond.And(
- builder.Eq{"ai_model_manage.new": opts.New},
- )
- }
-
- if len(opts.ModelID) > 0 {
- cond = cond.And(
- builder.Eq{"ai_model_manage.id": opts.ModelID},
- )
- }
-
- if (opts.Type) >= 0 {
- cond = cond.And(
- builder.Eq{"ai_model_manage.type": opts.Type},
- )
- }
-
- count, err := sess.Where(cond).Count(new(AiModelManage))
- if err != nil {
- return nil, 0, fmt.Errorf("Count: %v", err)
- }
-
- if opts.Page >= 0 && opts.PageSize > 0 {
- var start int
- if opts.Page == 0 {
- start = 0
- } else {
- start = (opts.Page - 1) * opts.PageSize
- }
- sess.Limit(opts.PageSize, start)
- }
-
- sess.OrderBy("ai_model_manage.created_unix DESC")
- aiModelManages := make([]*AiModelManage, 0, setting.UI.IssuePagingNum)
- if err := sess.Table("ai_model_manage").Where(cond).
- Find(&aiModelManages); err != nil {
- return nil, 0, fmt.Errorf("Find: %v", err)
- }
-
- return aiModelManages, count, nil
- }
|