func (p *InMemoryDataStore) DeleteUserAccount(user *dm.User) (*dm.User, error) { if user == nil { return nil, nil } oldUserI, _ := p.retrieve(_INMEMORY_USER_ACCOUNT_COLLECTION_NAME, user.Id) var oldUser *dm.User = nil if oldUserI != nil { oldUser = oldUserI.(*dm.User) } if err := user.BeforeDelete(); err != nil { return user, err } if oldUser != nil { p.delete(_INMEMORY_USER_ACCOUNT_COLLECTION_NAME, oldUser.Id) p.delete(_INMEMORY_USER_ACCOUNT_ID_FOR_USERNAME_COLLECTION_NAME, oldUser.Username) p.delete(_INMEMORY_USER_ACCOUNT_ID_FOR_EMAIL_COLLECTION_NAME, oldUser.Email) } if err := user.AfterDelete(); err != nil { return user, err } return oldUser, nil }