believer/movies-graphql-postgres

View on GitHub
lib/graphql/resolvers/queries/movie.js

Summary

Maintainability
A
0 mins
Test Coverage
const { db } = require('../../../adapters/db')
const { movieLaterals, movieSelects } = require('../../../utils/helpers')

module.exports = async (_, { id }) => {
  let whereID = 'WHERE id = $1'

  if (id && id.indexOf('tt') > -1) {
    whereID = 'WHERE imdb_id = $1'
  }

  const sql = `
    SELECT 
      distinct on (m.id) m.*, 
      ${movieSelects}
    FROM 
      (
        SELECT *,
        EXTRACT(YEAR FROM release_date) as year
        FROM movies ${whereID}
      ) as m, 
      ${movieLaterals}
  `

  try {
    return await db.one(sql, [id])
  } catch (e) {
    return null
  }
}