772 lines
11 KiB
JavaScript
Executable File
772 lines
11 KiB
JavaScript
Executable File
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
|
|
orientation
|
|
avatar: avatarMedia {
|
|
id
|
|
path
|
|
thumbnail
|
|
lazy
|
|
isS3
|
|
sfw: sfwMedia {
|
|
id
|
|
path
|
|
thumbnail
|
|
lazy
|
|
}
|
|
}
|
|
entity {
|
|
id
|
|
name
|
|
slug
|
|
}
|
|
birthCountry: countryByBirthCountryAlpha2 {
|
|
alpha2
|
|
name
|
|
alias
|
|
}
|
|
${actorStashesFields}
|
|
`;
|
|
|
|
const basicActorFields = `
|
|
id
|
|
name
|
|
slug
|
|
gender
|
|
`;
|
|
|
|
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(orderBy: MEDIA_BY_MEDIA_ID__INDEX_ASC) {
|
|
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 campaignFields = `
|
|
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 campaignsFragment = `
|
|
campaigns(filter: {
|
|
or: [
|
|
{
|
|
banner: {
|
|
bannersTagsConnection: {
|
|
none: {
|
|
tag: {
|
|
slug: {
|
|
in: $exclude
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
{
|
|
bannerExists: false
|
|
}
|
|
]
|
|
}) {
|
|
${campaignFields}
|
|
}
|
|
`;
|
|
|
|
const releaseActorsFragment = `
|
|
actors: releasesActors(orderBy: ACTOR_BY_ACTOR_ID__GENDER_ASC) {
|
|
actor {
|
|
${actorFields}
|
|
}
|
|
}
|
|
`;
|
|
|
|
const releaseBasicActorsFragment = `
|
|
actors: releasesActors(orderBy: ACTOR_BY_ACTOR_ID__GENDER_ASC) {
|
|
actor {
|
|
${basicActorFields}
|
|
}
|
|
}
|
|
`;
|
|
|
|
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 releaseCapsFragment = `
|
|
caps: releasesCaps(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
|
|
qualities
|
|
shootId
|
|
productionDate
|
|
comment
|
|
createdAt
|
|
url
|
|
createdBatchId
|
|
${releaseBasicActorsFragment}
|
|
${releaseTagsFragment}
|
|
${releasePosterFragment}
|
|
${releasePhotosFragment}
|
|
${releaseCapsFragment}
|
|
${siteFragment}
|
|
studio {
|
|
id
|
|
name
|
|
slug
|
|
url
|
|
}
|
|
movies: moviesScenesBySceneId {
|
|
movie {
|
|
id
|
|
title
|
|
slug
|
|
}
|
|
}
|
|
isFavorited
|
|
isStashed(includeFavorites: false)
|
|
stashes: stashesScenesBySceneId(
|
|
filter: {
|
|
stash: {
|
|
userId: {
|
|
equalTo: $userId
|
|
}
|
|
}
|
|
}
|
|
) @include(if: $hasAuth) {
|
|
stash {
|
|
id
|
|
name
|
|
slug
|
|
primary
|
|
}
|
|
}
|
|
`;
|
|
// isNew too performance-intensive
|
|
|
|
/*
|
|
const releasesFragment = `
|
|
connection: releasesConnection(
|
|
filter: {
|
|
releasesNotShowcasedsConnectionExist: false
|
|
effectiveDate: {
|
|
lessThan: $before,
|
|
greaterThan: $after
|
|
}
|
|
releasesTagsConnection: {
|
|
none: {
|
|
tag: {
|
|
slug: {
|
|
in: $exclude
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
first: $limit,
|
|
offset: $offset,
|
|
orderBy: $orderBy
|
|
) {
|
|
releases: nodes {
|
|
${releaseFields}
|
|
}
|
|
totalCount
|
|
}
|
|
`;
|
|
*/
|
|
|
|
const releasesFragment = `
|
|
connection: releasesSummariesConnection(
|
|
first: $limit
|
|
offset: $offset
|
|
orderBy: $orderBy
|
|
filter: {
|
|
or: [
|
|
{
|
|
not: { tags: { overlaps: $exclude } }
|
|
}
|
|
{
|
|
tags: { isNull: true }
|
|
}
|
|
]
|
|
effectiveDate: { lessThan: $before, greaterThan: $after }
|
|
showcased: { equalTo: true }
|
|
batchShowcased: { in: $batchShowcased }
|
|
}
|
|
) {
|
|
releases: nodes {
|
|
release {
|
|
${releaseFields}
|
|
}
|
|
}
|
|
totalCount
|
|
}
|
|
`;
|
|
|
|
const mediaFields = `
|
|
id
|
|
index
|
|
path
|
|
thumbnail
|
|
lazy
|
|
isS3
|
|
comment
|
|
sfw: sfwMedia {
|
|
id
|
|
thumbnail
|
|
lazy
|
|
path
|
|
comment
|
|
}
|
|
`;
|
|
|
|
const mediaFragment = `
|
|
media {
|
|
${mediaFields}
|
|
}
|
|
`;
|
|
|
|
const releaseFragment = `
|
|
release(id: $releaseId) {
|
|
id
|
|
title
|
|
altTitles
|
|
description
|
|
date
|
|
datePrecision
|
|
duration
|
|
createdAt
|
|
shootId
|
|
qualities
|
|
photoCount
|
|
productionDate
|
|
createdBatchId
|
|
productionLocation
|
|
productionCity
|
|
productionState
|
|
productionCountry: countryByProductionCountryAlpha2 {
|
|
alpha2
|
|
name
|
|
alias
|
|
}
|
|
comment
|
|
url
|
|
${releaseActorsFragment}
|
|
${releaseDirectorFragment}
|
|
${releaseTagsFragment}
|
|
${releasePosterFragment}
|
|
${releasePhotosFragment}
|
|
${releaseCapsFragment}
|
|
${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
|
|
showcased
|
|
}
|
|
movies: moviesScenesBySceneId {
|
|
movie {
|
|
id
|
|
title
|
|
slug
|
|
covers: moviesCovers(orderBy: MEDIA_BY_MEDIA_ID__INDEX_ASC) {
|
|
media {
|
|
id
|
|
index
|
|
path
|
|
thumbnail
|
|
lazy
|
|
isS3
|
|
comment
|
|
sfw: sfwMedia {
|
|
id
|
|
thumbnail
|
|
lazy
|
|
path
|
|
comment
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
series: seriesScenesBySceneId {
|
|
serie {
|
|
id
|
|
title
|
|
slug
|
|
covers: seriesCoversBySerieId(orderBy: MEDIA_BY_MEDIA_ID__INDEX_ASC) {
|
|
${mediaFragment}
|
|
}
|
|
poster: seriesPosterBySerieId {
|
|
${mediaFragment}
|
|
}
|
|
}
|
|
}
|
|
isFavorited
|
|
isStashed(includeFavorites: false)
|
|
stashes: stashesScenesBySceneId(
|
|
filter: {
|
|
stash: {
|
|
userId: {
|
|
equalTo: $userId
|
|
}
|
|
}
|
|
}
|
|
) @include(if: $hasAuth) {
|
|
stash {
|
|
id
|
|
name
|
|
slug
|
|
primary
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
const batchFragment = `
|
|
batches(
|
|
first: 1,
|
|
orderBy: CREATED_AT_DESC,
|
|
filter: { showcased: { equalTo: true } }
|
|
) {
|
|
id
|
|
}
|
|
`;
|
|
|
|
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,
|
|
batchFragment,
|
|
campaignFields,
|
|
campaignsFragment,
|
|
mediaFields,
|
|
mediaFragment,
|
|
movieFields,
|
|
releaseActorsFragment,
|
|
releaseFields,
|
|
releaseTagsFragment,
|
|
releasePosterFragment,
|
|
releasePhotosFragment,
|
|
releaseTrailerFragment,
|
|
releasesFragment,
|
|
releaseFragment,
|
|
siteFragment,
|
|
sitesFragment,
|
|
getIncludedEntities,
|
|
getIncludedActors,
|
|
};
|