diff --git a/assets/components/home/home.vue b/assets/components/home/home.vue
index a0e16ab4..43d9feec 100644
--- a/assets/components/home/home.vue
+++ b/assets/components/home/home.vue
@@ -1,59 +1,76 @@
-
diff --git a/assets/components/pagination/pagination.vue b/assets/components/pagination/pagination.vue
new file mode 100644
index 00000000..0069e4b0
--- /dev/null
+++ b/assets/components/pagination/pagination.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
diff --git a/assets/components/releases/release.vue b/assets/components/releases/release.vue
index 5785000f..010f0903 100644
--- a/assets/components/releases/release.vue
+++ b/assets/components/releases/release.vue
@@ -3,6 +3,8 @@
v-if="release"
class="content"
>
+
+
-
-
{{ release.title }}
diff --git a/assets/components/tags/tag.vue b/assets/components/tags/tag.vue
index a940127e..a364151c 100644
--- a/assets/components/tags/tag.vue
+++ b/assets/components/tags/tag.vue
@@ -172,6 +172,7 @@ export default {
color: var(--text-light);
display: flex;
flex-direction: column;
+ flex-shrink: 0;
width: 25rem;
box-sizing: border-box;
overflow: hidden;
diff --git a/assets/js/actors/actions.js b/assets/js/actors/actions.js
index 9992d71b..4c1bf88b 100644
--- a/assets/js/actors/actions.js
+++ b/assets/js/actors/actions.js
@@ -136,7 +136,7 @@ function initActorActions(store, _router) {
lessThan: $before,
greaterThan: $after,
},
- releasesTags: {
+ releasesTagsConnection: {
none: {
tag: {
slug: {
diff --git a/assets/js/fragments.js b/assets/js/fragments.js
index a8bb6e78..ce98de95 100644
--- a/assets/js/fragments.js
+++ b/assets/js/fragments.js
@@ -176,13 +176,13 @@ const releaseFields = `
`;
const releasesFragment = `
- releases(
+ connection: releasesConnection(
filter: {
date: {
lessThan: $before,
greaterThan: $after,
}
- releasesTags: {
+ releasesTagsConnection: {
none: {
tag: {
slug: {
@@ -193,21 +193,25 @@ const releasesFragment = `
}
},
first: $limit,
+ offset: $offset,
orderBy: $orderBy,
) {
- ${releaseFields}
- movieActors: movieActorsByMovieId(orderBy: ACTOR_BY_ACTOR_ID__GENDER_ASC) {
- actor {
- ${actorFields}
- }
- }
- movieTags: movieTagsByMovieId(orderBy: TAG_BY_TAG_ID__PRIORITY_DESC) {
- tag {
- id
- name
- slug
- }
- }
+ releases: nodes {
+ ${releaseFields}
+ movieActors: movieActorsByMovieId(orderBy: ACTOR_BY_ACTOR_ID__GENDER_ASC) {
+ actor {
+ ${actorFields}
+ }
+ }
+ movieTags: movieTagsByMovieId(orderBy: TAG_BY_TAG_ID__PRIORITY_DESC) {
+ tag {
+ id
+ name
+ slug
+ }
+ }
+ }
+ totalCount
}
`;
diff --git a/assets/js/networks/actions.js b/assets/js/networks/actions.js
index 758c9f92..69c40f37 100644
--- a/assets/js/networks/actions.js
+++ b/assets/js/networks/actions.js
@@ -92,7 +92,7 @@ function initNetworksActions(store, _router) {
}
}
]
- releasesTags: {
+ releasesTagsConnection: {
none: {
tag: {
slug: {
diff --git a/assets/js/releases/actions.js b/assets/js/releases/actions.js
index 9ea26acd..83a78ca3 100644
--- a/assets/js/releases/actions.js
+++ b/assets/js/releases/actions.js
@@ -4,12 +4,13 @@ import { curateRelease } from '../curate';
import getDateRange from '../get-date-range';
function initReleasesActions(store, _router) {
- async function fetchReleases({ _commit }, { limit = 100, range = 'latest' }) {
+ async function fetchReleases({ _commit }, { limit = 10, pageNumber = 1, range = 'latest' }) {
const { before, after, orderBy } = getDateRange(range);
- const { releases } = await graphql(`
+ const { connection: { releases, totalCount } } = await graphql(`
query Releases(
$limit:Int = 1000,
+ $offset:Int = 0,
$after:Date = "1900-01-01",
$before:Date = "2100-01-01",
$orderBy:[ReleasesOrderBy!],
@@ -19,13 +20,17 @@ function initReleasesActions(store, _router) {
}
`, {
limit,
+ offset: Math.max(0, (pageNumber - 1)) * limit,
after,
before,
orderBy,
exclude: store.state.ui.filter,
});
- return releases.map(release => curateRelease(release));
+ return {
+ releases: releases.map(release => curateRelease(release)),
+ totalCount,
+ };
}
async function fetchReleaseById({ _commit }, releaseId) {
diff --git a/assets/js/router.js b/assets/js/router.js
index aebece79..f1b2bb59 100644
--- a/assets/js/router.js
+++ b/assets/js/router.js
@@ -20,26 +20,32 @@ const routes = [
path: '/',
redirect: {
name: 'latest',
+ params: {
+ page: 1,
+ },
},
},
{
path: '/home',
redirect: {
name: 'latest',
+ params: {
+ page: 1,
+ },
},
},
{
- path: '/latest',
+ path: '/latest/:pageNumber',
component: Home,
name: 'latest',
},
{
- path: '/upcoming',
+ path: '/upcoming/:pageNumber',
component: Home,
name: 'upcoming',
},
{
- path: '/new',
+ path: '/new/:pageNumber',
component: Home,
name: 'new',
},
diff --git a/assets/js/tags/actions.js b/assets/js/tags/actions.js
index 8a435907..e79ebc15 100644
--- a/assets/js/tags/actions.js
+++ b/assets/js/tags/actions.js
@@ -64,7 +64,7 @@ function initTagsActions(store, _router) {
lessThan: $before,
greaterThan: $after,
},
- releasesTags: {
+ releasesTagsConnection: {
none: {
tag: {
slug: {
diff --git a/migrations/20190325001339_releases.js b/migrations/20190325001339_releases.js
index 38836a36..8c36cd49 100644
--- a/migrations/20190325001339_releases.js
+++ b/migrations/20190325001339_releases.js
@@ -644,7 +644,10 @@ exports.up = knex => Promise.resolve()
table.string('url', 1000);
table.string('title');
table.string('slug');
+
table.date('date');
+ table.index('date');
+
table.text('description');
table.integer('duration')
diff --git a/src/scrapers/julesjordan.js b/src/scrapers/julesjordan.js
index 3008dbdc..a9e465f5 100644
--- a/src/scrapers/julesjordan.js
+++ b/src/scrapers/julesjordan.js
@@ -7,7 +7,6 @@ const cheerio = require('cheerio');
const { JSDOM } = require('jsdom');
const moment = require('moment');
-const logger = require('../logger')(__filename);
const { get, geta, ctxa, parseDate } = require('../utils/q');
const { heightToCm } = require('../utils/convert');
const slugify = require('../utils/slugify');
diff --git a/src/web/server.js b/src/web/server.js
index d672abb3..5bcd6362 100644
--- a/src/web/server.js
+++ b/src/web/server.js
@@ -41,7 +41,8 @@ function initServer() {
graphiql: true,
enhanceGraphiql: true,
allowExplain: () => true,
- simpleCollections: 'only',
+ // simpleCollections: 'only',
+ simpleCollections: 'both',
graphileBuildOptions: {
pgOmitListSuffix: true,
connectionFilterRelations: true,