From ecb884f6996b4e160dee1dbbc80776c9a1833e45 Mon Sep 17 00:00:00 2001 From: Anh Nguyet Vu <32753274+anngvu@users.noreply.github.com> Date: Fri, 13 Sep 2024 10:25:29 -0700 Subject: [PATCH] Add schema binding feature (#189) LGTM thanks @anngvu ! --- R/new_project.R | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/R/new_project.R b/R/new_project.R index c70b2c0..cf614ee 100644 --- a/R/new_project.R +++ b/R/new_project.R @@ -92,11 +92,21 @@ new_project <- function(name, # Create default upper-level folders folders <- add_default_folders(project) - data_folder <- folders[["Raw Data"]] + data_folder_id <- folders[["Raw Data"]]$properties$id + + # Bind JSON schema so children folders have NF's dataset schemas, see + # https://repo-prod.prod.sagebase.org/repo/v1/schema/type/registered/org.synapse.nf-superdataset + # and https://help.synapse.org/docs/JSON-Schemas.3107291536.html + bind_schema_request <- jsonlite::toJSON(list(entityId = data_folder_id, + `schema$id` = "org.synapse.nf-superdataset", + enableDerivedAnnotations = TRUE), + auto_unbox = TRUE) + binding_uri <- glue::glue("https://repo-prod.prod.sagebase.org/repo/v1/entity/{data_folder_id}/schema/binding") + try(.syn$restPUT(binding_uri, bind_schema_request)) # Create data-specific folders in "Raw Data" if(length(datasets)) { - make_folder(parent = data_folder$properties$id, folders = datasets) + make_folder(parent = data_folder_id, folders = datasets) } # Create homes for non-data resources alongside "Raw Data"