Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added upsert functionality and updated RecordNote #160

Merged
merged 1 commit into from
Aug 29, 2022

Conversation

jamesramsden-bh
Copy link
Contributor

@jamesramsden-bh jamesramsden-bh commented Aug 15, 2022

Closes #159

Upsert functionality now added to Mongo TK. Will add a new document if the Tag does not exist, otherwise elements will be added to the document with matching Tag.

Can be tested by setting up as below, and verifying manually (e.g. with a Pull in GH or in MongoDB Compass). Copy-paste the following in a GH canvas:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Archive name="Root">
  <!--Grasshopper archive-->
  <!--Grasshopper and GH_IO.dll are copyrighted by Robert McNeel & Associates-->
  <!--Archive generated by GH_IO.dll file utility library {0.2.0002}-->
  <items count="1">
    <item name="ArchiveVersion" type_name="gh_version" type_code="80">
      <Major>0</Major>
      <Minor>2</Minor>
      <Revision>2</Revision>
    </item>
  </items>
  <chunks count="1">
    <chunk name="Clipboard">
      <items count="1">
        <item name="plugin_version" type_name="gh_version" type_code="80">
          <Major>1</Major>
          <Minor>0</Minor>
          <Revision>7</Revision>
        </item>
      </items>
      <chunks count="5">
        <chunk name="DocumentHeader">
          <items count="5">
            <item name="DocumentID" type_name="gh_guid" type_code="9">340c5f90-a204-43e9-b21b-006c82bf1f44</item>
            <item name="Preview" type_name="gh_string" type_code="10">Shaded</item>
            <item name="PreviewMeshType" type_name="gh_int32" type_code="3">1</item>
            <item name="PreviewNormal" type_name="gh_drawing_color" type_code="36">
              <ARGB>100;150;0;0</ARGB>
            </item>
            <item name="PreviewSelected" type_name="gh_drawing_color" type_code="36">
              <ARGB>100;0;150;0</ARGB>
            </item>
          </items>
        </chunk>
        <chunk name="DefinitionProperties">
          <items count="3">
            <item name="Date" type_name="gh_date" type_code="8">637962531453272114</item>
            <item name="Description" type_name="gh_string" type_code="10"></item>
            <item name="Name" type_name="gh_string" type_code="10"></item>
          </items>
          <chunks count="3">
            <chunk name="Revisions">
              <items count="1">
                <item name="RevisionCount" type_name="gh_int32" type_code="3">0</item>
              </items>
            </chunk>
            <chunk name="Projection">
              <items count="2">
                <item name="Target" type_name="gh_drawing_point" type_code="30">
                  <X>40</X>
                  <Y>38</Y>
                </item>
                <item name="Zoom" type_name="gh_single" type_code="5">0.85</item>
              </items>
            </chunk>
            <chunk name="Views">
              <items count="1">
                <item name="ViewCount" type_name="gh_int32" type_code="3">0</item>
              </items>
            </chunk>
          </chunks>
        </chunk>
        <chunk name="RcpLayout">
          <items count="1">
            <item name="GroupCount" type_name="gh_int32" type_code="3">0</item>
          </items>
        </chunk>
        <chunk name="GHALibraries">
          <items count="1">
            <item name="Count" type_name="gh_int32" type_code="3">1</item>
          </items>
          <chunks count="1">
            <chunk name="Library" index="0">
              <items count="6">
                <item name="AssemblyFullName" type_name="gh_string" type_code="10">BH.UI.Grasshopper, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null</item>
                <item name="AssemblyVersion" type_name="gh_string" type_code="10">5.0.0.0</item>
                <item name="Author" type_name="gh_string" type_code="10"></item>
                <item name="Id" type_name="gh_guid" type_code="9">8bbd9f31-e1cd-fb1a-4588-730892e8d0cf</item>
                <item name="Name" type_name="gh_string" type_code="10">BH.UI.Grasshopper</item>
                <item name="Version" type_name="gh_string" type_code="10">5.0.0.0</item>
              </items>
            </chunk>
          </chunks>
        </chunk>
        <chunk name="DefinitionObjects">
          <items count="1">
            <item name="ObjectCount" type_name="gh_int32" type_code="3">10</item>
          </items>
          <chunks count="10">
            <chunk name="Object" index="0">
              <items count="3">
                <item name="GUID" type_name="gh_guid" type_code="9">dd286cb5-2bc6-4c4a-aac5-542d1d0954b5</item>
                <item name="Lib" type_name="gh_guid" type_code="9">8bbd9f31-e1cd-fb1a-4588-730892e8d0cf</item>
                <item name="Name" type_name="gh_string" type_code="10">MongoAdapter</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="5">
                    <item name="Component" type_name="gh_string" type_code="10">{ "SelectedItem" : { "_t" : "System.Reflection.MethodBase", "TypeName" : "{ \"_t\" : \"System.Type\", \"Name\" : \"BH.Adapter.Mongo.MongoAdapter, Mongo_Adapter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null\", \"_bhomVersion\" : \"5.3\" }", "MethodName" : ".ctor", "Parameters" : ["{ \"_t\" : \"System.Type\", \"Name\" : \"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }"], "_bhomVersion" : "5.3" }, "InputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "0c355b93-29f1-4887-a46a-e2f7c74ce279", "Name" : "connectionString", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "Text given to you to access the database. Will generally start with \"mongodb://\"\r\nThis is a String", "Kind" : "Input", "HasDefaultValue" : false, "DefaultValue" : { "_t" : "System.DBNull" }, "IsRequired" : true, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "0f3edeb9-a725-48c3-973f-f7c799fb4f70", "Name" : "databaseName", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "name of the database itself\r\nThis is a String", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : "project", "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "12f290e4-09b9-4a15-af8d-6f657e0c7a7e", "Name" : "collectionName", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "name of the collection you want to access inside that database\r\nThis is a String", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : "bhomObjects", "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "116eb16e-158f-4111-bd5a-e0251e246213", "Name" : "useHistory", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "If true, will store a copy of the data pushed to Mongo in a separate collection. Data from the last 5 pushes is available there\r\nThis is a Boolean", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : false, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }], "OutputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "eeef1466-62ed-45db-b842-33777a1ef599", "Name" : "adapter", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "BH.Adapter.Mongo.MongoAdapter, Mongo_Adapter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null", "_bhomVersion" : "5.3" }, "Description" : "Adapter to Mongo Database\r\nThis is a BH.Adapter.Mongo.MongoAdapter", "Kind" : "Output", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : true, "IsSelected" : true, "DefaultValueWarning" : "" }], "BHoM_Guid" : "55513e68-8978-4f1b-9266-3abb0887c4b8", "_bhomVersion" : "5.3" }</item>
                    <item name="Description" type_name="gh_string" type_code="10">Create an adapter to a Mongo database. Use this constructor if you have a single long string representing the location of your database (and potentially identification)
