# 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)
# Functions
NewRecordBuilder will create a new builder.
NewResource creates a new composite tree resource from the session.
# Structs
Attributes are the attributes of the composite tree.
InsertValue is the return value for each record.
Record is the composite tree SObject.
RecordBuilder is record builder for the composite SObject Tree API.
Resource is the composite tree API resource.
Value is the return value from the API call.