45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const Plex = require("src/plex/plex");
 | 
						|
const configuration = require("src/config/configuration").getInstance();
 | 
						|
const plex = new Plex(configuration.get("plex", "ip"));
 | 
						|
const establishedDatabase = require("src/database/database");
 | 
						|
 | 
						|
const queries = {
 | 
						|
  getRequestsNotYetInPlex: `SELECT * FROM requests WHERE status = 'requested' OR status = 'downloading'`,
 | 
						|
  saveNewStatus: `UPDATE requests SET status = ? WHERE id IS ? and type IS ?`
 | 
						|
};
 | 
						|
 | 
						|
const getByStatus = () =>
 | 
						|
  establishedDatabase.all(queries.getRequestsNotYetInPlex);
 | 
						|
 | 
						|
const checkIfRequestExistInPlex = async request => {
 | 
						|
  request.existsInPlex = await plex.existsInPlex(request);
 | 
						|
  return request;
 | 
						|
};
 | 
						|
 | 
						|
const commitNewStatus = (status, id, type, title) => {
 | 
						|
  console.log(type, title, "updated to:", status);
 | 
						|
  return establishedDatabase.run(queries.saveNewStatus, [status, id, type]);
 | 
						|
};
 | 
						|
 | 
						|
const getNewRequestMatchesInPlex = async () => {
 | 
						|
  const requests = await getByStatus();
 | 
						|
 | 
						|
  return Promise.all(requests.map(checkIfRequestExistInPlex))
 | 
						|
    .catch(error =>
 | 
						|
      console.log("error from checking plex for existance:", error)
 | 
						|
    )
 | 
						|
    .then(matchedRequests =>
 | 
						|
      matchedRequests.filter(request => request.existsInPlex)
 | 
						|
    );
 | 
						|
};
 | 
						|
 | 
						|
const updateMatchInDb = (match, status) => {
 | 
						|
  return commitNewStatus(status, match.id, match.type, match.title);
 | 
						|
};
 | 
						|
 | 
						|
getNewRequestMatchesInPlex()
 | 
						|
  .then(newMatches =>
 | 
						|
    Promise.all(newMatches.map(match => updateMatchInDb(match, "downloaded")))
 | 
						|
  )
 | 
						|
  .then(() => process.exit(0));
 |