本文整理匯總了Golang中github.com/pomack/dsocial/go/models/dsocial.Contact.GenerateChanges方法的典型用法代碼示例。如果您正苦於以下問題:Golang Contact.GenerateChanges方法的具體用法?Golang Contact.GenerateChanges怎麽用?Golang Contact.GenerateChanges使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/pomack/dsocial/go/models/dsocial.Contact
的用法示例。
在下文中一共展示了Contact.GenerateChanges方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: contactImport
func (p *Pipeline) contactImport(cs ContactsService, ds DataStoreService, dsocialUserId string, contact *Contact, allowAdd, allowDelete, allowUpdate bool) (*dm.Contact, string, os.Error) {
emptyContact := new(dm.Contact)
if contact == nil || contact.Value == nil {
return nil, "", nil
}
fmt.Printf("[PIPELINE]: Importing contact with ExternalServiceId = %v, ExternalUserId = %v, ExternalContactId = %v, DsocialUserId = %v, DsocialContactId = %v\n", contact.ExternalServiceId, contact.ExternalUserId, contact.ExternalContactId, contact.DsocialUserId, contact.DsocialContactId)
extDsocialContact, _, err := ds.RetrieveDsocialContactForExternalContact(contact.ExternalServiceId, contact.ExternalUserId, contact.ExternalContactId, dsocialUserId)
if err != nil {
return nil, "", err
}
var matchingContact *dm.Contact
var isSame bool
if extDsocialContact == nil {
// We don't have a mapping for this external contact to an internal contact mapping
// meaning we've never imported this contact previously from THIS service, but we may
// already have the contact in our system, so let's see if we can find it
matchingContact, isSame, err = p.findMatchingDsocialContact(ds, dsocialUserId, contact)
if err != nil {
return matchingContact, "", err
}
if matchingContact != nil {
contact.DsocialContactId = matchingContact.Id
extContact := cs.ConvertToExternalContact(matchingContact, nil, dsocialUserId)
ds.StoreExternalContact(contact.ExternalServiceId, contact.ExternalUserId, dsocialUserId, contact.ExternalContactId, extContact)
extDsocialContact = cs.ConvertToDsocialContact(extContact, matchingContact, dsocialUserId)
if extDsocialContact != nil {
AddIdsForDsocialContact(extDsocialContact, ds, dsocialUserId)
//contact.ExternalContactId = extDsocialContact.Id
extDsocialContact, err = ds.StoreDsocialContactForExternalContact(contact.ExternalServiceId, contact.ExternalUserId, contact.ExternalContactId, dsocialUserId, extDsocialContact)
if extDsocialContact == nil || err != nil {
return matchingContact, "", err
}
if contact.DsocialContactId != "" {
if _, _, err = ds.StoreDsocialExternalContactMapping(contact.ExternalServiceId, contact.ExternalUserId, contact.ExternalContactId, dsocialUserId, contact.DsocialContactId); err != nil {
return matchingContact, "", err
}
}
}
}
} else {
// we have a mapping for this external contact to an internal contact mapping
// from THIS service, therefore let's use it
if contact.DsocialContactId == "" {
contact.DsocialContactId, err = ds.DsocialIdForExternalContactId(contact.ExternalServiceId, contact.ExternalUserId, dsocialUserId, contact.ExternalContactId)
if err != nil {
return nil, "", err
}
}
if contact.DsocialContactId != "" {
matchingContact, _, err = ds.RetrieveDsocialContact(dsocialUserId, contact.DsocialContactId)
if err != nil {
return nil, "", err
}
}
}
// ensure we have a contact Id
if contact.DsocialContactId == "" {
if matchingContact != nil {
contact.DsocialContactId = matchingContact.Id
fmt.Printf("[PIPELINE]: Will be using matchingContact Id: %v\n", matchingContact.Id)
}
if contact.DsocialContactId == "" {
newContact := &dm.Contact{UserId: dsocialUserId}
AddIdsForDsocialContact(newContact, ds, dsocialUserId)
thecontact, err := ds.StoreDsocialContact(dsocialUserId, newContact.Id, newContact)
if err != nil {
return nil, "", err
}
contact.DsocialContactId = thecontact.Id
}
}
if _, isSame = emptyContact.IsSimilarOrUpdated(extDsocialContact, contact.Value); isSame {
return matchingContact, "", nil
}
l := new(list.List)
emptyContact.GenerateChanges(extDsocialContact, contact.Value, nil, l)
l = p.removeUnacceptedChanges(l, allowAdd, allowDelete, allowUpdate)
changes := make([]*dm.Change, l.Len())
for i, iter := 0, l.Front(); iter != nil; i, iter = i+1, iter.Next() {
changes[i] = iter.Value.(*dm.Change)
}
changeset := &dm.ChangeSet{
CreatedAt: time.UTC().Format(dm.UTC_DATETIME_FORMAT),
ChangedBy: contact.ExternalServiceId,
ChangeImportId: contact.ExternalContactId,
RecordId: contact.DsocialContactId,
Changes: changes,
}
_, err = ds.StoreContactChangeSet(dsocialUserId, changeset)
if err != nil {
return matchingContact, changeset.Id, err
}
if extDsocialContact == nil {
fmt.Printf("[PIPELINE]: OriginalExternalContact is nil and contact.DsocialContactId is %v and contact.Value.Id was %v\n", contact.DsocialContactId, contact.Value.Id)
contact.Value.Id = contact.DsocialContactId
AddIdsForDsocialContact(contact.Value, ds, dsocialUserId)
contact.Value, err = ds.StoreDsocialContact(dsocialUserId, contact.DsocialContactId, contact.Value)
fmt.Printf("[PIPELINE]: After storing contact.Value, contact.Value.Id is %v\n", contact.Value.Id)
if err != nil {
return matchingContact, changeset.Id, err
//.........這裏部分代碼省略.........