func (p *InMemoryDataStore) UpdateExternalUserAccount(user *dm.ExternalUser) (*dm.ExternalUser, error) { if user == nil { return nil, nil } if user.Id == "" { return user, dm.ERR_MUST_SPECIFY_ID } oldUserI, _ := p.retrieve(_INMEMORY_EXTERNAL_USER_ACCOUNT_COLLECTION_NAME, user.Id) var oldUser *dm.ExternalUser = nil if oldUserI != nil { oldUser = oldUserI.(*dm.ExternalUser) } if err := user.BeforeUpdate(); err != nil { return user, err } if err := user.BeforeSave(); err != nil { return user, err } p.store(user.Id, _INMEMORY_EXTERNAL_USER_ACCOUNT_COLLECTION_NAME, user.Id, user) p.addToStringMapCollection(user.Id, _INMEMORY_EXTERNAL_ACCOUNT_IDS_FOR_CONSUMER_ID_COLLECTION_NAME, user.ConsumerId, user.Id, user.Id) p.addToStringMapCollection(user.Id, _INMEMORY_EXTERNAL_ACCOUNT_IDS_FOR_EXTERNAL_USER_ID_COLLECTION_NAME, user.ExternalUserId, user.Id, user.Id) if oldUser != nil { if oldUser.ConsumerId != user.ConsumerId { p.removeFromStringMapCollection(user.Id, _INMEMORY_EXTERNAL_ACCOUNT_IDS_FOR_CONSUMER_ID_COLLECTION_NAME, oldUser.ConsumerId, user.Id) } if oldUser.ExternalUserId != user.ExternalUserId { p.removeFromStringMapCollection(user.Id, _INMEMORY_EXTERNAL_ACCOUNT_IDS_FOR_EXTERNAL_USER_ID_COLLECTION_NAME, oldUser.ExternalUserId, user.Id) } } if err := user.AfterSave(); err != nil { return user, err } if err := user.AfterUpdate(); err != nil { return user, err } return user, nil }