# README
SObject Tree API
The tree
package is an implementation of Salesforce APIs
centered on SObject Tree
operations. These operations include:
- Create Multiple Records with Children
As a reference, see Salesforce API
documentation
Examples
The following are examples to access the APIs
. It is assumed that a go-sfdc
session has been created.
Builder
type treeBuilder struct {
sobject string
fields map[string]interface{}
referenceID string
}
func (b *treeBuilder) SObject() string {
return b.sobject
}
func (b *treeBuilder) Fields() map[string]interface{} {
return b.fields
}
func (b *treeBuilder) ReferenceID() string {
return b.referenceID
}
// build some records
accountRef1Builder := &treeBuilder{
sobject: "Account",
referenceID: "ref1",
fields: map[string]interface{}{
"name": "SampleAccount11",
"phone": "1234567890",
"website": "www.salesforce.com",
"numberOfEmployees": 100,
"industry": "Banking",
},
}
accountRef2Builder := &treeBuilder{
sobject: "Account",
referenceID: "ref4",
fields: map[string]interface{}{
"name": "SampleAccount112",
"Phone": "1234567890",
"website": "www.salesforce2.com",
"numberOfEmployees": 100,
"industry": "Banking",
},
}
contactRef3Builder := &treeBuilder{
sobject: "Contact",
referenceID: "ref2",
fields: map[string]interface{}{
"lastname": "Smith11",
"title": "President",
"email": "[email protected]",
},
}
contactRef4Builder := &treeBuilder{
sobject: "Contact",
referenceID: "ref3",
fields: map[string]interface{}{
"lastname": "Evans11",
"title": "Vice President",
"email": "[email protected]",
},
}
account1RecordBuilder, err := tree.NewRecordBuilder(accountRef1Builder)
if err != nil {
fmt.Printf("NewRecordBuilder Error %s\n", err.Error())
return
}
contact1RecordBuilder, err := tree.NewRecordBuilder(contactRef3Builder)
if err != nil {
fmt.Printf("NewRecordBuilder Error %s\n", err.Error())
return
}
contact2RecordBuilder, err := tree.NewRecordBuilder(contactRef4Builder)
if err != nil {
fmt.Printf("NewRecordBuilder Error %s\n", err.Error())
return
}
account1RecordBuilder.SubRecords("contacts", contact1RecordBuilder.Build(), contact2RecordBuilder.Build())
account2RecordBuilder, err := tree.NewRecordBuilder(accountRef2Builder)
if err != nil {
fmt.Printf("NewRecordBuilder Error %s\n", err.Error())
return
}
Create Accounts with Children
inserter := &treeInserter{
sobject: "Account",
records: []*tree.Record{
account1RecordBuilder.Build(),
account2RecordBuilder.Build(),
},
}
resource := tree.NewResource(session)
value, err := resource.Insert(inserter)
if err != nil {
fmt.Printf("resource.Insert Error %s\n", err.Error())
return
}
fmt.Printf("%+v\n", *value)