diff --git a/assets/components/actors/actor.vue b/assets/components/actors/actor.vue index 5e68b2d1..0640b4e8 100644 --- a/assets/components/actors/actor.vue +++ b/assets/components/actors/actor.vue @@ -3,7 +3,7 @@ v-if="actor" class="content actor" > - +
@@ -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, }, }; diff --git a/assets/components/site/site.vue b/assets/components/site/site.vue index eb1dcb81..39545a5c 100644 --- a/assets/components/site/site.vue +++ b/assets/components/site/site.vue @@ -3,7 +3,7 @@ v-if="site" class="content site" > - +
@@ -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, }, }; diff --git a/assets/components/tags/tags.vue b/assets/components/tags/tags.vue index f505ef6d..c092ae62 100644 --- a/assets/components/tags/tags.vue +++ b/assets/components/tags/tags.vue @@ -1,5 +1,15 @@ @@ -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 { diff --git a/assets/components/tile/tag.vue b/assets/components/tile/tag.vue index 685899fd..c2affa53 100644 --- a/assets/components/tile/tag.vue +++ b/assets/components/tile/tag.vue @@ -4,14 +4,14 @@ :title="tag.name" class="tile" > - {{ tag.name }} - + + {{ tag.name }} diff --git a/assets/js/actors/actions.js b/assets/js/actors/actions.js index 3829c0fc..2a18a286 100644 --- a/assets/js/actors/actions.js +++ b/assets/js/actors/actions.js @@ -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); diff --git a/assets/js/fragments.js b/assets/js/fragments.js index aac9e17b..013df6fe 100644 --- a/assets/js/fragments.js +++ b/assets/js/fragments.js @@ -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 diff --git a/assets/js/sites/actions.js b/assets/js/sites/actions.js index 446324c2..660d7f82 100644 --- a/assets/js/sites/actions.js +++ b/assets/js/sites/actions.js @@ -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, }; } diff --git a/migrations/20190325001339_releases.js b/migrations/20190325001339_releases.js index 5c440352..080aa6c4 100644 --- a/migrations/20190325001339_releases.js +++ b/migrations/20190325001339_releases.js @@ -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(` diff --git a/package-lock.json b/package-lock.json index e5d48699..1ebf36d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 2b4d8cd1..08e100a0 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/public/img/logos/blowpass/onlyteenblowjobs.png b/public/img/logos/blowpass/onlyteenblowjobs.png index 7dece06a..474a5b21 100644 Binary files a/public/img/logos/blowpass/onlyteenblowjobs.png and b/public/img/logos/blowpass/onlyteenblowjobs.png differ diff --git a/public/img/logos/realitykings/monstercurves.png b/public/img/logos/realitykings/monstercurves.png new file mode 100644 index 00000000..e51e953b Binary files /dev/null and b/public/img/logos/realitykings/monstercurves.png differ diff --git a/public/img/tags/airtight/3.jpeg b/public/img/tags/airtight/3.jpeg new file mode 100644 index 00000000..101350a8 Binary files /dev/null and b/public/img/tags/airtight/3.jpeg differ diff --git a/public/img/tags/airtight/3_thumb.jpeg b/public/img/tags/airtight/3_thumb.jpeg new file mode 100644 index 00000000..f3d92047 Binary files /dev/null and b/public/img/tags/airtight/3_thumb.jpeg differ diff --git a/public/img/tags/airtight/poster.jpeg b/public/img/tags/airtight/poster.jpeg index 018cda24..51804090 100755 Binary files a/public/img/tags/airtight/poster.jpeg and b/public/img/tags/airtight/poster.jpeg differ diff --git a/public/img/tags/airtight/poster_thumb.jpeg b/public/img/tags/airtight/poster_thumb.jpeg index 9e9eac9d..3fec12bf 100755 Binary files a/public/img/tags/airtight/poster_thumb.jpeg and b/public/img/tags/airtight/poster_thumb.jpeg differ diff --git a/public/img/tags/anal/0.jpeg b/public/img/tags/anal/0.jpeg new file mode 100755 index 00000000..c52ad57f Binary files /dev/null and b/public/img/tags/anal/0.jpeg differ diff --git a/public/img/tags/anal/0_thumb.jpeg b/public/img/tags/anal/0_thumb.jpeg new file mode 100755 index 00000000..e5d10351 Binary files /dev/null and b/public/img/tags/anal/0_thumb.jpeg differ diff --git a/public/img/tags/anal/poster.jpeg b/public/img/tags/anal/poster.jpeg old mode 100755 new mode 100644 index c52ad57f..fbe255e1 Binary files a/public/img/tags/anal/poster.jpeg and b/public/img/tags/anal/poster.jpeg differ diff --git a/public/img/tags/anal/poster_thumb.jpeg b/public/img/tags/anal/poster_thumb.jpeg old mode 100755 new mode 100644 index e5d10351..7fc98a57 Binary files a/public/img/tags/anal/poster_thumb.jpeg and b/public/img/tags/anal/poster_thumb.jpeg differ diff --git a/public/img/tags/asian/poster.jpeg b/public/img/tags/asian/poster.jpeg index dfcb28de..7109cb27 100755 Binary files a/public/img/tags/asian/poster.jpeg and b/public/img/tags/asian/poster.jpeg differ diff --git a/public/img/tags/asian/poster_thumb.jpeg b/public/img/tags/asian/poster_thumb.jpeg index 798a5937..c620f1e1 100755 Binary files a/public/img/tags/asian/poster_thumb.jpeg and b/public/img/tags/asian/poster_thumb.jpeg differ diff --git a/public/img/tags/ass-to-mouth/poster.jpeg b/public/img/tags/ass-to-mouth/poster.jpeg new file mode 100644 index 00000000..c210b589 Binary files /dev/null and b/public/img/tags/ass-to-mouth/poster.jpeg differ diff --git a/public/img/tags/ass-to-mouth/poster_thumb.jpeg b/public/img/tags/ass-to-mouth/poster_thumb.jpeg new file mode 100644 index 00000000..5f21de7f Binary files /dev/null and b/public/img/tags/ass-to-mouth/poster_thumb.jpeg differ diff --git a/public/img/tags/double-anal/0.jpeg b/public/img/tags/double-anal/0.jpeg new file mode 100644 index 00000000..17d2f9ac Binary files /dev/null and b/public/img/tags/double-anal/0.jpeg differ diff --git a/public/img/tags/double-anal/0_thumb.jpeg b/public/img/tags/double-anal/0_thumb.jpeg new file mode 100644 index 00000000..7f81a0fd Binary files /dev/null and b/public/img/tags/double-anal/0_thumb.jpeg differ diff --git a/public/img/tags/double-anal/1.jpeg b/public/img/tags/double-anal/1.jpeg new file mode 100644 index 00000000..c289910c Binary files /dev/null and b/public/img/tags/double-anal/1.jpeg differ diff --git a/public/img/tags/double-anal/1_thumb.jpeg b/public/img/tags/double-anal/1_thumb.jpeg new file mode 100644 index 00000000..2099e741 Binary files /dev/null and b/public/img/tags/double-anal/1_thumb.jpeg differ diff --git a/public/img/tags/double-anal/poster.jpeg b/public/img/tags/double-anal/poster.jpeg index 364df5c8..60e7c367 100755 Binary files a/public/img/tags/double-anal/poster.jpeg and b/public/img/tags/double-anal/poster.jpeg differ diff --git a/public/img/tags/double-anal/poster_thumb.jpeg b/public/img/tags/double-anal/poster_thumb.jpeg index d4edfe73..a2ab21b1 100755 Binary files a/public/img/tags/double-anal/poster_thumb.jpeg and b/public/img/tags/double-anal/poster_thumb.jpeg differ diff --git a/public/img/tags/ebony/poster.jpeg b/public/img/tags/ebony/poster.jpeg index 0b5f6856..bde35cd3 100755 Binary files a/public/img/tags/ebony/poster.jpeg and b/public/img/tags/ebony/poster.jpeg differ diff --git a/public/img/tags/ebony/poster_thumb.jpeg b/public/img/tags/ebony/poster_thumb.jpeg index 48593420..f50b5cb8 100755 Binary files a/public/img/tags/ebony/poster_thumb.jpeg and b/public/img/tags/ebony/poster_thumb.jpeg differ diff --git a/public/img/tags/gangbang/0.jpeg b/public/img/tags/gangbang/0.jpeg new file mode 100755 index 00000000..4317a04a Binary files /dev/null and b/public/img/tags/gangbang/0.jpeg differ diff --git a/public/img/tags/gangbang/0_thumb.jpeg b/public/img/tags/gangbang/0_thumb.jpeg new file mode 100755 index 00000000..e11a92ee Binary files /dev/null and b/public/img/tags/gangbang/0_thumb.jpeg differ diff --git a/public/img/tags/gangbang/poster.jpeg b/public/img/tags/gangbang/poster.jpeg old mode 100755 new mode 100644 index fd4e991d..bee714fe Binary files a/public/img/tags/gangbang/poster.jpeg and b/public/img/tags/gangbang/poster.jpeg differ diff --git a/public/img/tags/gangbang/poster_thumb.jpeg b/public/img/tags/gangbang/poster_thumb.jpeg old mode 100755 new mode 100644 index 5a30c89c..c2d96eef Binary files a/public/img/tags/gangbang/poster_thumb.jpeg and b/public/img/tags/gangbang/poster_thumb.jpeg differ diff --git a/public/img/tags/gapes/0.jpeg b/public/img/tags/gapes/0.jpeg new file mode 100644 index 00000000..25ece6e0 Binary files /dev/null and b/public/img/tags/gapes/0.jpeg differ diff --git a/public/img/tags/gapes/0_thumb.jpeg b/public/img/tags/gapes/0_thumb.jpeg new file mode 100644 index 00000000..a6709130 Binary files /dev/null and b/public/img/tags/gapes/0_thumb.jpeg differ diff --git a/public/img/tags/gapes/poster.jpeg b/public/img/tags/gapes/poster.jpeg new file mode 100644 index 00000000..3658811a Binary files /dev/null and b/public/img/tags/gapes/poster.jpeg differ diff --git a/public/img/tags/gapes/poster_thumb.jpeg b/public/img/tags/gapes/poster_thumb.jpeg new file mode 100644 index 00000000..0805f1cc Binary files /dev/null and b/public/img/tags/gapes/poster_thumb.jpeg differ diff --git a/public/img/tags/trainbang/poster.jpeg b/public/img/tags/trainbang/poster.jpeg new file mode 100644 index 00000000..ca70dd16 Binary files /dev/null and b/public/img/tags/trainbang/poster.jpeg differ diff --git a/public/img/tags/trainbang/poster_thumb.jpeg b/public/img/tags/trainbang/poster_thumb.jpeg new file mode 100644 index 00000000..6c4a9085 Binary files /dev/null and b/public/img/tags/trainbang/poster_thumb.jpeg differ diff --git a/seeds/03_tags.js b/seeds/03_tags.js index 913ad3d7..3f44292f 100644 --- a/seeds/03_tags.js +++ b/seeds/03_tags.js @@ -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', diff --git a/seeds/04_media.js b/seeds/04_media.js index cca3bde0..081a0929 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -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', diff --git a/src/media.js b/src/media.js index 48acf1b2..a06470e9 100644 --- a/src/media.js +++ b/src/media.js @@ -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 }); diff --git a/src/web/server.js b/src/web/server.js index 4a617103..9d67a351 100644 --- a/src/web/server.js +++ b/src/web/server.js @@ -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, ], },