Skip to content

Latest commit

 

History

History
149 lines (136 loc) · 2.92 KB

README.md

File metadata and controls

149 lines (136 loc) · 2.92 KB

@jcm/nexus-plugin-datetime

Patreon Logo
Discord Logo

This plugin adds the field method dateTime(fieldName, fieldConfig) to the Nexus Schema Builder, which can be used to create date-time fields with a few helpful methods.

Sample usage:

const User = objectType({
  name: 'User',
  definition(t) {
    // ...
    t.dateTime('createdAt')
    // ...
  },
})

With the above code, the following schema will be generated:

"""
Represents an ISO datetime that can be formatted in other formats
"""
type DateTimeField implements DateTimeFieldInterface {
  formatted(
    format: String!

    """
    Timezone to format the ISO date, defaults to UTC
    """
    timezone: String
  ): String!
  isAfter(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isBefore(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isBetween(
    """
    Defaults to the end of the current day if not provided
    """
    isoEnd: String

    """
    Defaults to the start of the current day if not provided
    """
    isoStart: String
  ): Boolean!
  iso: String!
  isSame(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isSameOrAfter(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isSameOrBefore(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
}

"""
A object that represents an ISO datetime
"""
interface DateTimeFieldInterface {
  formatted(
    format: String!

    """
    Timezone to format the ISO date, defaults to UTC
    """
    timezone: String
  ): String!
  isAfter(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isBefore(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isBetween(
    """
    Defaults to the end of the current day if not provided
    """
    isoEnd: String

    """
    Defaults to the start of the current day if not provided
    """
    isoStart: String
  ): Boolean!
  iso: String!
  isSame(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isSameOrAfter(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
  isSameOrBefore(
    """
    Defaults to the current time if not provided
    """
    iso: String
  ): Boolean!
}

type User {
  # ...
  createdAt: DateTimeField!
}

# ...