</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">aeb02ded-052a-4045-af10-5ed0ce06ba05</item>
                    <item name="Name" type_name="gh_string" type_code="10">MongoAdapter</item>
                    <item name="NickName" type_name="gh_string" type_code="10">MongoAdapter</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="3">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>384</X>
                          <Y>176</Y>
                          <W>171</W>
                          <H>113</H>
                        </item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>491</X>
                          <Y>233</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="ParameterData">
                      <items count="7">
                        <item name="InputCount" type_name="gh_int32" type_code="3">4</item>
                        <item name="InputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
                        <item name="InputId" index="1" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
                        <item name="InputId" index="2" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
                        <item name="InputId" index="3" type_name="gh_guid" type_code="9">cb95db89-6165-43b6-9c41-5702bc5bf137</item>
                        <item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
                        <item name="OutputId" index="0" type_name="gh_guid" type_code="9">72194041-4e06-4e8c-bbeb-36fd484907e0</item>
                      </items>
                      <chunks count="5">
                        <chunk name="InputParam" index="0">
                          <items count="7">
                            <item name="Description" type_name="gh_string" type_code="10">Text given to you to access the database. Will generally start with "mongodb://"
This is a String</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">d36cb425-da4c-4d0c-a197-d7b487d2235d</item>
                            <item name="Name" type_name="gh_string" type_code="10">connectionString</item>
                            <item name="NickName" type_name="gh_string" type_code="10">connectionString</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">1f08c084-5d80-47ea-ac60-749904d35762</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>386</X>
                                  <Y>178</Y>
                                  <W>90</W>
                                  <H>27</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>432.5</X>
                                  <Y>191.625</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="1">
                          <items count="7">
                            <item name="Description" type_name="gh_string" type_code="10">name of the database itself
This is a String</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">662054c4-2acf-4741-a9c8-589d89ebc790</item>
                            <item name="Name" type_name="gh_string" type_code="10">databaseName</item>
                            <item name="NickName" type_name="gh_string" type_code="10">databaseName</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">004c57ba-c4e2-47b5-b128-31484443a64d</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                          </items>
                          <chunks count="2">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>386</X>
                                  <Y>205</Y>
                                  <W>90</W>
                                  <H>27</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>432.5</X>
                                  <Y>218.875</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                            <chunk name="PersistentData">
                              <items count="1">
                                <item name="Count" type_name="gh_int32" type_code="3">1</item>
                              </items>
                              <chunks count="1">
                                <chunk name="Branch" index="0">
                                  <items count="2">
                                    <item name="Count" type_name="gh_int32" type_code="3">1</item>
                                    <item name="Path" type_name="gh_string" type_code="10">{0}</item>
                                  </items>
                                  <chunks count="1">
                                    <chunk name="Item" index="0">
                                      <items count="2">
                                        <item name="null_string" type_name="gh_bool" type_code="1">false</item>
                                        <item name="string" type_name="gh_string" type_code="10">project</item>
                                      </items>
                                    </chunk>
                                  </chunks>
                                </chunk>
                              </chunks>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="2">
                          <items count="7">
                            <item name="Description" type_name="gh_string" type_code="10">name of the collection you want to access inside that database
This is a String</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">1cde8a2a-ae25-473a-8d46-4b5f3405104c</item>
                            <item name="Name" type_name="gh_string" type_code="10">collectionName</item>
                            <item name="NickName" type_name="gh_string" type_code="10">collectionName</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">bbc5234b-268f-41ab-bad7-85151ef41e49</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                          </items>
                          <chunks count="2">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>386</X>
                                  <Y>232</Y>
                                  <W>90</W>
                                  <H>27</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>432.5</X>
                                  <Y>246.125</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                            <chunk name="PersistentData">
                              <items count="1">
                                <item name="Count" type_name="gh_int32" type_code="3">1</item>
                              </items>
                              <chunks count="1">
                                <chunk name="Branch" index="0">
                                  <items count="2">
                                    <item name="Count" type_name="gh_int32" type_code="3">1</item>
                                    <item name="Path" type_name="gh_string" type_code="10">{0}</item>
                                  </items>
                                  <chunks count="1">
                                    <chunk name="Item" index="0">
                                      <items count="2">
                                        <item name="null_string" type_name="gh_bool" type_code="1">false</item>
                                        <item name="string" type_name="gh_string" type_code="10">bhomObjects</item>
                                      </items>
                                    </chunk>
                                  </chunks>
                                </chunk>
                              </chunks>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="3">
                          <items count="6">
                            <item name="Description" type_name="gh_string" type_code="10">If true, will store a copy of the data pushed to Mongo in a separate collection. Data from the last 5 pushes is available there
This is a Boolean</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">b49da316-bca5-45d5-8faa-a6f3cc7d3f2f</item>
                            <item name="Name" type_name="gh_string" type_code="10">useHistory</item>
                            <item name="NickName" type_name="gh_string" type_code="10">useHistory</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                          </items>
                          <chunks count="2">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>386</X>
                                  <Y>259</Y>
                                  <W>90</W>
                                  <H>28</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>432.5</X>
                                  <Y>273.375</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                            <chunk name="PersistentData">
                              <items count="1">
                                <item name="Count" type_name="gh_int32" type_code="3">1</item>
                              </items>
                              <chunks count="1">
                                <chunk name="Branch" index="0">
                                  <items count="2">
                                    <item name="Count" type_name="gh_int32" type_code="3">1</item>
                                    <item name="Path" type_name="gh_string" type_code="10">{0}</item>
                                  </items>
                                  <chunks count="1">
                                    <chunk name="Item" index="0">
                                      <items count="1">
                                        <item name="boolean" type_name="gh_bool" type_code="1">false</item>
                                      </items>
                                    </chunk>
                                  </chunks>
                                </chunk>
                              </chunks>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="OutputParam" index="0">
                          <items count="9">
                            <item name="Description" type_name="gh_string" type_code="10">Adapter to Mongo Database
