Skip to content

Migration Strategy

OwenGalvia edited this page Jan 31, 2025 · 4 revisions

Things that could create data errors

  • removing an option from a domain node or concept list this would mean some resources in the stale data would error on save because the new model wouldn't recognize the id. We'd need to be advised on how to handle this data either deleting it or replacing these values with another valid option.
  • changing the collection a concept/concept-list use if we change collections to one that no longer contains the previous concepts we can't import old data. We'd need to map previous concepts with their equivalent in the new list
  • changing a datatype Data needs converted based on the change that's occurring
  • changing cardinality changing whether a node accepts one or many tiles needs data placed in an array or taken out. If we go from many to single we will also need guidance on how to pick the data we keep and which to remove
--- 
title: Overview
---
%%{
  init: {
  "theme": "base",
  "themeVariables": {
    "primaryColor": "#4C566A",
    "primaryTextColor": "black",
    "primaryBorderColor": "#2E3440",
    "lineColor": "#8FBCBB",
    "secondaryColor": "#404046",
    "tertiaryColor": "#404046",
    "edgeLabelBackground": "#ccccff"
    }
  }
}%%
graph LR
 key ~~~ resource_model
 resource_model((Arches Resource Model)):::data -- make stale copy --> export_model:::arches
 export_model --> staleResourceModelJson[Json for stale model data]:::data
 resource_model --> export_data:::arches
 export_data --> staleResourceData[json with stale resource data]:::data
 staleResourceData --> identification:::ident

 subgraph identification
  compare_nodes:::maybe
  detection_functions[Other Functions to determine necessary tansformations]:::unstarted
  compare_nodes --> new_nodes:::data
  compare_nodes --> deleted_nodes:::data
  compare_nodes --> datatype_changes:::data
  datatype_changes --> handle_datatype_changes:::maybe
  deleted_nodes --> handle_deleted_nodes:::unready
 end

 handle_datatype_changes --> transformations
 handle_deleted_nodes --> transformations
 identification --> transformations:::trans

 subgraph transformations
  domain_to_concept:::ready
  concept_to_domain:::ready
  allow_many:::ready
  
  data_checker:::unready 
  replace_node:::maybe 
  remove_tile:::ready 
  remove_resources:::ready 
  remove_node:::unready 
  find_node_values:::ready 
  replace_ids:::unstarted
  more[more data type changes]:::unstarted
 end 

 data_checker --> refinedData[Transformed Data]:::data

 transformations --> refinedData[Transformed Data]:::data


 refinedData --> import_data[import data]:::arches
 import_data --> result{result}:::meta
 result -.error.-> staleResourceData
 staleResourceData -..-> reverse_migration:::ready
 reverse_migration -..-> resource_model
 result --  success --> updated_resource_model(((New graph JSON in pkg))):::data
 import_model:::arches --> updated_resource_model

 subgraph key
  arches[provided by arches]:::arches
  arches ~~~ ready[method which is ready now]:::ready
  ready ~~~ maybe[method made but not adequately tested]:::maybe
  maybe ~~~ unready[method that is started but not fit for purpose]:::unready
  unready ~~~ unstarted[method/s we have not begun making]:::unstarted
  unstarted ~~~ data[data]:::data
 end


%%cssStyles
classDef arches fill:blue
classDef ready fill:lime
classDef maybe fill:yellow
classDef unready fill:orange
classDef unstarted fill:red
classDef data fill:silver
classDef meta fill:skyblue

classDef ident fill:violet
classDef trans fill:lightpink

Loading
Clone this wiki locally