const siteFragment = ` entity { id name slug url type independent hasLogo parent { id name slug url type independent hasLogo } } `; const sitesFragment = ` entities { id name slug url type independent hasLogo parent { id name slug url type independent hasLogo } } `; const actorStashesFields = ` isStashed isFavorited stashes: stashesActors( filter: { stash: { userId: { equalTo: $userId } } } ) @include(if: $hasAuth) { stash { id name slug primary } } `; const actorFields = ` id name slug birthdate: dateOfBirth age ageFromBirth dateOfBirth gender avatar: avatarMedia { id path thumbnail lazy isS3 sfw: sfwMedia { id path thumbnail lazy } } entity { id name slug } birthCountry: countryByBirthCountryAlpha2 { alpha2 name alias } ${actorStashesFields} `; const movieFields = ` id title url slug date datePrecision actors { id name slug } tags { id name slug } entity { id name slug type parent { id name slug type } } covers: moviesCovers { media { id path thumbnail lazy width height thumbnailWidth thumbnailHeight isS3 sfw: sfwMedia { id path thumbnail lazy comment } } } isFavorited isStashed(includeFavorites: false) stashes: stashesMovies( filter: { stash: { userId: { equalTo: $userId } } } ) @include(if: $hasAuth) { stash { id name slug primary } } `; const campaignsFragment = ` campaigns(filter: { or: [ { banner: { bannersTagsConnection: { none: { tag: { slug: { in: $exclude } } } } } } { bannerExists: false } ] }) { id url affiliate { id url parameters } banner { id type width height ratio entity { id type name slug parent { id type name slug } } } entity { id type name slug parent { id type name slug } } } `; const releaseActorsFragment = ` actors: releasesActors(orderBy: ACTOR_BY_ACTOR_ID__GENDER_ASC) { actor { ${actorFields} } } `; const releaseDirectorFragment = ` directors: releasesDirectors(orderBy: ACTOR_BY_DIRECTOR_ID__NAME_ASC) { director { ${actorFields} } } `; const releaseTagsFragment = ` tags: releasesTags( orderBy: TAG_BY_TAG_ID__PRIORITY_DESC filter: { tagId: { isNull: false } } ) { tag { name priority slug id } } `; const releasePosterFragment = ` poster: releasesPoster { media { id index path thumbnail width height thumbnailWidth thumbnailHeight lazy isS3 comment sfw: sfwMedia { id thumbnail lazy path comment } } } `; const releaseCoversFragment = ` covers: releasesCovers(orderBy: MEDIA_BY_MEDIA_ID__INDEX_ASC) { media { id index path thumbnail width height thumbnailWidth thumbnailHeight lazy isS3 comment sfw: sfwMedia { id thumbnail lazy path comment } } } `; const releasePhotosFragment = ` photos: releasesPhotos(orderBy: MEDIA_BY_MEDIA_ID__INDEX_ASC) { media { id index path thumbnail width height thumbnailWidth thumbnailHeight lazy isS3 comment sfw: sfwMedia { id thumbnail lazy path comment } } } `; const releaseTrailerFragment = ` trailer: releasesTrailer { media { id index path thumbnail mime isS3 isVr } } `; const releaseTeaserFragment = ` teaser: releasesTeaser { media { id index path thumbnail mime isS3 } } `; const releaseFields = ` id title date datePrecision slug shootId productionDate comment createdAt url createdBatchId ${releaseActorsFragment} ${releaseTagsFragment} ${releasePosterFragment} ${releaseCoversFragment} ${releasePhotosFragment} ${siteFragment} studio { id name slug url } movies: moviesScenesBySceneId { movie { id title slug } } isNew isFavorited isStashed(includeFavorites: false) stashes: stashesScenesBySceneId( filter: { stash: { userId: { equalTo: $userId } } } ) @include(if: $hasAuth) { stash { id name slug primary } } `; const releasesFragment = ` connection: releasesConnection( filter: { date: { lessThan: $before, greaterThan: $after, } releasesTagsConnection: { none: { tag: { or: [ { slug: { in: $exclude } } { name: { in: $exclude } } ] } } } }, first: $limit, offset: $offset, orderBy: $orderBy, ) { releases: nodes { ${releaseFields} } totalCount } `; const releaseFragment = ` release(id: $releaseId) { id title description date datePrecision duration createdAt shootId productionDate createdBatchId productionLocation productionCity productionState productionCountry: countryByProductionCountryAlpha2 { alpha2 name alias } comment url ${releaseActorsFragment} ${releaseDirectorFragment} ${releaseTagsFragment} ${releasePosterFragment} ${releasePhotosFragment} ${releaseCoversFragment} ${releaseTrailerFragment} ${releaseTeaserFragment} ${siteFragment} chapters(orderBy: TIME_ASC) { id index time duration title description tags: chaptersTags { tag { id name slug } } poster: chaptersPoster { media { id index path thumbnail lazy comment sfw: sfwMedia { id thumbnail lazy path comment } } } } studio { id name slug url } movies: moviesScenesBySceneId { movie { id title slug covers: moviesCovers { media { id index path thumbnail lazy isS3 comment sfw: sfwMedia { id thumbnail lazy path comment } } } } } isFavorited isStashed(includeFavorites: false) stashes: stashesScenesBySceneId( filter: { stash: { userId: { equalTo: $userId } } } ) @include(if: $hasAuth) { stash { id name slug primary } } } `; function getIncludedEntities(router) { const includedChannels = router.currentRoute.value.query.channels ? router.currentRoute.value.query.channels.split(',') : []; const includedNetworks = router.currentRoute.value.query.networks ? router.currentRoute.value.query.networks.split(',') : []; if (includedChannels.length === 0 && includedNetworks.length === 0) { return []; } return [ { entity: { slug: { in: includedChannels, }, }, }, { entity: { parent: { type: { equalTo: 'network', }, slug: { in: includedNetworks, }, }, }, }, { entity: { type: { equalTo: 'network', }, slug: { in: includedNetworks, }, }, }, ]; } function getIncludedActors(router) { const includedActors = router.currentRoute.value.query.actors ? router.currentRoute.value.query.actors.split(',') : []; if (includedActors.length === 0) { return []; } return [ { releasesActorsConnection: { some: { actor: { slug: { in: includedActors, }, }, }, }, }, ]; } export { actorFields, actorStashesFields, campaignsFragment, movieFields, releaseActorsFragment, releaseFields, releaseTagsFragment, releasePosterFragment, releasePhotosFragment, releaseTrailerFragment, releasesFragment, releaseFragment, siteFragment, sitesFragment, getIncludedEntities, getIncludedActors, };