func (p *InMemoryDataStore) DeleteExternalUserAccount(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 oldUser != nil { if err := user.BeforeDelete(); err != nil { return user, err } p.delete(_INMEMORY_EXTERNAL_USER_ACCOUNT_COLLECTION_NAME, user.Id) p.removeFromStringMapCollection(user.Id, _INMEMORY_EXTERNAL_ACCOUNT_IDS_FOR_CONSUMER_ID_COLLECTION_NAME, oldUser.ConsumerId, user.Id) p.removeFromStringMapCollection(user.Id, _INMEMORY_EXTERNAL_ACCOUNT_IDS_FOR_EXTERNAL_USER_ID_COLLECTION_NAME, oldUser.ExternalUserId, user.Id) if err := user.AfterDelete(); err != nil { return user, err } } return user, nil }