57 lines
1.3 KiB
JavaScript
Executable File
57 lines
1.3 KiB
JavaScript
Executable File
"use strict";
|
|
/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2021*/
|
|
/**
|
|
* links Resolve All
|
|
* @copyright 2021 Manaknightdigital Inc.
|
|
* @link https://manaknightdigital.com
|
|
* @license Proprietary Software licensing
|
|
* @author Ryan Wong
|
|
*
|
|
*/
|
|
const { ApolloError } = require('apollo-server-express');
|
|
const Sequelize = require('sequelize');
|
|
const { last } = require('lodash');
|
|
const graphqlFields = require('graphql-fields');
|
|
|
|
module.exports = async (_, { first, after }, { db, credential }, info) => {
|
|
//Check Auth if user allowed
|
|
try {
|
|
const attributes = db.links.intersection(graphqlFields(info).edges.node);
|
|
|
|
const options = {
|
|
where: {},
|
|
limit: first,
|
|
attributes,
|
|
};
|
|
|
|
if (after) {
|
|
options.where = {
|
|
id: {
|
|
[Sequelize.Op.gt]: after,
|
|
},
|
|
};
|
|
}
|
|
|
|
const { count, rows } = await db.links.findAndCountAll(options);
|
|
|
|
const edges = rows.map((links) => ({
|
|
cursor: links.id,
|
|
node: links,
|
|
}));
|
|
|
|
const pageInfo = {
|
|
endCursor: last(edges).cursor,
|
|
hasNextPage: 0 < count - first,
|
|
};
|
|
|
|
return {
|
|
edges,
|
|
pageInfo,
|
|
};
|
|
|
|
} catch (error) {
|
|
console.log('links -> error', error);
|
|
return new ApolloError('InternalServerError');
|
|
}
|
|
}
|