feat: работа с орфанными записями
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user