From 081e9bc86d3a3ff62e2a672cc296496f1dc40b42 Mon Sep 17 00:00:00 2001 From: alexey <a@bayrepo.ru> Date: Sun, 23 Mar 2025 17:27:22 +0300 Subject: [PATCH] Added fixes --- .gitignore | 4 ++-- app.rb | 30 ++++++++++++++++++++++++++++++ classes/db.rb | 9 +++++++++ views/footer.erb | 2 +- views/header.erb | 4 ++++ views/sanitize.erb | 18 ++++++++++++++++++ 6 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 views/sanitize.erb diff --git a/.gitignore b/.gitignore index a81cda1..bfa6ab4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ vendor -repo +repo/* db/*.sqlite3 -projects +projects/* .ruby-lsp keys/private keys/public diff --git a/app.rb b/app.rb index dfe2573..bf0a9b8 100644 --- a/app.rb +++ b/app.rb @@ -1390,6 +1390,36 @@ get "/prjsignview/:id/*" do end end +get "/sanitize" do + #Подчистим гит проекты, которые есть в базе, но нет в файловой системе + all_gits = db.get_gits + deleted_items = 0 + unless all_gits.nil? + repo = GitRepo.new(cfg.get_repo, db) + repos = repo.getrepos + list_for_delete = [] + all_gits.each do |item| + find_item = false + repos.each do |rep| + if rep[:reponame] == item[:reponame] + find_item = true + break + end + end + unless find_item + list_for_delete << item[:id] + end + end + deleted_items = deleted_items + list_for_delete.length + list_for_delete.each do |item| + db.delete_git_by_id(item) + end + end + @deleted_items = deleted_items + @page_name = "Очистка устаревших или потерянных записей базы данных" + erb :sanitize +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/db.rb b/classes/db.rb index aafcc86..ca1bc4a 100644 --- a/classes/db.rb +++ b/classes/db.rb @@ -72,6 +72,7 @@ class DBase id = rep_id[:id] RepocRecips.where(repo_id: id).delete ReposProjects.where(repo_id: id).delete + Repos.where(reponame: repo_name).delete end end @@ -371,4 +372,12 @@ class DBase def set_project_address(prj_id, address) ProjectsProjects.where(proj_id: prj_id.to_i).update(remote_address: address) end + + def get_gits() + Repos.all + end + + def delete_git_by_id(id) + Repos.where(id: id.to_i).delete + end end diff --git a/views/footer.erb b/views/footer.erb index f184f25..47f702e 100644 --- a/views/footer.erb +++ b/views/footer.erb @@ -6,7 +6,7 @@ <ul class="list-inline"> <li class="list-inline-item me-4"><a class="link-light" href="https://brepo.ru">Документация</a></li> <li class="list-inline-item me-4"><a class="link-light" href="https://dev.brepo.ru">Разработка</a></li> - <li class="list-inline-item"><a class="link-light" href="https://hestiadocs.brepo.ru">Партнеры</a></li> + <li class="list-inline-item"><a class="link-light" href="/sanitize">Подчистка</a></li> </ul> <ul class="list-inline"> <li class="list-inline-item me-4"><a href="https://dev.brepo.ru"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-github text-light"> diff --git a/views/header.erb b/views/header.erb index 2633783..abc5b34 100644 --- a/views/header.erb +++ b/views/header.erb @@ -45,6 +45,10 @@ <span class="p-1"> <a href="/bldcfg">build-окружения</a> </span> + <span>|</span> + <span class="p-1"> + <a href="/builds">сборки</a> + </span> </div> </div> <div class="container"> diff --git a/views/sanitize.erb b/views/sanitize.erb new file mode 100644 index 0000000..3042790 --- /dev/null +++ b/views/sanitize.erb @@ -0,0 +1,18 @@ +<%= erb :header %> + <div class="container"> + <div class="row"> + <div class="col-md-4"></div> + <div class="col-md-4"> + <div class="card"> + <div class="card-header"> + <h5 class="mb-0">Зачистка устаревших или потерявшихся данных из базы</h5> + </div> + <div class="card-body"> + <p class="card-text">Удалено <%= @deleted_items %> записей из базы</p> + </div> + </div> + </div> + <div class="col-md-4"></div> + </div> + </div> +<%= erb :footer %> \ No newline at end of file