Skip to content
This repository has been archived by the owner on Apr 16, 2020. It is now read-only.

Latest commit

 

History

History
133 lines (93 loc) · 3.96 KB

README.md

File metadata and controls

133 lines (93 loc) · 3.96 KB

graphql-java-datetime

GraphQL ISO Date is a set of RFC 3339 compliant date/time scalar types to be used with graphql-java.

Build Status Latest Dev Build

Summary

A set of ISO 33601, RFC 3339 compatible date time scalars for GraphQL Java implementation (graphql-java) and GraphQL Java Kickstart (com.graphql-java-kickstart:graphql-spring-boot-starter).

Serialization

java.util.Date, java.time.LocalDate, java.time.LocalDateTime

Format                   JSON String
yyyy-MM-dd'T'HH:MM:ss.SSS'Z' 2017-07-09T13:14:45.947Z
yyyy-MM-dd'T'HH:MM:ss'Z' 2017-07-09T11:54:42Z
yyyy-MM-dd'T'HH:MM:ss 2017-07-09T11:54:42'
yyyy-MM-dd 2017-07-09

java.time.LocalTime

Format       JSON String
HH:MM:ss.SSS 17:59:59.129
HH:MM:ss 17:59:59
HH:MM 17:59

Usage

Spring Boot

Add graphql-datetime-spring-boot-starter starter to your project first.

Installation

Maven

Add folowing to your pom.xml:

<dependency>
  <groupId>com.zhokhov.graphql</groupId>
  <artifactId>graphql-datetime-spring-boot-starter</artifactId>
  <version>1.8.0</version>
</dependency>

Gradle

Add folowing to your build.gradle:

compile 'com.zhokhov.graphql:graphql-datetime-spring-boot-starter:1.8.0'

Scalars

Add these scalars to your .graphqls schema file:

# java.util.Date implementation
scalar Date

# java.time.LocalDate implementation
scalar LocalDate

# java.time.LocalDateTime implementation
scalar LocalDateTime

# java.time.LocalTime implementation
scalar LocalTime

# javal.time.OffsetDateTime implementation
scalar OffsetDateTime 

You can rename the scalar however you want with by simply adding the following properties to you application.yaml:

graphql:
  datetime:
    scalars:
      date:
        scalarName: MyDate
      localDate:
        scalarName: MyLocalDate
      localDateTime:
        scalarName: MyLocalDateTime
      localTime:
        scalarName: MyLocalTime
      offsetDateTime:
        scalarName: MyOffsetDateTime

You can enable automatic zone conversion by adding the following property to your application.yaml. This will automatically convert between UTC and the default TimeZone for LocalDateTime:

graphql:
  datetime:
    scalars:
      zone-conversion-enabled: true

If using OffsetDateTime in order to present the offset and disable the automatic convertion to UTC from Jackson you should set to your application.yml the following:

spring:
  jackson:
    deserialization:
      adjust-dates-to-context-time-zone: false

Sample

Now you can use these scalars in your application. Here is a graphql-datetime spring boot sample application, https://github.com/donbeave/graphql-java-datetime/tree/master/graphql-datetime-sample-app.

Bugs

To report any bug, please use the project Issues section on GitHub.

Contributing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

License

Copyright © 2017-2020 Alexey Zhokhov. All rights reserved.

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.