package repositories import ( "fmt" "time" "xorm.io/xorm" "xps/datamodel" "xps/viewmodel" ) type RepoObjectRepo struct { engine *xorm.Engine } func NewRepoObjectRepo(engine *xorm.Engine) *RepoObjectRepo { return &RepoObjectRepo{ engine: engine, } } func (d *RepoObjectRepo) GetListById(repoId int64) ([]viewmodel.RepoObjectInfo, error) { sqlSelect := ` SELECT A.* , B.model_title, C.object_title, C.object_code, C.object_type ` sqlFrom := ` FROM repo_object AS A LEFT JOIN ds_model AS B ON (A.model_id = B.model_id) LEFT JOIN ds_object AS C ON (A.model_id = C.model_id AND A.object_id = C.object_id) ` sqlWhere := ` WHERE A.deleted_flag = 0 ` sqlWhere += fmt.Sprintf(" AND A.repo_id = %d ", repoId) sqlOrderBy := " ORDER BY A.model_id, A.object_id ASC " datalist := make([]viewmodel.RepoObjectInfo, 0) err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist) if err != nil { return nil, err } else { return datalist, nil } } func (d *RepoObjectRepo) Create(data *datamodel.RepoObject) error { data.CreatedAt = time.Now() _, err := d.engine.Insert(data) return err } func (d *RepoObjectRepo) Delete(repoId, modelId, objectId int64) error { data := &datamodel.RepoObject{} _, err := d.engine. Where("repo_id = ?", repoId). Where("model_id = ?", modelId). Where("object_id = ?", objectId). Delete(data) return err }