Removed views in favor of PostGraphile filter and sort plugins. Updated site modules to GraphQL. Added tag posters.
|
@ -3,7 +3,7 @@
|
|||
v-if="actor"
|
||||
class="content actor"
|
||||
>
|
||||
<FilterBar :fetch-releases="fetchReleases" />
|
||||
<FilterBar :fetch-releases="fetchActor" />
|
||||
|
||||
<div class="actor-inner">
|
||||
<div class="profile">
|
||||
|
@ -243,8 +243,8 @@ import Photos from './photos.vue';
|
|||
import FilterBar from '../header/filter-bar.vue';
|
||||
import Releases from '../releases/releases.vue';
|
||||
|
||||
async function fetchReleases() {
|
||||
this.releases = await this.$store.dispatch('fetchActorReleases', this.$route.params.actorSlug);
|
||||
async function fetchActor() {
|
||||
this.actor = await this.$store.dispatch('fetchActors', { actorSlug: this.$route.params.actorSlug });
|
||||
}
|
||||
|
||||
function scrollPhotos(event) {
|
||||
|
@ -252,7 +252,7 @@ function scrollPhotos(event) {
|
|||
}
|
||||
|
||||
async function mounted() {
|
||||
this.actor = await this.$store.dispatch('fetchActors', { actorSlug: this.$route.params.actorSlug });
|
||||
this.fetchActor();
|
||||
|
||||
if (this.actor) {
|
||||
this.pageTitle = this.actor.name;
|
||||
|
@ -275,7 +275,7 @@ export default {
|
|||
},
|
||||
mounted,
|
||||
methods: {
|
||||
fetchReleases,
|
||||
fetchActor,
|
||||
scrollPhotos,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
v-if="site"
|
||||
class="content site"
|
||||
>
|
||||
<FilterBar :fetch-releases="fetchReleases" />
|
||||
<FilterBar :fetch-releases="fetchSite" />
|
||||
|
||||
<div class="content-inner">
|
||||
<div class="header">
|
||||
|
@ -59,15 +59,13 @@
|
|||
import FilterBar from '../header/filter-bar.vue';
|
||||
import Releases from '../releases/releases.vue';
|
||||
|
||||
async function fetchReleases() {
|
||||
this.releases = await this.$store.dispatch('fetchSiteReleases', this.$route.params.siteSlug);
|
||||
async function fetchSite() {
|
||||
this.site = await this.$store.dispatch('fetchSites', { siteSlug: this.$route.params.siteSlug });
|
||||
this.releases = this.site.releases;
|
||||
}
|
||||
|
||||
async function mounted() {
|
||||
[[this.site]] = await Promise.all([
|
||||
this.$store.dispatch('fetchSites', this.$route.params.siteSlug),
|
||||
this.fetchReleases(),
|
||||
]);
|
||||
await this.fetchSite();
|
||||
|
||||
this.pageTitle = this.site.name;
|
||||
}
|
||||
|
@ -86,7 +84,7 @@ export default {
|
|||
},
|
||||
mounted,
|
||||
methods: {
|
||||
fetchReleases,
|
||||
fetchSite,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
<template>
|
||||
<div class="tags">
|
||||
<h3>Oral Sex</h3>
|
||||
|
||||
<div class="tiles">
|
||||
<Tag
|
||||
v-for="tag in tags.oral"
|
||||
:key="`tag-${tag.id}`"
|
||||
:tag="tag"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<h3>Ethnicity</h3>
|
||||
|
||||
<div class="tiles">
|
||||
|
@ -39,6 +49,16 @@
|
|||
:tag="tag"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<h3>Misc</h3>
|
||||
|
||||
<div class="tiles">
|
||||
<Tag
|
||||
v-for="tag in tags.misc.concat(tags.body)"
|
||||
:key="`tag-${tag.id}`"
|
||||
:tag="tag"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -50,40 +70,52 @@ async function mounted() {
|
|||
slugs: [
|
||||
'airtight',
|
||||
'anal',
|
||||
'anal-creampie',
|
||||
'asian',
|
||||
'ass-eating',
|
||||
'ass-to-mouth',
|
||||
'blowbang',
|
||||
'blowjob',
|
||||
'bukkake',
|
||||
'caucasian',
|
||||
'creampie',
|
||||
'da-tp',
|
||||
'deepthroat',
|
||||
'double-anal',
|
||||
'double-blowjob',
|
||||
'double-penetration',
|
||||
'double-vaginal',
|
||||
'da-tp',
|
||||
'dv-tp',
|
||||
'triple-anal',
|
||||
'blowbang',
|
||||
'gangbang',
|
||||
'mff',
|
||||
'mfm',
|
||||
'orgy',
|
||||
'asian',
|
||||
'caucasian',
|
||||
'ebony',
|
||||
'facefuck',
|
||||
'facial',
|
||||
'gangbang',
|
||||
'gapes',
|
||||
'interracial',
|
||||
'latina',
|
||||
'anal-creampie',
|
||||
'bukkake',
|
||||
'creampie',
|
||||
'facial',
|
||||
'mff',
|
||||
'mfm',
|
||||
'oral-creampie',
|
||||
'orgy',
|
||||
'pussy-eating',
|
||||
'swallowing',
|
||||
'tattoo',
|
||||
'trainbang',
|
||||
'triple-anal',
|
||||
],
|
||||
});
|
||||
|
||||
console.log(tags);
|
||||
|
||||
this.tags = tags.reduce((acc, tag) => {
|
||||
if (!tag.group) {
|
||||
return { ...acc, misc: [...acc.misc, tag] };
|
||||
}
|
||||
|
||||
if (acc[tag.group.slug]) {
|
||||
return { ...acc, [tag.group.slug]: [...acc[tag.group.slug], tag] };
|
||||
}
|
||||
|
||||
return { ...acc, [tag.group.slug]: [tag] };
|
||||
}, {});
|
||||
}, { misc: [] });
|
||||
}
|
||||
|
||||
export default {
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
:title="tag.name"
|
||||
class="tile"
|
||||
>
|
||||
<span class="title">{{ tag.name }}</span>
|
||||
|
||||
<img
|
||||
v-if="tag.poster"
|
||||
:src="`/img/${tag.poster.thumbnail}`"
|
||||
:alt="tag.name"
|
||||
class="poster"
|
||||
>
|
||||
|
||||
<span class="title">{{ tag.name }}</span>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -45,10 +45,15 @@ function curateActor(actor) {
|
|||
}
|
||||
|
||||
function initActorActions(store, _router) {
|
||||
async function fetchActorBySlug(actorSlug) {
|
||||
async function fetchActorBySlug(actorSlug, limit = 100) {
|
||||
const { actor } = await graphql(`
|
||||
query Actor($actorSlug:String!) {
|
||||
actor: actorBySlug(slug:$actorSlug) {
|
||||
query Actor(
|
||||
$actorSlug: String!
|
||||
$limit:Int = 1000,
|
||||
$after:Date = "1900-01-01",
|
||||
$before:Date = "2100-01-01",
|
||||
) {
|
||||
actor: actorBySlug(slug: $actorSlug) {
|
||||
id
|
||||
name
|
||||
slug
|
||||
|
@ -105,7 +110,18 @@ function initActorActions(store, _router) {
|
|||
name
|
||||
slug
|
||||
}
|
||||
releases: releasesActors {
|
||||
releases: releasesActors(
|
||||
filter: {
|
||||
release: {
|
||||
date: {
|
||||
lessThan: $before,
|
||||
greaterThan: $after,
|
||||
}
|
||||
}
|
||||
},
|
||||
first: $limit,
|
||||
orderBy: RELEASE_BY_RELEASE_ID__DATE_DESC,
|
||||
) {
|
||||
release {
|
||||
id
|
||||
url
|
||||
|
@ -132,6 +148,9 @@ function initActorActions(store, _router) {
|
|||
}
|
||||
`, {
|
||||
actorSlug,
|
||||
limit,
|
||||
after: store.getters.after,
|
||||
before: store.getters.before,
|
||||
});
|
||||
|
||||
return curateActor(actor);
|
||||
|
|
|
@ -29,7 +29,7 @@ const sitesFragment = `
|
|||
`;
|
||||
|
||||
const releaseActorsFragment = `
|
||||
actors: releasesActorsSortables(orderBy: GENDER_ASC) {
|
||||
actors: releasesActors(orderBy: ACTOR_BY_ACTOR_ID__GENDER_ASC) {
|
||||
actor {
|
||||
id
|
||||
name
|
||||
|
@ -51,7 +51,7 @@ const releaseActorsFragment = `
|
|||
`;
|
||||
|
||||
const releaseTagsFragment = `
|
||||
tags: releasesTagsSortables(orderBy: PRIORITY_DESC) {
|
||||
tags: releasesTags(orderBy: TAG_BY_TAG_ID__PRIORITY_DESC) {
|
||||
tag {
|
||||
name
|
||||
priority
|
||||
|
|
|
@ -1,12 +1,69 @@
|
|||
import { get } from '../api';
|
||||
import { graphql } from '../api';
|
||||
import { releasesFragment } from '../fragments';
|
||||
import { curateSite } from '../curate';
|
||||
|
||||
function initSitesActions(store, _router) {
|
||||
async function fetchSites({ _commit }, siteId) {
|
||||
const sites = await get(`/sites/${siteId || ''}`);
|
||||
async function fetchSiteBySlug(siteSlug, limit = 100) {
|
||||
const { site } = await graphql(`
|
||||
query Site(
|
||||
$siteSlug: String!,
|
||||
$limit:Int = 100,
|
||||
$after:Date = "1900-01-01",
|
||||
$before:Date = "2100-01-01",
|
||||
) {
|
||||
site: siteBySlug(slug: $siteSlug) {
|
||||
name
|
||||
slug
|
||||
url
|
||||
network {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
}
|
||||
${releasesFragment}
|
||||
}
|
||||
}
|
||||
`, {
|
||||
siteSlug,
|
||||
limit,
|
||||
after: store.getters.after,
|
||||
before: store.getters.before,
|
||||
});
|
||||
|
||||
console.log(site);
|
||||
|
||||
return curateSite(site);
|
||||
}
|
||||
|
||||
async function fetchSites({ _commit }, { siteSlug, limit = 100 }) {
|
||||
if (siteSlug) {
|
||||
return fetchSiteBySlug(siteSlug, limit);
|
||||
}
|
||||
|
||||
const { sites } = await graphql(`
|
||||
query Sites(
|
||||
$actorSlug: String!
|
||||
$limit:Int = 100,
|
||||
$after:Date = "1900-01-01",
|
||||
$before:Date = "2100-01-01",
|
||||
) {
|
||||
site {
|
||||
name
|
||||
slug
|
||||
url
|
||||
}
|
||||
}
|
||||
`, {
|
||||
limit,
|
||||
after: store.getters.after,
|
||||
before: store.getters.before,
|
||||
});
|
||||
|
||||
return sites;
|
||||
}
|
||||
|
||||
/*
|
||||
async function fetchSiteReleases({ _commit }, siteId) {
|
||||
const releases = await get(`/sites/${siteId}/releases`, {
|
||||
filter: store.state.ui.filter,
|
||||
|
@ -16,10 +73,11 @@ function initSitesActions(store, _router) {
|
|||
|
||||
return releases;
|
||||
}
|
||||
*/
|
||||
|
||||
return {
|
||||
fetchSites,
|
||||
fetchSiteReleases,
|
||||
// fetchSiteReleases,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -431,6 +431,10 @@ exports.up = knex => Promise.resolve()
|
|||
table.unique(['tag_id', 'release_id']);
|
||||
}))
|
||||
.then(() => knex.raw(`
|
||||
COMMENT ON COLUMN actors.height IS E'@omit read,update,create,delete,all,many';
|
||||
COMMENT ON COLUMN actors.weight IS E'@omit read,update,create,delete,all,many';
|
||||
|
||||
/*
|
||||
CREATE VIEW releases_actors_sortable AS
|
||||
SELECT releases_actors.*, actors.gender, actors.name, actors.birthdate FROM releases_actors
|
||||
JOIN actors ON releases_actors.actor_id = actors.id;
|
||||
|
@ -439,19 +443,22 @@ exports.up = knex => Promise.resolve()
|
|||
SELECT releases_tags.*, tags.name, tags.priority FROM releases_tags
|
||||
JOIN tags ON releases_tags.tag_id = tags.id;
|
||||
|
||||
CREATE VIEW actors_releases_sortable AS
|
||||
SELECT releases_actors.*, releases.date FROM releases_actors
|
||||
JOIN releases ON releases_actors.release_id = releases.id;
|
||||
|
||||
COMMENT ON VIEW releases_actors_sortable IS E'@foreignKey (release_id) references releases (id)\n@foreignKey (actor_id) references actors (id)';
|
||||
COMMENT ON VIEW releases_tags_sortable IS E'@foreignKey (release_id) references releases (id)\n@foreignKey (tag_id) references tags (id)';
|
||||
COMMENT ON VIEW actors_releases_sortable IS E'@foreignKey (release_id) references releases (id)\n@foreignKey (actor_id) references actors (id)';
|
||||
|
||||
/* allow conversion resolver to be added for height and weight */
|
||||
COMMENT ON COLUMN actors.height IS E'@omit read,update,create,delete,all,many';
|
||||
COMMENT ON COLUMN actors.weight IS E'@omit read,update,create,delete,all,many';
|
||||
|
||||
CREATE FUNCTION releases_by_tag_slugs(slugs text[]) RETURNS setof releases AS $$
|
||||
SELECT DISTINCT ON (releases.id) releases.* FROM releases
|
||||
JOIN releases_tags ON (releases_tags.release_id = releases.id)
|
||||
JOIN tags ON (releases_tags.tag_id = tags.id)
|
||||
WHERE tags.slug = ANY($1);
|
||||
$$ LANGUAGE sql STABLE
|
||||
*/
|
||||
`));
|
||||
|
||||
exports.down = knex => knex.raw(`
|
||||
|
|
|
@ -1421,6 +1421,11 @@
|
|||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@graphile-contrib/pg-order-by-related": {
|
||||
"version": "1.0.0-beta.6",
|
||||
"resolved": "https://registry.npmjs.org/@graphile-contrib/pg-order-by-related/-/pg-order-by-related-1.0.0-beta.6.tgz",
|
||||
"integrity": "sha512-NDEDhkjpEmLzVMYsv9LqTNyaMXlL32yiFFk7Lj7WAloe1Dgn9/1zMQILMRC+Q9WmFE/edHtXjBRHrXs9NYr3GA=="
|
||||
},
|
||||
"@graphile-contrib/pg-simplify-inflector": {
|
||||
"version": "5.0.0-beta.1",
|
||||
"resolved": "https://registry.npmjs.org/@graphile-contrib/pg-simplify-inflector/-/pg-simplify-inflector-5.0.0-beta.1.tgz",
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
"webpack-cli": "^3.3.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"@graphile-contrib/pg-order-by-related": "^1.0.0-beta.6",
|
||||
"@graphile-contrib/pg-simplify-inflector": "^5.0.0-beta.1",
|
||||
"@tensorflow/tfjs-node": "^1.4.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
|
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 4.1 MiB |
After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 845 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 684 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 800 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 494 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 3.2 MiB |
After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 391 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 137 KiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 127 KiB |
After Width: | Height: | Size: 446 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 402 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 113 KiB |
|
@ -33,6 +33,10 @@ const groups = [
|
|||
slug: 'location',
|
||||
name: 'Location',
|
||||
},
|
||||
{
|
||||
slug: 'oral',
|
||||
name: 'Oral',
|
||||
},
|
||||
{
|
||||
slug: 'orientation',
|
||||
name: 'Orientation',
|
||||
|
@ -136,16 +140,19 @@ function getTags(groupsMap) {
|
|||
priority: 6,
|
||||
description: 'Sucking off a cock right after anal, giving your own or someone else`s asshole a second hand taste.',
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'ass eating',
|
||||
slug: 'ass-eating',
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'ball licking',
|
||||
slug: 'ball-licking',
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'ballerina',
|
||||
|
@ -211,6 +218,7 @@ function getTags(groupsMap) {
|
|||
slug: 'blowjob',
|
||||
priority: 7,
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'blowbang',
|
||||
|
@ -319,6 +327,7 @@ function getTags(groupsMap) {
|
|||
slug: 'deepthroat',
|
||||
priority: 7,
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'double penetration',
|
||||
|
@ -345,11 +354,13 @@ function getTags(groupsMap) {
|
|||
name: 'double blowjob',
|
||||
slug: 'double-blowjob',
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'doggy style',
|
||||
slug: 'doggy-style',
|
||||
alias_for: null,
|
||||
group_id: groupsMap.position,
|
||||
},
|
||||
{
|
||||
name: 'dress',
|
||||
|
@ -379,7 +390,7 @@ function getTags(groupsMap) {
|
|||
slug: 'facefuck',
|
||||
priority: 9,
|
||||
alias_for: null,
|
||||
group_id: groupsMap.position,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'facesitting',
|
||||
|
@ -645,6 +656,7 @@ function getTags(groupsMap) {
|
|||
name: 'pussy eating',
|
||||
slug: 'pussy-eating',
|
||||
alias_for: null,
|
||||
group_id: groupsMap.oral,
|
||||
},
|
||||
{
|
||||
name: 'redhead',
|
||||
|
|
|
@ -9,7 +9,17 @@ const tagPosters = [
|
|||
{
|
||||
path: 'tags/anal/poster.jpeg',
|
||||
tagSlug: 'anal',
|
||||
comment: '',
|
||||
comment: 'Jynx Maze in "Anal Buffet 6" for Evil Angel',
|
||||
},
|
||||
{
|
||||
path: 'tags/ass-to-mouth/poster.jpeg',
|
||||
tagSlug: 'ass-to-mouth',
|
||||
comment: 'Alysa Gap and Logan in "Anal Buffet 4" for Evil Angel',
|
||||
},
|
||||
{
|
||||
path: 'tags/gapes/poster.jpeg',
|
||||
tagSlug: 'gapes',
|
||||
comment: 'Paulina in "Anal Buffet 4" for Evil Angel',
|
||||
},
|
||||
{
|
||||
path: 'tags/da-tp/0.jpeg',
|
||||
|
@ -24,7 +34,7 @@ const tagPosters = [
|
|||
{
|
||||
path: 'tags/double-anal/poster.jpeg',
|
||||
tagSlug: 'double-anal',
|
||||
comment: '',
|
||||
comment: 'Haley Reed in "Young Hot Ass" for Evil Angel',
|
||||
},
|
||||
{
|
||||
path: 'tags/double-vaginal/poster.jpeg',
|
||||
|
@ -54,7 +64,7 @@ const tagPosters = [
|
|||
{
|
||||
path: 'tags/gangbang/poster.jpeg',
|
||||
tagSlug: 'gangbang',
|
||||
comment: '',
|
||||
comment: 'Kristen Scott in "Interracial Gangbang!" for Jules Jordan',
|
||||
},
|
||||
{
|
||||
path: 'tags/mff/poster.jpeg',
|
||||
|
@ -74,7 +84,7 @@ const tagPosters = [
|
|||
{
|
||||
path: 'tags/asian/poster.jpeg',
|
||||
tagSlug: 'asian',
|
||||
comment: '',
|
||||
comment: 'Vina Sky in "Young and Glamorous 10" for Jules Jordan',
|
||||
},
|
||||
{
|
||||
path: 'tags/caucasian/poster.jpeg',
|
||||
|
@ -101,6 +111,11 @@ const tagPosters = [
|
|||
tagSlug: 'facial',
|
||||
comment: '',
|
||||
},
|
||||
{
|
||||
path: 'tags/trainbang/poster.jpeg',
|
||||
tagSlug: 'trainbang',
|
||||
comment: 'Nicole Black in GIO971 for LegalPorno',
|
||||
},
|
||||
{
|
||||
path: 'tags/bukkake/poster.jpeg',
|
||||
tagSlug: 'bukkake',
|
||||
|
@ -135,6 +150,11 @@ const tagPosters = [
|
|||
}));
|
||||
|
||||
const tagPhotos = [
|
||||
{
|
||||
path: 'tags/airtight/3.jpeg',
|
||||
tagSlug: 'airtight',
|
||||
comment: 'Anita Bellini in "Triple Dick Gangbang" for Hands On Hardcore (DDF Network)',
|
||||
},
|
||||
{
|
||||
path: 'tags/airtight/2.jpeg',
|
||||
tagSlug: 'airtight',
|
||||
|
@ -151,6 +171,21 @@ const tagPhotos = [
|
|||
tagSlug: 'airtight',
|
||||
comment: 'Sheena Shaw in "Ass Worship 14" for Jules Jordan',
|
||||
},
|
||||
{
|
||||
path: 'tags/anal/0.jpeg',
|
||||
tagSlug: 'anal',
|
||||
comment: '',
|
||||
},
|
||||
{
|
||||
path: 'tags/double-anal/1.jpeg',
|
||||
tagSlug: 'double-anal',
|
||||
comment: 'Ria Sunn in SZ1801 for LegalPorno',
|
||||
},
|
||||
{
|
||||
path: 'tags/double-anal/0.jpeg',
|
||||
tagSlug: 'double-anal',
|
||||
comment: 'Nicole Black doing double anal during a gangbang in GIO971 for LegalPorno',
|
||||
},
|
||||
{
|
||||
path: 'tags/da-tp/3.jpeg',
|
||||
tagSlug: 'da-tp',
|
||||
|
@ -176,6 +211,11 @@ const tagPhotos = [
|
|||
tagSlug: 'dv-tp',
|
||||
comment: 'Luna Rival in LegalPorno SZ1490',
|
||||
},
|
||||
{
|
||||
path: 'tags/gapes/0.jpeg',
|
||||
tagSlug: 'gapes',
|
||||
comment: 'McKenzee Miles in "Anal Buffet 4" for Evil Angel',
|
||||
},
|
||||
{
|
||||
path: 'tags/triple-anal/1.jpeg',
|
||||
tagSlug: 'triple-anal',
|
||||
|
@ -191,6 +231,11 @@ const tagPhotos = [
|
|||
tagSlug: 'gangbang',
|
||||
comment: 'Ginger Lynn in "Gangbang Mystique", a photoset shot by Suze Randall for Puritan No. 10, 1984. This photo pushed the boundaries of pornography at the time, as depicting a woman \'fully occupied\' was unheard of.',
|
||||
},
|
||||
{
|
||||
path: 'tags/gangbang/0.jpeg',
|
||||
tagSlug: 'gangbang',
|
||||
comment: '"4 On 1 Gangbangs" for Doghouse Digital',
|
||||
},
|
||||
{
|
||||
path: 'tags/gangbang/2.jpeg',
|
||||
tagSlug: 'gangbang',
|
||||
|
|
|
@ -48,7 +48,6 @@ async function createThumbnail(buffer) {
|
|||
}
|
||||
|
||||
async function createMediaDirectory(domain, subpath) {
|
||||
console.log(domain, subpath);
|
||||
const filepath = path.join(config.media.path, domain, subpath);
|
||||
|
||||
await fs.mkdir(filepath, { recursive: true });
|
||||
|
|
|
@ -7,8 +7,9 @@ const { postgraphile } = require('postgraphile');
|
|||
const Router = require('express-promise-router');
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
const ConnectionFilterPlugin = require('postgraphile-plugin-connection-filter');
|
||||
const PgConnectionFilterPlugin = require('postgraphile-plugin-connection-filter');
|
||||
const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector');
|
||||
const PgOrderByRelatedPlugin = require('@graphile-contrib/pg-order-by-related');
|
||||
|
||||
const { ActorPlugins } = require('./plugins/plugins');
|
||||
|
||||
|
@ -48,9 +49,12 @@ function initServer() {
|
|||
simpleCollections: 'only',
|
||||
graphileBuildOptions: {
|
||||
pgOmitListSuffix: true,
|
||||
connectionFilterRelations: true,
|
||||
},
|
||||
appendPlugins: [
|
||||
PgSimplifyInflectorPlugin, ConnectionFilterPlugin,
|
||||
PgSimplifyInflectorPlugin,
|
||||
PgConnectionFilterPlugin,
|
||||
PgOrderByRelatedPlugin,
|
||||
...ActorPlugins,
|
||||
],
|
||||
},
|
||||
|
|