test_setup = function() {
# export DATA_MODEL_DIR=~/projects/itr/walkthrough_vrp/data_model
library(devtools)
devtools::load_all()
#data_model_dir = setenv_osx()
library(magrittr)
#library(assertthat)
#library(dplyr)
#library(purrr)
#library(readr)
#library(rio)
#library(stringr)
#library(tidyr)
}
#' @export
main_manual_rdb_to_data = function() {
main_rdb_to_data_step01()
# manual steps:
# process ddl.sql -> ddl_m.sql
# ~/projects/itr/vrp_doc/data_model/data/view/ddl_m.sql
# %s/\<BIGINT\>/INT/g
# tabloların referans sıralamasını düzelt
# tüm enum'ların df ifadelerini oluştur
# -- df place_enum: word=./data/view/place_enum.txt
# predefined verileri çıkart: enum_var, enum_value
# -- df: nogen
main_rdb_to_data_step02()
}
#' @export
mkdir_dir_structure = function() {
data_model_dir = env_data_model_dir()
dir_structure = file.path(data_model_dir, c("rdb/def", "rdb/img", "rdb/view", "schema/gen", "schema/img", "schema/yuml", "data", "sample_data", "authorization/gen", "meta"))
for (i in 1:length(dir_structure)) {
dir.create(path = dir_structure[i], recursive = T)
}
}
#' @export
main_rdb_to_data_step01 = function() {
mkdir_dir_structure()
yuml_inputs = main_yuml_to_uml()
main_yuml_to_rdb__yuml_to_ddl()
#> ~/projects/itr/vrp_doc/data_model/data/view/ddl.sql
rdb_inputs = main_rdb_to_data()
#> ~/projects/itr/vrp_doc/data_model/data/sql/sql_insert/sql_insert_enum_var.sql
main_enum_rdb_to_datafiller_enum_txt()
#> ~/projects/itr/yuml2data_wt/dm/rdb/view/route_stop_enum.txt
print("=====")
print("main_rdb_to_data_step01() inputs:")
print("yuml data model inputs")
print(yuml_inputs)
print("rdb inputs")
print(rdb_inputs)
print("DATA_MODEL_DIR")
print(env_data_model_dir())
}
#' @export
main_rdb_to_data_step02 = function() {
mkdir_dir_structure()
#< ~/projects/itr/vrp_doc/data_model/data/view/ddl_m.sql
main_ddl_to_data()
#> ~/projects/itr/vrp_doc/data_model/data/view/data.sql
copy_files_to_psk_file_structure()
}
#' @export
copy_files_to_psk_file_structure = function() {
data_model_dir = env_data_model_dir()
pfs = r_psk_file_structure(data_model_dir)
wd = getwd()
setwd(data_model_dir)
rs = lapply(1:nrow(pfs), function(i, pfs) {
rutils::file_copy(pfs$src[i], pfs$dest[i], recursive = T, overwrite = T)
}, pfs) %>%
unlist()
setwd(wd)
}
#' @export
main_yuml_to_rdb__yuml_to_ddl = function() {
data_model_dir = env_data_model_dir()
rdt = yuml_to_rdb(data_model_dir)
##> $data_entity
##> # A tibble: 23 x 2
##> data_entity_id entity_name
##> <int> <chr>
##> 1 1 address_variant
##> 2 2 address
##> $data_field
##> # A tibble: 135 x 8
##> data_field_id data_field_name type pk_fk not_null data_entity_id fk_data_entity_id enum_var_name
##> <int> <chr> <chr> <chr> <lgl> <int> <int> <chr>
##> 1 1 address_variant_id INT PK FALSE 1 NA NA
##> 2 2 address_id INT FK TRUE 1 2 NA
ddl = rdb_to_ddl(
data_entity = rdt$data_entity
, data_field = rdt$data_field
)
##> # A tibble: 23 x 2
##> data_entity_id sql_create_table
##> <int> <chr>
##> 1 1 CREATE TABLE address_variant (address_variant_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, address_id BIGINT NOT NULL RE…
##> 2 2 CREATE TABLE address (address_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, address TEXT , company_extid TEXT );
dor = r_dependency_order(data_model_dir)
den2 = rdt$data_entity %>%
dplyr::left_join(ddl, by = "data_entity_id") %>%
dplyr::left_join(dor, by = "entity_name") %>%
dplyr::arrange(order_no) %>%
dplyr::select(-order_no)
##> data_entity_id entity_name sql_create_table
##> <int> <chr> <chr>
##> 1 2 address CREATE TABLE address (address_id BIGINT ...
##> 2 1 address_variant CREATE TABLE address_variant (address_variant_id ...
rio::export(den2, sprintf("%s/rdb/view/data_entity_with_ddl.tsv", data_model_dir))
ddl_lines = den2$sql_create_table %>%
# split into new lines from '(' but not after 'REFERENCES'
stringr::str_replace_all("(?<!REFERENCES \\w{1,64} )([(])", "\\1\\\n ") %>%
# split into new lines from ')' but not after 'REFERENCES'
stringr::str_replace_all("(?<!REFERENCES \\w{1,64} \\(\\w{1,64})([)])", "\\\n \\1 ") %>%
# split into new lines from ','
stringr::str_replace_all("([,])", "\\\n \\1 ")
path = sprintf("%s/schema/gen/ddl.sql", data_model_dir)
writeLines(ddl_lines, path)
entities = rev(den2$entity_name)
reset_sql = sprintf("truncate %s restart identity cascade;", entities)
writeLines( reset_sql, sprintf("%s/sample_data/reset.sql", data_model_dir) )
views_sql = sprintf("create or replace view %s as select * from data.%s;", entities, entities)
writeLines(views_sql, sprintf("%s/schema/gen/views.sql", data_model_dir))
permissions_sql = sprintf("grant select, insert, update, delete on api.%s to webuser;", entities)
writeLines(permissions_sql, sprintf("%s/authorization/gen/permissions.sql", data_model_dir))
return(path)
}
test_sh = function() {
cat_yuml.sh = system.file("bash/cat_yuml.sh", package = "yuml2data")
data_model_dir = env_data_model_dir()
system2(cat_yuml.sh, data_model_dir)
#print("xlp")
#system(sprintf("%s %s", cat_yuml.sh, data_model_dir), intern = T)
}
#' @export
main_yuml_to_rdb_schema = function() {
env_data_model_dir()
data_model_dir = Sys.getenv("DATA_MODEL_DIR")
update_rdb_data_step_1(data_model_dir)
}
#' @export
data_model_dir = function() {
env_data_model_dir()
Sys.getenv("DATA_MODEL_DIR")
}
#' @export
env_data_model_dir = function() {
data_model_dir = Sys.getenv("DATA_MODEL_DIR")
if (data_model_dir == "") {
Sys.setenv(DATA_MODEL_DIR = "/Users/mertnuhoglu/projects/itr/vrp_doc/data_model/")
}
return(data_model_dir)
}
setenv_osx = function() {
Sys.setenv(DATA_MODEL_DIR = "/Users/mertnuhoglu/projects/itr/vrp_doc/data_model/")
env_data_model_dir()
}
setenv_docker = function() {
library(vrpdata)
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
Sys.setenv(DATA_MODEL_DIR = "/srv/app/data/jtn")
env_data_model_dir()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.