inst/doc/howto-dm-rows.R

## ----setup, include = FALSE----------------------------------------------
source("setup/setup.R")

## ------------------------------------------------------------------------
#  library(dm)
#  parent <- tibble(value = c("A", "B", "C"), pk = 1:3)
#  parent
#  child <- tibble(value = c("a", "b", "c"), pk = 1:3, fk = c(1, 1, NA))
#  child
#  demo_dm <-
#    dm(parent = parent, child = child) %>%
#    dm_add_pk(parent, pk) %>%
#    dm_add_pk(child, pk) %>%
#    dm_add_fk(child, fk, parent)
#  
#  demo_dm %>%
#    dm_draw(view_type = "all")

## ------------------------------------------------------------------------
#  dm_examine_constraints(demo_dm)

## ------------------------------------------------------------------------
#  library(DBI)
#  sqlite_db <- DBI::dbConnect(RSQLite::SQLite())
#  demo_sql <- copy_dm_to(sqlite_db, demo_dm, temporary = FALSE)
#  demo_sql

## ------------------------------------------------------------------------
#  new_parent <- tibble(value = "D", pk = 4)
#  new_parent
#  new_child <- tibble(value = "d", pk = 4, fk = 4)
#  new_child
#  dm_insert_in <-
#    dm(parent = new_parent, child = new_child) %>%
#    copy_dm_to(sqlite_db, ., temporary = TRUE)

## ------------------------------------------------------------------------
#  dm_insert_out <-
#    demo_sql %>%
#    dm_rows_insert(dm_insert_in)

## ------------------------------------------------------------------------
#  dm_insert_out$child
#  demo_sql$child

## ------------------------------------------------------------------------
#  dm_insert_out <-
#    demo_sql %>%
#    dm_rows_insert(dm_insert_in, in_place = TRUE)
#  
#  demo_sql$child

## ------------------------------------------------------------------------
#  updated_child <- tibble(value = "b", pk = 2, fk = 2)
#  updated_child
#  dm_update_in <-
#    dm(child = updated_child) %>%
#    copy_dm_to(sqlite_db, ., temporary = TRUE)
#  
#  dm_update_out <-
#    demo_sql %>%
#    dm_rows_update(dm_update_in, in_place = TRUE)
#  
#  demo_sql$child

## ------------------------------------------------------------------------
#  local_dm <- collect(demo_sql)
#  
#  local_dm$parent
#  local_dm$child
#  dm_deleted <-
#    dm(parent = new_parent, child = new_child) %>%
#    dm_rows_delete(local_dm, .)
#  
#  dm_deleted$child

## ------------------------------------------------------------------------
#  patched_child <- tibble(value = "c", pk = 3, fk = 3)
#  patched_child
#  dm_patched <-
#    dm(child = patched_child) %>%
#    dm_rows_patch(dm_deleted, .)
#  
#  dm_patched$child

## ------------------------------------------------------------------------
#  upserted_parent <- tibble(value = "D", pk = 4)
#  upserted_parent
#  upserted_child <- tibble(value = c("b", "d"), pk = c(2, 4), fk = c(3, 4))
#  upserted_child
#  dm_upserted <-
#    dm(parent = upserted_parent, child = upserted_child) %>%
#    dm_rows_upsert(dm_patched, .)
#  
#  dm_upserted$parent
#  dm_upserted$child

## ----disconnect----------------------------------------------------------
#  DBI::dbDisconnect(sqlite_db)

Try the dm package in your browser

Any scripts or data that you put into this service are public.

dm documentation built on Nov. 2, 2023, 6:07 p.m.