nightingale/models/classpath_resource.go

100 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}
}