This is a BH.Adapter.Mongo.MongoAdapter</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">6f78a64c-a929-42ea-b8bd-a5dc4d423834</item>
                            <item name="Name" type_name="gh_string" type_code="10">adapter</item>
                            <item name="NickName" type_name="gh_string" type_code="10">adapter</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "BH.Adapter.Mongo.MongoAdapter, Mongo_Adapter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>506</X>
                                  <Y>178</Y>
                                  <W>47</W>
                                  <H>109</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>529.5</X>
                                  <Y>232.5</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                      </chunks>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="1">
              <items count="2">
                <item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
                <item name="Name" type_name="gh_string" type_code="10">Panel</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="8">
                    <item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">1f08c084-5d80-47ea-ac60-749904d35762</item>
                    <item name="Name" type_name="gh_string" type_code="10">Panel</item>
                    <item name="NickName" type_name="gh_string" type_code="10"></item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                    <item name="UserText" type_name="gh_string" type_code="10">mongodb://localhost:27017</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="5">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>155</X>
                          <Y>167</Y>
                          <W>183</W>
                          <H>28</H>
                        </item>
                        <item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="PanelProperties">
                      <items count="7">
                        <item name="Colour" type_name="gh_drawing_color" type_code="36">
                          <ARGB>255;255;250;90</ARGB>
                        </item>
                        <item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
                        <item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
                        <item name="Multiline" type_name="gh_bool" type_code="1">true</item>
                        <item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
                        <item name="Stream" type_name="gh_bool" type_code="1">false</item>
                        <item name="Wrap" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="2">
              <items count="2">
                <item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
                <item name="Name" type_name="gh_string" type_code="10">Panel</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="8">
                    <item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">004c57ba-c4e2-47b5-b128-31484443a64d</item>
                    <item name="Name" type_name="gh_string" type_code="10">Panel</item>
                    <item name="NickName" type_name="gh_string" type_code="10"></item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                    <item name="UserText" type_name="gh_string" type_code="10">test</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="6">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>208</X>
                          <Y>208</Y>
                          <W>49</W>
                          <H>20</H>
                        </item>
                        <item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>208.5</X>
                          <Y>208</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="PanelProperties">
                      <items count="7">
                        <item name="Colour" type_name="gh_drawing_color" type_code="36">
                          <ARGB>255;255;250;90</ARGB>
                        </item>
                        <item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
                        <item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
                        <item name="Multiline" type_name="gh_bool" type_code="1">true</item>
                        <item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
                        <item name="Stream" type_name="gh_bool" type_code="1">false</item>
                        <item name="Wrap" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="3">
              <items count="2">
                <item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
                <item name="Name" type_name="gh_string" type_code="10">Panel</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="8">
                    <item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">bbc5234b-268f-41ab-bad7-85151ef41e49</item>
                    <item name="Name" type_name="gh_string" type_code="10">Panel</item>
                    <item name="NickName" type_name="gh_string" type_code="10"></item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                    <item name="UserText" type_name="gh_string" type_code="10">220812 upsert test</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="6">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>74</X>
                          <Y>246</Y>
                          <W>206</W>
                          <H>33</H>
                        </item>
                        <item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>74.08244</X>
                          <Y>246</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="PanelProperties">
                      <items count="7">
                        <item name="Colour" type_name="gh_drawing_color" type_code="36">
                          <ARGB>255;255;250;90</ARGB>
                        </item>
                        <item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
                        <item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
                        <item name="Multiline" type_name="gh_bool" type_code="1">true</item>
                        <item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
                        <item name="Stream" type_name="gh_bool" type_code="1">false</item>
                        <item name="Wrap" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="4">
              <items count="3">
                <item name="GUID" type_name="gh_guid" type_code="9">eb7b72e5-b4d8-4ff6-bcbd-833cdec5d1a2</item>
                <item name="Lib" type_name="gh_guid" type_code="9">8bbd9f31-e1cd-fb1a-4588-730892e8d0cf</item>
                <item name="Name" type_name="gh_string" type_code="10">CreateCustom</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="5">
                    <item name="Component" type_name="gh_string" type_code="10">{ "SelectedItem" : null, "InputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "0dbef229-927a-46fb-a3d8-f55dcee555d2", "Name" : "upserttest", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "", "Kind" : "Input", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }], "OutputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "31738b61-b75b-4d31-89d4-36297c01fd6f", "Name" : "object", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "BH.oM.Base.IObject", "_bhomVersion" : "5.3" }, "Description" : "New Object with properties set as per the inputs.", "Kind" : "Output", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : true, "IsSelected" : true, "DefaultValueWarning" : "" }], "BHoM_Guid" : "fb8018fd-ec00-43d0-9cdf-241311e9fe99", "_bhomVersion" : "5.3" }</item>
                    <item name="Description" type_name="gh_string" type_code="10">Creates an instance of a selected type of BHoM object by manually defining its properties (default type is CustomObject)</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">f10a0fb6-796a-4859-abaa-a60d0831b3c3</item>
                    <item name="Name" type_name="gh_string" type_code="10">CreateCustom</item>
                    <item name="NickName" type_name="gh_string" type_code="10">CreateCustom</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="3">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>713</X>
                          <Y>90</Y>
                          <W>130</W>
                          <H>105</H>
                        </item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>786</X>
                          <Y>143</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="ParameterData">
                      <items count="4">
                        <item name="InputCount" type_name="gh_int32" type_code="3">1</item>
                        <item name="InputId" index="0" type_name="gh_guid" type_code="9">d67b6cf3-37ea-438e-a6b4-2cc76b572658</item>
                        <item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
                        <item name="OutputId" index="0" type_name="gh_guid" type_code="9">ffe324e7-1fc0-4818-9fcb-43a0202cc974</item>
                      </items>
                      <chunks count="2">
                        <chunk name="InputParam" index="0">
                          <items count="12">
                            <item name="Description" type_name="gh_string" type_code="10">Represents a collection of generic object with type that can be defined by  the user</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">164b29df-a411-4a97-b62d-3d8a914adf3d</item>
                            <item name="Name" type_name="gh_string" type_code="10">x</item>
                            <item name="NickName" type_name="gh_string" type_code="10">upserttest</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                            <item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">2a40afc2-1f95-4732-b7f8-171defeb0433</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                            <item name="TypeHintID" type_name="gh_guid" type_code="9">6a184b65-baa3-42d1-a548-3915b401de53</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>715</X>
                                  <Y>92</Y>
                                  <W>56</W>
                                  <H>101</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>744.5</X>
                                  <Y>142.5</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="OutputParam" index="0">
                          <items count="9">
                            <item name="Description" type_name="gh_string" type_code="10">New Object with properties set as per the inputs.</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">c3d91c3d-56d6-4082-aee3-7d45962447a6</item>
                            <item name="Name" type_name="gh_string" type_code="10">object</item>
                            <item name="NickName" type_name="gh_string" type_code="10">object</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "BH.oM.Base.IObject", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>801</X>
                                  <Y>92</Y>
                                  <W>40</W>
                                  <H>101</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>821</X>
                                  <Y>142.5</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                      </chunks>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="5">
              <items count="2">
                <item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
                <item name="Name" type_name="gh_string" type_code="10">Panel</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="8">
                    <item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">2a40afc2-1f95-4732-b7f8-171defeb0433</item>
                    <item name="Name" type_name="gh_string" type_code="10">Panel</item>
                    <item name="NickName" type_name="gh_string" type_code="10"></item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                    <item name="UserText" type_name="gh_string" type_code="10">test yay</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="5">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>549</X>
                          <Y>121</Y>
                          <W>76</W>
                          <H>20</H>
                        </item>
                        <item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="PanelProperties">
                      <items count="7">
                        <item name="Colour" type_name="gh_drawing_color" type_code="36">
                          <ARGB>255;255;250;90</ARGB>
                        </item>
                        <item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
                        <item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
                        <item name="Multiline" type_name="gh_bool" type_code="1">true</item>
                        <item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
                        <item name="Stream" type_name="gh_bool" type_code="1">false</item>
                        <item name="Wrap" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="6">
              <items count="3">
                <item name="GUID" type_name="gh_guid" type_code="9">f27e94ad-6939-41aa-b680-094ba245f5c1</item>
                <item name="Lib" type_name="gh_guid" type_code="9">8bbd9f31-e1cd-fb1a-4588-730892e8d0cf</item>
                <item name="Name" type_name="gh_string" type_code="10">Push</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="5">
                    <item name="Component" type_name="gh_string" type_code="10">{ "SelectedItem" : { "_t" : "System.Reflection.MethodBase", "TypeName" : "{ \"_t\" : \"System.Type\", \"Name\" : \"BH.UI.Base.Components.PushCaller, BHoM_UI, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null\", \"_bhomVersion\" : \"5.3\" }", "MethodName" : "Push", "Parameters" : ["{ \"_t\" : \"System.Type\", \"Name\" : \"BH.Adapter.BHoMAdapter, BHoM_Adapter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"System.Collections.Generic.IEnumerable`1, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"GenericArguments\" : [{ \"_t\" : \"System.Type\", \"Name\" : \"System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }], \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"BH.oM.Adapter.PushType\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"BH.oM.Adapter.ActionConfig\", \"_bhomVersion\" : \"5.3\" }", "{ \"_t\" : \"System.Type\", \"Name\" : \"System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\", \"_bhomVersion\" : \"5.3\" }"], "_bhomVersion" : "5.3" }, "InputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "09041b5d-03ed-40da-b37b-6a19b900c980", "Name" : "adapter", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "BH.Adapter.BHoMAdapter, BHoM_Adapter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null", "_bhomVersion" : "5.3" }, "Description" : "Adapter to the external software\r\nThis is a BH.Adapter.BHoMAdapter", "Kind" : "Input", "HasDefaultValue" : false, "DefaultValue" : { "_t" : "System.DBNull" }, "IsRequired" : true, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "70063f49-7a78-41d8-992d-28d94e15f4f1", "Name" : "objects", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Collections.Generic.IEnumerable`1, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "GenericArguments" : [{ "_t" : "System.Type", "Name" : "System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }], "_bhomVersion" : "5.3" }, "Description" : "Objects to push\r\nThis is a IEnumerable&lt;Object&gt;", "Kind" : "Input", "HasDefaultValue" : false, "DefaultValue" : { "_t" : "System.DBNull" }, "IsRequired" : true, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "4d8e572e-ba56-4a7f-9e2a-9c208d3d9ca2", "Name" : "tag", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "Tag to apply to the objects being pushed\r\nThis is a String", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : "", "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "f7cd88b9-d62d-4bdb-b012-2254d828a608", "Name" : "pushType", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "BH.oM.Adapter.PushType", "_bhomVersion" : "5.3" }, "Description" : "Push type. Connect the enum PushType for all the alternatives.\r\nThis is a BH.oM.Adapter.PushType:\r\nControls which type of export should be done by the Adapter `Push` action.\r\nEnum values:\r\n-FullPush: Calls all CRUD methods as appropriate.\r\n-CreateOnly: Uses only the Create CRUD method to export the objects. This may create duplicates if the object already exists.\r\n-CreateNonExisting: Same as FullPush, but does not update pre-existing objects.\r\n-UpdateOnly: Uses only the Update CRUD method to update the objects in the external software. All other objects in the model are left untouched.\r\n-UpdateOrCreateOnly: Attempt to Update the objects if possible, otherwise Create them. Deletion is not included in this type.\r\n-DeleteThenCreate: For all objects being Pushed, identifies their type, calls Delete to remove all of those types, then it Creates them.\r\n-AdapterDefault: AdapterDefault - Picks the value hard-coded in the specific Adapter.", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : 6, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "1cb5b5d4-3a6b-49bd-b6c8-d8580c9de799", "Name" : "actionConfig", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "BH.oM.Adapter.ActionConfig", "_bhomVersion" : "5.3" }, "Description" : "Configuration for this Action. You can input an ActionConfig (it contains the configs common to all Toolkits); \nconsider that Toolkits may have a custom ActionConfig (e.g. GSAConfig, SpeckleConfig).\r\nThis is a BH.oM.Adapter.ActionConfig:\r\nConfigurations specific for an Adapter Action (Push, Pull, etc).\nConsider that your tookit might have a more specific implementation available. Try to look for [your toolkit name]ActionConfig.", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : null, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "08a03c14-0b91-4da8-ab0b-7de5e853241b", "Name" : "active", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "Execute the push\r\nThis is a Boolean", "Kind" : "Input", "HasDefaultValue" : true, "DefaultValue" : false, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }], "OutputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "fd55cdd9-47a9-42ee-8117-fe3b300abc48", "Name" : "objects", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Collections.Generic.List`1, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "GenericArguments" : [{ "_t" : "System.Type", "Name" : "System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }], "_bhomVersion" : "5.3" }, "Description" : "Objects that have been pushed.\nThese objects may be different from the input objects (e.g. their correspondent external software id may be stored in their CustomData).\r\nThis is a Object", "Kind" : "Output", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }, { "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "c08fa26c-9428-4214-bd6e-5597de2f7b98", "Name" : "success", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "Define if the push was sucessful\r\nThis is a Boolean", "Kind" : "Output", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }], "BHoM_Guid" : "28de97ca-c591-4a66-979d-a8c619b32f20", "_bhomVersion" : "5.3" }</item>
                    <item name="Description" type_name="gh_string" type_code="10">Adapter Action 'Push': exports objects to the external software. 
If the Toolkit supports it, this also performs the replace/update of the objects as appropriate.
</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">64bf3a77-ee26-4f42-b647-88a824bb8b71</item>
                    <item name="Name" type_name="gh_string" type_code="10">Push</item>
                    <item name="NickName" type_name="gh_string" type_code="10">Push</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="3">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>1037</X>
                          <Y>146</Y>
                          <W>165</W>
                          <H>124</H>
                        </item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>1139</X>
                          <Y>208</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="ParameterData">
                      <items count="10">
                        <item name="InputCount" type_name="gh_int32" type_code="3">6</item>
                        <item name="InputId" index="0" type_name="gh_guid" type_code="9">72194041-4e06-4e8c-bbeb-36fd484907e0</item>
                        <item name="InputId" index="1" type_name="gh_guid" type_code="9">d67b6cf3-37ea-438e-a6b4-2cc76b572658</item>
                        <item name="InputId" index="2" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
                        <item name="InputId" index="3" type_name="gh_guid" type_code="9">c62f4bd6-9b7f-4a81-94dd-ca16b2d8d3ec</item>
                        <item name="InputId" index="4" type_name="gh_guid" type_code="9">ffe324e7-1fc0-4818-9fcb-43a0202cc974</item>
                        <item name="InputId" index="5" type_name="gh_guid" type_code="9">cb95db89-6165-43b6-9c41-5702bc5bf137</item>
                        <item name="OutputCount" type_name="gh_int32" type_code="3">2</item>
                        <item name="OutputId" index="0" type_name="gh_guid" type_code="9">d67b6cf3-37ea-438e-a6b4-2cc76b572658</item>
                        <item name="OutputId" index="1" type_name="gh_guid" type_code="9">cb95db89-6165-43b6-9c41-5702bc5bf137</item>
                      </items>
                      <chunks count="8">
                        <chunk name="InputParam" index="0">
                          <items count="10">
                            <item name="Description" type_name="gh_string" type_code="10">Adapter to the external software
This is a BH.Adapter.BHoMAdapter</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">644032b3-5ee3-449c-940c-de8ca62b76d4</item>
                            <item name="Name" type_name="gh_string" type_code="10">adapter</item>
                            <item name="NickName" type_name="gh_string" type_code="10">adapter</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "BH.Adapter.BHoMAdapter, BHoM_Adapter, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">6f78a64c-a929-42ea-b8bd-a5dc4d423834</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1039</X>
                                  <Y>148</Y>
                                  <W>85</W>
                                  <H>20</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1091</X>
                                  <Y>158</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="1">
                          <items count="14">
                            <item name="Access" type_name="gh_int32" type_code="3">1</item>
                            <item name="Description" type_name="gh_string" type_code="10">Objects to push
This is a IEnumerable&lt;Object&gt;</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">be201919-981b-44b2-99a5-c7dfec5727ef</item>
                            <item name="Mapping" type_name="gh_int32" type_code="3">1</item>
                            <item name="Name" type_name="gh_string" type_code="10">objects</item>
                            <item name="NickName" type_name="gh_string" type_code="10">objects</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                            <item name="ScriptParamAccess" type_name="gh_int32" type_code="3">1</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">c3d91c3d-56d6-4082-aee3-7d45962447a6</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                            <item name="TypeHintID" type_name="gh_guid" type_code="9">6a184b65-baa3-42d1-a548-3915b401de53</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1039</X>
                                  <Y>168</Y>
                                  <W>85</W>
                                  <H>20</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1091</X>
                                  <Y>178</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="2">
                          <items count="7">
                            <item name="Description" type_name="gh_string" type_code="10">Tag to apply to the objects being pushed
This is a String</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">f6f41e3f-cf58-4874-9f43-1b759cf98b6a</item>
                            <item name="Name" type_name="gh_string" type_code="10">tag</item>
                            <item name="NickName" type_name="gh_string" type_code="10">tag</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">1daa9ebd-d447-44bc-a187-2f518747b741</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                          </items>
                          <chunks count="2">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1039</X>
                                  <Y>188</Y>
                                  <W>85</W>
                                  <H>20</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1091</X>
                                  <Y>198</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                            <chunk name="PersistentData">
                              <items count="1">
                                <item name="Count" type_name="gh_int32" type_code="3">1</item>
                              </items>
                              <chunks count="1">
                                <chunk name="Branch" index="0">
                                  <items count="2">
                                    <item name="Count" type_name="gh_int32" type_code="3">1</item>
                                    <item name="Path" type_name="gh_string" type_code="10">{0}</item>
                                  </items>
                                  <chunks count="1">
                                    <chunk name="Item" index="0">
                                      <items count="2">
                                        <item name="null_string" type_name="gh_bool" type_code="1">false</item>
                                        <item name="string" type_name="gh_string" type_code="10"></item>
                                      </items>
                                    </chunk>
                                  </chunks>
                                </chunk>
                              </chunks>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="3">
                          <items count="10">
                            <item name="Description" type_name="gh_string" type_code="10">Push type. Connect the enum PushType for all the alternatives.
This is a BH.oM.Adapter.PushType:
Controls which type of export should be done by the Adapter `Push` action.
Enum values:
-FullPush: Calls all CRUD methods as appropriate.
-CreateOnly: Uses only the Create CRUD method to export the objects. This may create duplicates if the object already exists.
-CreateNonExisting: Same as FullPush, but does not update pre-existing objects.
-UpdateOnly: Uses only the Update CRUD method to update the objects in the external software. All other objects in the model are left untouched.
-UpdateOrCreateOnly: Attempt to Update the objects if possible, otherwise Create them. Deletion is not included in this type.
-DeleteThenCreate: For all objects being Pushed, identifies their type, calls Delete to remove all of those types, then it Creates them.
-AdapterDefault: AdapterDefault - Picks the value hard-coded in the specific Adapter.</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">b0bae540-d59f-4fd7-942a-e81c03f20262</item>
                            <item name="Name" type_name="gh_string" type_code="10">pushType</item>
                            <item name="NickName" type_name="gh_string" type_code="10">pushType</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "BH.oM.Adapter.PushType", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">404e3257-8cd0-427e-9db3-177ff840d5ef</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="2">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1039</X>
                                  <Y>208</Y>
                                  <W>85</W>
                                  <H>20</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1091</X>
                                  <Y>218</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                            <chunk name="PersistentData">
                              <items count="1">
                                <item name="Count" type_name="gh_int32" type_code="3">1</item>
                              </items>
                              <chunks count="1">
                                <chunk name="Branch" index="0">
                                  <items count="2">
                                    <item name="Count" type_name="gh_int32" type_code="3">1</item>
                                    <item name="Path" type_name="gh_string" type_code="10">{0}</item>
                                  </items>
                                  <chunks count="1">
                                    <chunk name="Item" index="0">
                                      <items count="1">
                                        <item name="Json" type_name="gh_string" type_code="10">{ "_t" : "System.Enum", "TypeName" : { "_t" : "System.Type", "Name" : "BH.oM.Adapter.PushType", "_bhomVersion" : "5.3" }, "Value" : "AdapterDefault", "_bhomVersion" : "5.3" }</item>
                                      </items>
                                    </chunk>
                                  </chunks>
                                </chunk>
                              </chunks>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="4">
                          <items count="9">
                            <item name="Description" type_name="gh_string" type_code="10">Configuration for this Action. You can input an ActionConfig (it contains the configs common to all Toolkits); 
consider that Toolkits may have a custom ActionConfig (e.g. GSAConfig, SpeckleConfig).
This is a BH.oM.Adapter.ActionConfig:
Configurations specific for an Adapter Action (Push, Pull, etc).
Consider that your tookit might have a more specific implementation available. Try to look for [your toolkit name]ActionConfig.</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">ab336dba-9386-4c75-b051-6a8d32a0cf88</item>
                            <item name="Name" type_name="gh_string" type_code="10">actionConfig</item>
                            <item name="NickName" type_name="gh_string" type_code="10">actionConfig</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "BH.oM.Adapter.ActionConfig", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1039</X>
                                  <Y>228</Y>
                                  <W>85</W>
                                  <H>20</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1091</X>
                                  <Y>238</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="InputParam" index="5">
                          <items count="7">
                            <item name="Description" type_name="gh_string" type_code="10">Execute the push
This is a Boolean</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">c4c20e94-a643-481b-a489-c0e53e4061ee</item>
                            <item name="Name" type_name="gh_string" type_code="10">active</item>
                            <item name="NickName" type_name="gh_string" type_code="10">active</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="Source" index="0" type_name="gh_guid" type_code="9">aa1d18a6-f56f-484c-8110-720a7957a15f</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
                          </items>
                          <chunks count="2">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1039</X>
                                  <Y>248</Y>
                                  <W>85</W>
                                  <H>20</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1091</X>
                                  <Y>258</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                            <chunk name="PersistentData">
                              <items count="1">
                                <item name="Count" type_name="gh_int32" type_code="3">1</item>
                              </items>
                              <chunks count="1">
                                <chunk name="Branch" index="0">
                                  <items count="2">
                                    <item name="Count" type_name="gh_int32" type_code="3">1</item>
                                    <item name="Path" type_name="gh_string" type_code="10">{0}</item>
                                  </items>
                                  <chunks count="1">
                                    <chunk name="Item" index="0">
                                      <items count="1">
                                        <item name="boolean" type_name="gh_bool" type_code="1">false</item>
                                      </items>
                                    </chunk>
                                  </chunks>
                                </chunk>
                              </chunks>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="OutputParam" index="0">
                          <items count="12">
                            <item name="Access" type_name="gh_int32" type_code="3">1</item>
                            <item name="Description" type_name="gh_string" type_code="10">Objects that have been pushed.
These objects may be different from the input objects (e.g. their correspondent external software id may be stored in their CustomData).
This is a Object</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">b640f263-f034-44df-9986-0fdfed49d18f</item>
                            <item name="Name" type_name="gh_string" type_code="10">objects</item>
                            <item name="NickName" type_name="gh_string" type_code="10">objects</item>
                            <item name="ObjectType" type_name="gh_string" type_code="10">{ "_t" : "System.Type", "Name" : "System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="ScriptParamAccess" type_name="gh_int32" type_code="3">1</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                            <item name="TypeHintID" type_name="gh_guid" type_code="9">6a184b65-baa3-42d1-a548-3915b401de53</item>
                            <item name="m_ForcePreview" type_name="gh_bool" type_code="1">false</item>
                            <item name="m_MaxItemsPreview" type_name="gh_int32" type_code="3">10000</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1154</X>
                                  <Y>148</Y>
                                  <W>46</W>
                                  <H>60</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1177</X>
                                  <Y>178</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                        <chunk name="OutputParam" index="1">
                          <items count="6">
                            <item name="Description" type_name="gh_string" type_code="10">Define if the push was sucessful
This is a Boolean</item>
                            <item name="InstanceGuid" type_name="gh_guid" type_code="9">7af3472b-c588-4ce1-ac0a-a6c82e558cd3</item>
                            <item name="Name" type_name="gh_string" type_code="10">success</item>
                            <item name="NickName" type_name="gh_string" type_code="10">success</item>
                            <item name="Optional" type_name="gh_bool" type_code="1">true</item>
                            <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                          </items>
                          <chunks count="1">
                            <chunk name="Attributes">
                              <items count="3">
                                <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                                  <X>1154</X>
                                  <Y>208</Y>
                                  <W>46</W>
                                  <H>60</H>
                                </item>
                                <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                                  <X>1177</X>
                                  <Y>238</Y>
                                </item>
                                <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                              </items>
                            </chunk>
                          </chunks>
                        </chunk>
                      </chunks>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="7">
              <items count="2">
                <item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
                <item name="Name" type_name="gh_string" type_code="10">Panel</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="8">
                    <item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">1daa9ebd-d447-44bc-a187-2f518747b741</item>
                    <item name="Name" type_name="gh_string" type_code="10">Panel</item>
                    <item name="NickName" type_name="gh_string" type_code="10"></item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                    <item name="UserText" type_name="gh_string" type_code="10">10</item>
                  </items>
                  <chunks count="2">
                    <chunk name="Attributes">
                      <items count="6">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>928</X>
                          <Y>188</Y>
                          <W>36</W>
                          <H>20</H>
                        </item>
                        <item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
                        <item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>928.475</X>
                          <Y>188.1525</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="PanelProperties">
                      <items count="7">
                        <item name="Colour" type_name="gh_drawing_color" type_code="36">
                          <ARGB>255;255;250;90</ARGB>
                        </item>
                        <item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
                        <item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
                        <item name="Multiline" type_name="gh_bool" type_code="1">true</item>
                        <item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
                        <item name="Stream" type_name="gh_bool" type_code="1">false</item>
                        <item name="Wrap" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="8">
              <items count="3">
                <item name="GUID" type_name="gh_guid" type_code="9">f9c81693-ce16-456a-a1c4-aa109b6f56fe</item>
                <item name="Lib" type_name="gh_guid" type_code="9">8bbd9f31-e1cd-fb1a-4588-730892e8d0cf</item>
                <item name="Name" type_name="gh_string" type_code="10">PushType</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="10">
                    <item name="Component" type_name="gh_string" type_code="10">{ "SelectedItem" : { "_t" : "System.Type", "Name" : "BH.oM.Adapter.PushType", "_bhomVersion" : "5.3" }, "InputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "f363886e-ccff-42af-9b5a-3fa9344ac3f6", "Name" : "index", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "index of the enum value", "Kind" : "Input", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }], "OutputParams" : [{ "_t" : "BH.oM.UI.ParamInfo", "BHoM_Guid" : "a7da5e1c-d792-4b54-937c-a216a21be294", "Name" : "enum", "Fragments" : [], "Tags" : [], "CustomData" : { }, "DataType" : { "_t" : "System.Type", "Name" : "System.Enum, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", "_bhomVersion" : "5.3" }, "Description" : "enum value", "Kind" : "Output", "HasDefaultValue" : false, "DefaultValue" : null, "IsRequired" : false, "IsSelected" : true, "DefaultValueWarning" : "" }], "BHoM_Guid" : "e579da22-adbf-4efd-9dcc-cec16c58b75d", "_bhomVersion" : "5.3" }</item>
                    <item name="Description" type_name="gh_string" type_code="10">This is a BH.oM.Adapter.PushType:
Controls which type of export should be done by the Adapter `Push` action.
Enum values:
-FullPush: Calls all CRUD methods as appropriate.
-CreateOnly: Uses only the Create CRUD method to export the objects. This may create duplicates if the object already exists.
-CreateNonExisting: Same as FullPush, but does not update pre-existing objects.
-UpdateOnly: Uses only the Update CRUD method to update the objects in the external software. All other objects in the model are left untouched.
-UpdateOrCreateOnly: Attempt to Update the objects if possible, otherwise Create them. Deletion is not included in this type.
-DeleteThenCreate: For all objects being Pushed, identifies their type, calls Delete to remove all of those types, then it Creates them.
-AdapterDefault: AdapterDefault - Picks the value hard-coded in the specific Adapter.</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">404e3257-8cd0-427e-9db3-177ff840d5ef</item>
                    <item name="ListCount" type_name="gh_int32" type_code="3">7</item>
                    <item name="ListMode" type_name="gh_int32" type_code="3">1</item>
                    <item name="Name" type_name="gh_string" type_code="10">PushType</item>
                    <item name="NickName" type_name="gh_string" type_code="10">PushType</item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="Selection" type_name="gh_int32" type_code="3">4</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                  </items>
                  <chunks count="8">
                    <chunk name="ListItem" index="0">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">0</item>
                        <item name="Name" type_name="gh_string" type_code="10">FullPush</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">false</item>
                      </items>
                    </chunk>
                    <chunk name="ListItem" index="1">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">1</item>
                        <item name="Name" type_name="gh_string" type_code="10">CreateOnly</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">false</item>
                      </items>
                    </chunk>
                    <chunk name="ListItem" index="2">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">2</item>
                        <item name="Name" type_name="gh_string" type_code="10">CreateNonExisting</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">false</item>
                      </items>
                    </chunk>
                    <chunk name="ListItem" index="3">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">3</item>
                        <item name="Name" type_name="gh_string" type_code="10">UpdateOnly</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">false</item>
                      </items>
                    </chunk>
                    <chunk name="ListItem" index="4">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">4</item>
                        <item name="Name" type_name="gh_string" type_code="10">UpdateOrCreateOnly</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                    <chunk name="ListItem" index="5">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">5</item>
                        <item name="Name" type_name="gh_string" type_code="10">DeleteThenCreate</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">false</item>
                      </items>
                    </chunk>
                    <chunk name="ListItem" index="6">
                      <items count="3">
                        <item name="Expression" type_name="gh_string" type_code="10">6</item>
                        <item name="Name" type_name="gh_string" type_code="10">AdapterDefault</item>
                        <item name="Selected" type_name="gh_bool" type_code="1">false</item>
                      </items>
                    </chunk>
                    <chunk name="Attributes">
                      <items count="3">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>753</X>
                          <Y>222</Y>
                          <W>199</W>
                          <H>22</H>
                        </item>
                        <item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
                          <X>814</X>
                          <Y>222</Y>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
            <chunk name="Object" index="9">
              <items count="2">
                <item name="GUID" type_name="gh_guid" type_code="9">2e78987b-9dfb-42a2-8b76-3923ac8bd91a</item>
                <item name="Name" type_name="gh_string" type_code="10">Boolean Toggle</item>
              </items>
              <chunks count="1">
                <chunk name="Container">
                  <items count="7">
                    <item name="Description" type_name="gh_string" type_code="10">Boolean (true/false) toggle</item>
                    <item name="InstanceGuid" type_name="gh_guid" type_code="9">aa1d18a6-f56f-484c-8110-720a7957a15f</item>
                    <item name="Name" type_name="gh_string" type_code="10">Boolean Toggle</item>
                    <item name="NickName" type_name="gh_string" type_code="10">Toggle</item>
                    <item name="Optional" type_name="gh_bool" type_code="1">false</item>
                    <item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
                    <item name="ToggleValue" type_name="gh_bool" type_code="1">true</item>
                  </items>
                  <chunks count="1">
                    <chunk name="Attributes">
                      <items count="2">
                        <item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
                          <X>809</X>
                          <Y>280</Y>
                          <W>104</W>
                          <H>22</H>
                        </item>
                        <item name="Selected" type_name="gh_bool" type_code="1">true</item>
                      </items>
                    </chunk>
                  </chunks>
                </chunk>
              </chunks>
            </chunk>
          </chunks>
        </chunk>
      </chunks>
    </chunk>
  </chunks>
</Archive>

image

@jamesramsden-bh jamesramsden-bh added the type:feature New capability or enhancement label Aug 15, 2022
@jamesramsden-bh jamesramsden-bh self-assigned this Aug 15, 2022
@jamesramsden-bh
Copy link
Contributor Author

@BHoMBot check required

@bhombot-ci
Copy link

bhombot-ci bot commented Aug 15, 2022

@jamesramsden-bh to confirm, the following actions are now queued:

  • check code-compliance
  • check documentation-compliance
  • check project-compliance
  • check core
  • check null-handling
  • check serialisation
  • check versioning
  • check installer

Copy link
Contributor

@FraserGreenroyd FraserGreenroyd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've reviewed the code but not the functionality. Have no qualms with the code, will let a functionality review provide the approval though for merge providing the written code does as desired.

@jamesramsden-bh
Copy link
Contributor Author

@BHoMBot check copyright-compliance
@BHoMBot check dataset-compliance
@BHoMBot check ready-to-merge

@bhombot-ci
Copy link

bhombot-ci bot commented Aug 15, 2022

@jamesramsden-bh to confirm, the following actions are now queued:

  • check copyright-compliance
  • check dataset-compliance
  • check ready-to-merge

There are 6 requests in the queue ahead of you.

Copy link
Member

@alelom alelom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks good to me, and I tested the script which works:
2022-08-16 13_28_56-MongoDB Compass Community - localhost_27017_test 220812 upsert test

A couple of notes:

  • please include a test script rather than a screenshot. A quick copy-paste of script components into a <details>```xml [paste-here]```</details> section is already better. Check how I updated the PR post.
  • mongo_toolkit still suffers from an old bug I noticed where when you compile it, it may override non-mongo DLLs in the BHoM folder, resulting in subsequent compilation errors. I had to adjust the post-build event to make it work properly, and it's not the first time. Can you please review Mongo_Adapter: postbuild events to only include mongo-related DLLs #162 ?

@jamesramsden-bh
Copy link
Contributor Author

@BHoMBot check ready-to-merge

@adecler
Copy link
Member

adecler commented Aug 23, 2022

@BHoMBot check ready-to-merge

3 similar comments
@FraserGreenroyd
Copy link
Contributor

@BHoMBot check ready-to-merge

@FraserGreenroyd
Copy link
Contributor

@BHoMBot check ready-to-merge

@FraserGreenroyd
Copy link
Contributor

@BHoMBot check ready-to-merge

@FraserGreenroyd
Copy link
Contributor

@BHoMBot check core

@bhombot-ci
Copy link

bhombot-ci bot commented Aug 29, 2022

FAO: @FraserGreenroyd
@FraserGreenroyd is seeking dispensation on this Pull Request to skip a required check. Please can you provide authorisation for the check to be skipped, or provide assistance as appropriate.

The check they wish to have dispensation on is ready-to-merge.

If you are providing dispensation on this occasion, please reply with:

@BHoMBot this is a DevOps instruction. I am authorising dispensation to be granted on check ref. 7839600546

1 similar comment
@bhombot-ci
Copy link

bhombot-ci bot commented Aug 29, 2022

FAO: @FraserGreenroyd
@FraserGreenroyd is seeking dispensation on this Pull Request to skip a required check. Please can you provide authorisation for the check to be skipped, or provide assistance as appropriate.

The check they wish to have dispensation on is ready-to-merge.

If you are providing dispensation on this occasion, please reply with:

@BHoMBot this is a DevOps instruction. I am authorising dispensation to be granted on check ref. 7839600546

@FraserGreenroyd
Copy link
Contributor

@BHoMBot this is a DevOps instruction. I am authorising dispensation to be granted on check ref. 7839600546

@FraserGreenroyd
Copy link
Contributor

@BHoMBot why aren't you listening on this one PR?

@FraserGreenroyd
Copy link
Contributor

@BHoMBot this is a DevOps instruction. I am authorising dispensation to be granted on check ref. 7839600546

@FraserGreenroyd
Copy link
Contributor

For some reason this PR is broken in terms of reporting to BHoMBot - and only this PR which is very odd.

To resolve this merge issue, I have turned off the required check ready-to-merge so it can be merged now (by me), as the reason for the failure was due to the PR not having an approving review, which it does now have from @alelom .

I am then going to turn the check back on for future PRs.

@FraserGreenroyd FraserGreenroyd merged commit 4db6b11 into main Aug 29, 2022
@FraserGreenroyd FraserGreenroyd deleted the Mongo_Toolkit-#159-Upsert branch August 29, 2022 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:feature New capability or enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add upsert push functionality
4 participants