repo_object.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package repositories
  2. import (
  3. "fmt"
  4. "time"
  5. "xorm.io/xorm"
  6. "xps/datamodel"
  7. "xps/viewmodel"
  8. )
  9. type RepoObjectRepo struct {
  10. engine *xorm.Engine
  11. }
  12. func NewRepoObjectRepo(engine *xorm.Engine) *RepoObjectRepo {
  13. return &RepoObjectRepo{
  14. engine: engine,
  15. }
  16. }
  17. func (d *RepoObjectRepo) GetListById(repoId int64) ([]viewmodel.RepoObjectInfo, error) {
  18. sqlSelect := ` SELECT A.* ,
  19. B.model_title,
  20. C.object_title,
  21. C.object_code,
  22. C.object_type `
  23. sqlFrom := ` FROM repo_object AS A
  24. LEFT JOIN ds_model AS B ON (A.model_id = B.model_id)
  25. LEFT JOIN ds_object AS C ON (A.model_id = C.model_id AND A.object_id = C.object_id) `
  26. sqlWhere := ` WHERE A.deleted_flag = 0 `
  27. sqlWhere += fmt.Sprintf(" AND A.repo_id = %d ", repoId)
  28. sqlOrderBy := " ORDER BY A.model_id, A.object_id ASC "
  29. datalist := make([]viewmodel.RepoObjectInfo, 0)
  30. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  31. if err != nil {
  32. return nil, err
  33. } else {
  34. return datalist, nil
  35. }
  36. }
  37. func (d *RepoObjectRepo) Create(data *datamodel.RepoObject) error {
  38. data.CreatedAt = time.Now()
  39. _, err := d.engine.Insert(data)
  40. return err
  41. }
  42. func (d *RepoObjectRepo) Delete(repoId, modelId, objectId int64) error {
  43. data := &datamodel.RepoObject{}
  44. _, err := d.engine.
  45. Where("repo_id = ?", repoId).
  46. Where("model_id = ?", modelId).
  47. Where("object_id = ?", objectId).
  48. Delete(data)
  49. return err
  50. }