Skip to content

Instantly share code, notes, and snippets.

@talyssonoc
Last active September 14, 2018 12:29
Show Gist options
  • Save talyssonoc/6870cd9277fc9821ba1920a30c719b2c to your computer and use it in GitHub Desktop.
Save talyssonoc/6870cd9277fc9821ba1920a30c719b2c to your computer and use it in GitHub Desktop.
import api from './infra/api'; // has no dependencies
import { validateUser } from './domain/user'; // has no dependencies
import makeUserRepository from './infra/user/userRepository';
import makeArticleRepository from './infra/article/articleRepository';
import makeCreateUser from './app/user/createUser';
import makeGetArticle from './app/article/getArticle';
const userRepository = makeUserRepository({
api
});
const articleRepository = makeArticleRepository({
api
});
const createUser = makeCreateUser({
userRepository,
validateUser
});
const getArticle = makeGetArticle({
userRepository,
articleRepository
});
export {
createUser,
getArticle
};
export default ({ validateUser, userRepository }) => async (userData) => {
if(!validateUser(userData)) {
throw new Error('Invalid user');
}
try {
const user = await userRepository.add(userData);
return user;
} catch(error) {
throw error;
}
};
export default ({ api }) => ({
async add(userData) {
const user = await api.post('/users', userData);
return user;
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment