package models import "github.com/toolkits/pkg/logger" type ClasspathResource struct { Id int64 ClasspathId int64 ResIdent string } func (ClasspathResource) TableName() string { return "classpath_resource" } func ClasspathResourceCount(where string, args ...interface{}) (num int64, err error) { num, err = DB.Where(where, args...).Count(new(ClasspathResource)) if err != nil { logger.Errorf("mysql.error: count classpath_resource fail: %v", err) return num, internalServerError } return num, nil } func ClasspathResourceGets(where string, args ...interface{}) ([]ClasspathResource, error) { var objs []ClasspathResource err := DB.Where(where, args...).Find(&objs) if err != nil { logger.Errorf("mysql.error: get classpath_resources fail: %v", err) return objs, internalServerError } return objs, nil } func ClasspathResourceGetAll() ([]ClasspathResource, error) { var objs []ClasspathResource err := DB.Find(&objs) if err != nil { logger.Errorf("mysql.error: get classpath_resources fail: %v", err) return objs, internalServerError } return objs, nil } func ClasspathResourceAdd(classpathId int64, resIdent string) error { num, err := ClasspathResourceCount("classpath_id=? and res_ident=?", classpathId, resIdent) if err != nil { return err } if num > 0 { // already exists return nil } obj := ClasspathResource{ ClasspathId: classpathId, ResIdent: resIdent, } return DBInsertOne(obj) } func ClasspathResourceDel(classpathId int64, idents []string) error { if len(idents) == 0 { return nil } _, err := DB.Where("classpath_id=?", classpathId).In("res_ident", idents).Delete(new(ClasspathResource)) if err != nil { logger.Errorf("mysql.error: delete classpath_resource fail: %v", err) return internalServerError } return nil } // 如果发现资源没有在all这个classpath下,就把它加进来 func BindOrphanToPresetClasspath() { sql := "insert into classpath_resource(classpath_id, res_ident) select 1, ident from resource where ident not in (select res_ident from classpath_resource)" ret, err := DB.Exec(sql) if err != nil { logger.Errorf("mysql.error: addOrphanToPresetClasspath fail: %v", err) return } num, err := ret.RowsAffected() if err != nil { logger.Errorf("mysql.error: cannot load rows affected: %v", err) return } if num > 0 { logger.Warningf("we found %d orphan resources", num) } }