@fyrepenguin/gatsby-source-dega
Version:
<h1 align="center"> @factly/gatsby-source-dega </h1> Source from [DegaCMS](https://dega.factly.in) API in Gatsby.
1,174 lines (1,163 loc) • 23.7 kB
JavaScript
const { gql } = require('@apollo/client');
// const defaultOptions = { spaceId: null, limit: 100, page: 1 };
// Total query
/**
* Gets Total count for all entities
* @todo filtering users based on space
* @returns {function}
*/
exports.getTotalQuery = () => {
return gql`
query {
posts {
total
}
# check for space specific users
users {
total
}
ratings {
total
}
tags {
total
}
formats {
total
}
categories {
total
}
claims {
total
}
claimants {
total
}
# check for other spaces data
menu {
total
}
}
`;
};
// Posts Query
/**
* Gets data for posts based on limit and page props
* @param {Object} args - Arguments for getting posts
* @param {number} args.limit - Total number of posts per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getPostsQuery = ({ limit, page = 1 }) => {
return gql`
query {
posts( limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
title
subtitle
slug
status
excerpt
description
description_html
is_featured
is_sticky
is_highlighted
published_date
schemas
space_id
format {
id
created_at
updated_at
name
slug
description
space_id
}
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
categories {
id
created_at
updated_at
name
slug
description
description_html
meta_fields
parent_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
tags {
id
created_at
updated_at
name
slug
description
description_html
space_id
}
users {
id
created_at
updated_at
first_name
last_name
slug
email
birth_date
gender
description
display_name
social_media_urls
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
claims {
id
created_at
updated_at
claim
slug
claim_date
checked_date
claim_sources
description
description_html
fact
review_sources
rating {
id
created_at
updated_at
name
slug
description
background_colour
text_colour
description_html
numeric_value
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
claimant {
id
created_at
updated_at
name
slug
description
description_html
tag_line
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
space_id
}
}
}
}
`;
};
// Categories Query
/**
* Gets data for categories based on limit and page props
* @param {Object} args - Arguments for getting categories
* @param {number} args.limit - Total number of categories per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getCategoriesQuery = ({ limit, page = 1 }) => {
return gql`
query {
categories( limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
name
slug
description
description_html
meta_fields
parent_id
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
}
}
`;
};
// Tags Query
/**
* Gets data for tags based on limit and page props
* @param {Object} args - Arguments for getting tags
* @param {number} args.limit - Total number of tags per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getTagsQuery = ({ limit, page = 1 }) => {
return gql`
query {
tags( limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
name
slug
description
description_html
space_id
}
}
}
`;
};
// Formats Query
/**
* Gets data for formats
* @returns {function}
*/
exports.getFormatsQuery = () => {
return gql`
query {
formats {
nodes {
id
created_at
updated_at
name
slug
description
space_id
}
}
}
`;
};
// Users Query
// !no spacename only limit and page arguments are defined
/**
* Gets data for users based on limit and page props
* @param {Object} args - Arguments for getting users
* @param {number} args.limit - Total number of users per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getUsersQuery = ({ limit, page = 1 }) => {
return gql`
query {
users(limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
first_name
last_name
slug
email
birth_date
gender
description
display_name
social_media_urls
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
}
}
`;
};
// Space Query
/**
* Gets data for space details
* @returns {function}
*/
exports.getSpaceQuery = () => {
return gql`
query {
space {
id
created_at
updated_at
name
slug
site_title
tag_line
description
site_address
meta_fields
header_code
footer_code
logo {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
logo_mobile {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
fav_icon {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
mobile_icon {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
verification_codes
social_media_urls
contact_info
}
}
`;
};
// Sitemap
/**
* Gets data for sitemap
* @returns {function}
*/
exports.getSitemapQuery = () => {
return gql`
query {
sitemap {
users {
created_at
id
slug
}
tags {
created_at
id
slug
}
ratings {
created_at
id
slug
}
posts {
created_at
id
slug
}
formats {
created_at
id
slug
}
claims {
created_at
id
slug
}
claimants {
created_at
id
slug
}
categories {
created_at
id
slug
}
}
}
`;
};
// Ratings Query
/**
* Gets data for ratings based on limit and page props
* @param {Object} args - Arguments for getting ratings
* @param {number} args.limit - Total number of ratings per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getRatingsQuery = ({ limit, page = 1 }) => {
return gql`
query {
ratings( limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
name
slug
description
description_html
background_colour
text_colour
numeric_value
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
}
}
`;
};
// Claims Query
/**
* Gets data for claims based on limit and page props
* @param {Object} args - Arguments for getting claims
* @param {number} args.limit - Total number of claims per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getClaimsQuery = ({ limit, page = 1 }) => {
return gql`
query {
claims(limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
claim
slug
claim_date
checked_date
claim_sources
description
description_html
fact
review_sources
space_id
rating {
id
created_at
updated_at
name
slug
description
description_html
background_colour
text_colour
numeric_value
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
claimant {
id
created_at
updated_at
name
slug
description
description_html
tag_line
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
}
}
}
`;
};
//Claimants Query
/**
* Gets data for claimants based on limit and page props
* @param {Object} args - Arguments for getting claimants
* @param {number} args.limit - Total number of claimants on per page
* @param {number} args.page - Page number
* @returns {function}
*/
exports.getClaimantsQuery = ({ limit, page = 1 }) => {
return gql`
query {
claimants( limit:${limit}, page:${page}) {
nodes {
id
created_at
updated_at
name
slug
description
description_html
tag_line
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
}
}
`;
};
// Menu Query
/**
* Gets data for menu
* @returns {function}
*/
exports.getMenuQuery = () => {
return gql`
query {
menu {
nodes {
id
created_at
updated_at
name
slug
menu
space_id
}
}
}
`;
};
// Featured Categories Query
exports.getFeaturedCategoriesQuery = ({ limit = 5, postLimit = 20 }) => {
return gql`
query {
featuredCategories(featuredCount: ${limit}, postLimit: ${postLimit}) {
nodes {
id
created_at
updated_at
name
slug
description
description_html
meta_fields
parent_id
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
posts {
nodes {
id
created_at
updated_at
title
subtitle
slug
status
excerpt
description
description_html
is_featured
is_sticky
is_highlighted
published_date
schemas
space_id
format {
id
created_at
updated_at
name
slug
description
space_id
}
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
categories {
id
created_at
updated_at
name
slug
description
description_html
meta_fields
parent_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
tags {
id
created_at
updated_at
name
slug
description
description_html
space_id
}
users {
id
created_at
updated_at
first_name
last_name
slug
email
birth_date
gender
description
display_name
social_media_urls
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
claims {
id
created_at
updated_at
claim
slug
claim_date
checked_date
claim_sources
description
description_html
fact
review_sources
rating {
id
created_at
updated_at
name
slug
description
background_colour
text_colour
description_html
numeric_value
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
claimant {
id
created_at
updated_at
name
slug
description
description_html
tag_line
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
space_id
}
}
}
}
}
}
`;
};
// Featured Tags Query
exports.getFeaturedTagsQuery = ({ limit = 5, postLimit = 20 }) => {
return gql`
query {
featuredTags(featuredCount: ${limit}, postLimit: ${postLimit}) {
nodes {
id
created_at
updated_at
name
slug
description
description_html
meta_fields
space_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
posts {
nodes {
id
created_at
updated_at
title
subtitle
slug
status
excerpt
description
description_html
is_featured
is_sticky
is_highlighted
published_date
schemas
space_id
format {
id
created_at
updated_at
name
slug
description
space_id
}
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
categories {
id
created_at
updated_at
name
slug
description
description_html
meta_fields
parent_id
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
tags {
id
created_at
updated_at
name
slug
description
description_html
space_id
}
users {
id
created_at
updated_at
first_name
last_name
slug
email
birth_date
gender
description
display_name
social_media_urls
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
}
claims {
id
created_at
updated_at
claim
slug
claim_date
checked_date
claim_sources
description
description_html
fact
review_sources
rating {
id
created_at
updated_at
name
slug
description
background_colour
text_colour
description_html
numeric_value
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
claimant {
id
created_at
updated_at
name
slug
description
description_html
tag_line
medium {
id
created_at
updated_at
name
slug
type
title
description
caption
file_size
alt_text
url
dimensions
space_id
}
space_id
}
space_id
}
}
}
}
}
}
`;
};