yekonga-server
Version:
Yekonga Server
164 lines (150 loc) • 5.1 kB
JavaScript
// @ts-nocheck
/*global Yekonga, serverLibrary */
const Kind = serverLibrary.Kind;
const GraphQLScalarType = serverLibrary.GraphQLScalarType;
const moment = serverLibrary.moment;
const H = Yekonga.Helper;
module.exports = {
Query: {
health: (_, params, context) => {
return true;
}
},
Mutation: {
health: (_, params, context) => {
return true;
}
},
Date: (new GraphQLScalarType({
name: 'Date',
description: 'Date custom scalar type',
// parseValue(value) {
// return moment(value).toDate(); // value from the client
// },
// serialize(value) {
// // return moment(value).format();
// return value;
// },
// parseLiteral(ast) {
// // @ts-ignore
// return moment(ast.value).toDate();
// },
serialize(value) {
if(value){
if(value.getTime) {
return value;
} else {
return moment(value).format();
}
}
return (new Date()); // Convert outgoing Date to integer for JSON
},
parseValue(value) {
return moment(value).toDate();
},
parseLiteral(ast) {
if (ast.kind === Kind.INT) {
return new Date(parseInt(ast.value, 10)); // Convert hard-coded AST string to integer and then to Date
}
return null; // Invalid hard-coded value (not an integer)
},
})),
Any: (new GraphQLScalarType({
name: 'Any',
description: 'Any custom scalar type',
parseValue(value) {
return value; // value from the client
},
serialize(value) {
// console.debug(value);
return value;
},
parseLiteral(ast) {
// @ts-ignore
return ast.value;
},
})),
Object: (new GraphQLScalarType({
name: 'Object',
description: 'Object custom scalar type',
parseValue(value) {
return value; // value from the client
},
serialize(value) {
return value;
},
parseLiteral(ast) {
// @ts-ignore
return ast.value;
},
})),
Array: (new GraphQLScalarType({
name: 'Array',
description: 'Array custom scalar type',
parseValue(value) {
return value; // value from the client
},
serialize(value) {
return (Array.isArray(value))? value: [];
},
parseLiteral(ast) {
// @ts-ignore
return ast.value;
},
})),
AnyOrArray: (new GraphQLScalarType({
name: 'AnyOrArray',
description: 'AnyOrArray custom scalar type',
parseValue(value) {
return value; // value from the client
},
serialize(value) {
return (Array.isArray(value))? value: [];
},
parseLiteral(ast) {
// @ts-ignore
return ast.value;
},
})),
URL: (new GraphQLScalarType({
name: 'URL',
description: 'URL',
parseValue(value, _) {
var publicDir = Array.isArray(Yekonga.Config.public) ?
Yekonga.Config.public[0] :
Yekonga.Config.public;
var files = H.saveFile(value, `${publicDir}/uploads`);
return Array.isArray(files)? files: files; // value from the client
},
serialize(value, _) {
var images = [];
var values = (Array.isArray(value)) ? value : (value ? [value] : []);
var defaultImage = Yekonga.Helper.getBaseUrl(`img/placeholder.jpg`);
try {
for (const val of values) {
if (val && val.trim() != '') {
if (val.trim().substr(0, 4) == 'http' || val.trim().substr(0, 2) == '//') {
images.push(val);
} else {
images.push(Yekonga.Helper.getBaseUrl(`/uploads/${val}`));
}
} else {
images.push(defaultImage);
}
}
} catch (error) {
console.error(values);
console.error(error);
}
return (Array.isArray(value)) ? images : ((images.length) ? images.pop() : defaultImage);
},
parseLiteral(ast, _) {
var publicDir = Array.isArray(Yekonga.Config.public) ?
Yekonga.Config.public[0] :
Yekonga.Config.public;
// @ts-ignore
var files = H.saveFile(ast.value, `${publicDir}/uploads`);
return Array.isArray(files)? files.join(','): files;
},
})),
}