feat: GraphQL Date scalar

This commit is contained in:
NGPixel
2017-08-13 14:39:07 -04:00
parent 7e1cb3d171
commit 1405b822f4
4 changed files with 50 additions and 26 deletions

View File

@@ -0,0 +1,22 @@
'use strict'
const gql = require('graphql')
module.exports = {
Date: new gql.GraphQLScalarType({
name: 'Date',
description: 'ISO date-time string at UTC',
parseValue(value) {
return new Date(value)
},
serialize(value) {
return value.toISOString()
},
parseLiteral(ast) {
if (ast.kind !== gql.Kind.STRING) {
throw new TypeError('Date value must be an string!')
}
return new Date(ast.value)
}
})
}

View File

@@ -25,16 +25,16 @@ enum RightRole {
interface Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
}
# TYPES
type Comment implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
content: String
document: Document!
author: User!
@@ -42,8 +42,8 @@ type Comment implements Base {
type Document implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
path: String!
title: String!
subtitle: String
@@ -57,8 +57,8 @@ type Document implements Base {
type File implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
category: FileType!
mime: String!
extra: String
@@ -70,15 +70,15 @@ type File implements Base {
type Folder implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
name: String!
}
type Group implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
name: String!
users: [User]
rights: [Right]
@@ -86,8 +86,8 @@ type Group implements Base {
type Right implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
path: String!
role: RightRole!
exact: Boolean!
@@ -96,8 +96,8 @@ type Right implements Base {
type Setting implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
key: String!
config: String!
}
@@ -105,16 +105,16 @@ type Setting implements Base {
# Tags are attached to one or more documents
type Tag implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
key: String!
}
# A User
type User implements Base {
id: Int!
createdOn: Date
updatedOn: Date
createdAt: Date
updatedAt: Date
email: String!
provider: String!
providerId: String