feat: работа с орфанными записями

This commit is contained in:
2026-04-24 15:58:29 +03:00
parent 87444b5718
commit c63beeef0c
5 changed files with 75 additions and 9 deletions

View File

@@ -110,6 +110,7 @@ init_scheme = function(scheme_file) {
if (!dir.exists(db_path)) dir.create(db_path)
cli::cli_h1("Инициализация схемы")
schms <- purrr::map2(
.x = scheme_file,
.y = names(scheme_file),
@@ -118,8 +119,15 @@ init_scheme = function(scheme_file) {
con <- db$make_db_connection(y)
on.exit(db$close_db_connection(con), add = TRUE)
# новый объект
schm <- scheme_R6$new(x)
# проверка схемы с существующей базой данных и инициализация таблиц
db$check_if_table_is_exist_and_init_if_not(schm, con)
# удаление орфанных записей
db$db_clean_orphans(schm = schm, con = con)
schm
}
)
@@ -129,13 +137,13 @@ init_scheme = function(scheme_file) {
names(schms),
\(x) schms[[x]]$nested_tables_names
)
nested_tables_ids <- unlist(nested_tables_ids)
tab <- table(nested_tables_ids)
# если встречается хоть одно значение несколько раз - начать истошно кричать (могут возникнуть пробемы при вызове всплывающих окон в формах)
if (!all(!tab > 1)) {
cli::cli_abort(c("В одной или нескольких схемах наименования вложенных форм совпадают:", paste("-", names(tab)[tab > 1])))
}
saveRDS(schms, "scheme.rds")