1
0

repos.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package admin
  2. import (
  3. "github.com/unknwon/paginater"
  4. log "unknwon.dev/clog/v2"
  5. "gogs.io/gogs/internal/conf"
  6. "gogs.io/gogs/internal/context"
  7. "gogs.io/gogs/internal/database"
  8. )
  9. const (
  10. REPOS = "admin/repo/list"
  11. )
  12. func Repos(c *context.Context) {
  13. c.Data["Title"] = c.Tr("admin.repositories")
  14. c.Data["PageIsAdmin"] = true
  15. c.Data["PageIsAdminRepositories"] = true
  16. page := c.QueryInt("page")
  17. if page <= 0 {
  18. page = 1
  19. }
  20. var (
  21. repos []*database.Repository
  22. count int64
  23. err error
  24. )
  25. keyword := c.Query("q")
  26. if keyword == "" {
  27. repos, err = database.Repositories(page, conf.UI.Admin.RepoPagingNum)
  28. if err != nil {
  29. c.Error(err, "list repositories")
  30. return
  31. }
  32. count = database.CountRepositories(true)
  33. } else {
  34. repos, count, err = database.SearchRepositoryByName(&database.SearchRepoOptions{
  35. Keyword: keyword,
  36. OrderBy: "id ASC",
  37. Private: true,
  38. Page: page,
  39. PageSize: conf.UI.Admin.RepoPagingNum,
  40. })
  41. if err != nil {
  42. c.Error(err, "search repository by name")
  43. return
  44. }
  45. }
  46. c.Data["Keyword"] = keyword
  47. c.Data["Total"] = count
  48. c.Data["Page"] = paginater.New(int(count), conf.UI.Admin.RepoPagingNum, page, 5)
  49. if err = database.RepositoryList(repos).LoadAttributes(); err != nil {
  50. c.Error(err, "load attributes")
  51. return
  52. }
  53. c.Data["Repos"] = repos
  54. c.Success(REPOS)
  55. }
  56. func DeleteRepo(c *context.Context) {
  57. repo, err := database.GetRepositoryByID(c.QueryInt64("id"))
  58. if err != nil {
  59. c.Error(err, "get repository by ID")
  60. return
  61. }
  62. if err := database.DeleteRepository(repo.MustOwner().ID, repo.ID); err != nil {
  63. c.Error(err, "delete repository")
  64. return
  65. }
  66. log.Trace("Repository deleted: %s/%s", repo.MustOwner().Name, repo.Name)
  67. c.Flash.Success(c.Tr("repo.settings.deletion_success"))
  68. c.JSONSuccess(map[string]any{
  69. "redirect": conf.Server.Subpath + "/admin/repos?page=" + c.Query("page"),
  70. })
  71. }