'use strict';

const {
	createStash,
	removeStash,
	stashActor,
	stashScene,
	stashMovie,
	unstashActor,
	unstashScene,
	unstashMovie,
	updateStash,
} = require('../stashes');

async function createStashApi(req, res) {
	const stash = await createStash(req.body, req.session.user);

	res.send(stash);
}

async function updateStashApi(req, res) {
	const stash = await updateStash(req.params.stashId, req.body, req.session.user);

	res.send(stash);
}

async function removeStashApi(req, res) {
	await removeStash(req.params.stashId, req.session.user);

	res.status(204).send();
}

async function stashActorApi(req, res) {
	const stashes = await stashActor(req.body.actorId, req.params.stashId, req.session.user);

	res.send(stashes);
}

async function stashSceneApi(req, res) {
	const stashes = await stashScene(req.body.sceneId, req.params.stashId, req.session.user);

	res.send(stashes);
}

async function stashMovieApi(req, res) {
	const stashes = await stashMovie(req.body.movieId, req.params.stashId, req.session.user);

	res.send(stashes);
}

async function unstashActorApi(req, res) {
	const stashes = await unstashActor(req.params.actorId, req.params.stashId, req.session.user);

	res.send(stashes);
}

async function unstashSceneApi(req, res) {
	const stashes = await unstashScene(req.params.sceneId, req.params.stashId, req.session.user);

	res.send(stashes);
}

async function unstashMovieApi(req, res) {
	const stashes = await unstashMovie(req.params.movieId, req.params.stashId, req.session.user);

	res.send(stashes);
}

module.exports = {
	createStash: createStashApi,
	removeStash: removeStashApi,
	stashActor: stashActorApi,
	stashScene: stashSceneApi,
	stashMovie: stashMovieApi,
	unstashActor: unstashActorApi,
	unstashScene: unstashSceneApi,
	unstashMovie: unstashMovieApi,
	updateStash: updateStashApi,
};