예제 #1
0
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
}