Refactored various modules for entities. Updated and refactored Kink scraper.
This commit is contained in:
179
assets/js/entities/actions.js
Normal file
179
assets/js/entities/actions.js
Normal file
@@ -0,0 +1,179 @@
|
||||
import { graphql } from '../api';
|
||||
// import { sitesFragment, releaseFields } from '../fragments';
|
||||
import { releaseFields } from '../fragments';
|
||||
import { curateEntity } from '../curate';
|
||||
import getDateRange from '../get-date-range';
|
||||
|
||||
function initEntitiesActions(store, _router) {
|
||||
async function fetchEntityBySlugAndType({ _commit }, {
|
||||
entitySlug,
|
||||
entityType,
|
||||
limit = 10,
|
||||
pageNumber = 1,
|
||||
range = 'latest',
|
||||
}) {
|
||||
const { before, after, orderBy } = getDateRange(range);
|
||||
|
||||
const { entity, connection: { releases, totalCount } } = await graphql(`
|
||||
query Entity(
|
||||
$entitySlug: String!
|
||||
$entityType: String! = "channel"
|
||||
$limit: Int = 10,
|
||||
$offset: Int = 0,
|
||||
$after: Date = "1900-01-01",
|
||||
$before: Date = "2100-01-01",
|
||||
$afterTime: Datetime = "1900-01-01",
|
||||
$beforeTime: Datetime = "2100-01-01",
|
||||
$orderBy: [ReleasesOrderBy!]
|
||||
$exclude: [String!]
|
||||
) {
|
||||
entity: entityBySlugAndType(slug: $entitySlug, type: $entityType) {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
children: childEntities(
|
||||
orderBy: [PRIORITY_DESC, NAME_ASC],
|
||||
) {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
type
|
||||
priority
|
||||
}
|
||||
parent {
|
||||
id
|
||||
name
|
||||
slug
|
||||
type
|
||||
url
|
||||
}
|
||||
}
|
||||
connection: releasesConnection(
|
||||
first: $limit
|
||||
offset: $offset
|
||||
orderBy: $orderBy
|
||||
filter: {
|
||||
entity: {
|
||||
or: [
|
||||
{ parent: { slug: { equalTo: $entitySlug } } },
|
||||
{ parent: { parent: { slug: { equalTo: $entitySlug } } } }
|
||||
]
|
||||
}
|
||||
or: [
|
||||
{
|
||||
date: {
|
||||
lessThan: $before,
|
||||
greaterThan: $after
|
||||
}
|
||||
},
|
||||
{
|
||||
date: {
|
||||
isNull: true
|
||||
},
|
||||
createdAt: {
|
||||
lessThan: $beforeTime,
|
||||
greaterThan: $afterTime,
|
||||
}
|
||||
}
|
||||
]
|
||||
releasesTagsConnection: {
|
||||
none: {
|
||||
tag: {
|
||||
slug: {
|
||||
in: $exclude
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
) {
|
||||
releases: nodes {
|
||||
${releaseFields}
|
||||
}
|
||||
totalCount
|
||||
}
|
||||
}
|
||||
`, {
|
||||
entitySlug,
|
||||
entityType,
|
||||
limit,
|
||||
offset: Math.max(0, (pageNumber - 1)) * limit,
|
||||
after,
|
||||
before,
|
||||
orderBy,
|
||||
afterTime: store.getters.after,
|
||||
beforeTime: store.getters.before,
|
||||
exclude: store.state.ui.filter,
|
||||
});
|
||||
|
||||
return {
|
||||
entity: curateEntity(entity, null, releases),
|
||||
totalCount,
|
||||
};
|
||||
}
|
||||
|
||||
async function fetchEntities({ _commit }, { type }) {
|
||||
const { entities } = await graphql(`
|
||||
query Entities(
|
||||
$type: String! = "network"
|
||||
) {
|
||||
entities(
|
||||
orderBy: NAME_ASC
|
||||
filter: {
|
||||
type: {
|
||||
equalTo: $type
|
||||
}
|
||||
}
|
||||
) {
|
||||
id
|
||||
name
|
||||
slug
|
||||
type
|
||||
url
|
||||
}
|
||||
}
|
||||
`, { type });
|
||||
|
||||
return entities.map(entity => curateEntity(entity));
|
||||
}
|
||||
|
||||
async function searchEntities({ _commit }, { query, limit = 20 }) {
|
||||
const { entities } = await graphql(`
|
||||
query SearchEntities(
|
||||
$query: String!
|
||||
$limit:Int = 20,
|
||||
) {
|
||||
entities: searchEntities(
|
||||
search: $query,
|
||||
first: $limit
|
||||
) {
|
||||
name
|
||||
slug
|
||||
type
|
||||
url
|
||||
parent {
|
||||
name
|
||||
slug
|
||||
type
|
||||
url
|
||||
}
|
||||
}
|
||||
}
|
||||
`, {
|
||||
query,
|
||||
limit,
|
||||
});
|
||||
|
||||
return entities.map(entity => curateEntity(entity));
|
||||
}
|
||||
|
||||
return {
|
||||
fetchEntityBySlugAndType,
|
||||
fetchEntities,
|
||||
searchEntities,
|
||||
};
|
||||
}
|
||||
|
||||
export default initEntitiesActions;
|
||||
13
assets/js/entities/entities.js
Normal file
13
assets/js/entities/entities.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import state from './state';
|
||||
import mutations from './mutations';
|
||||
import actions from './actions';
|
||||
|
||||
function initEntitiesStore(store, router) {
|
||||
return {
|
||||
state,
|
||||
mutations,
|
||||
actions: actions(store, router),
|
||||
};
|
||||
}
|
||||
|
||||
export default initEntitiesStore;
|
||||
1
assets/js/entities/mutations.js
Normal file
1
assets/js/entities/mutations.js
Normal file
@@ -0,0 +1 @@
|
||||
export default {};
|
||||
1
assets/js/entities/state.js
Normal file
1
assets/js/entities/state.js
Normal file
@@ -0,0 +1 @@
|
||||
export default {};
|
||||
Reference in New Issue
Block a user