From fec67a55c7d518cd58335526bd3c1123483442a9 Mon Sep 17 00:00:00 2001 From: Benjamin Palko Date: Tue, 10 Dec 2024 21:31:42 -0500 Subject: [PATCH] timestamps, scalars and dayjs --- bun.lockb | Bin 242029 -> 242377 bytes package.json | 1 + prisma/schema.prisma | 18 +++++++++++------- src/lib/pothos/Scalars/Date.ts | 15 +++++++++++++++ src/lib/pothos/Scalars/index.ts | 10 ++++++++++ src/lib/pothos/builder.ts | 12 +++++++----- 6 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 src/lib/pothos/Scalars/Date.ts create mode 100644 src/lib/pothos/Scalars/index.ts diff --git a/bun.lockb b/bun.lockb index 37b9108af1670ffd7e70c9ae4e7c8cd7895e85c6..925d1b3e720c974bb424c26e2ca45fd48a5493bc 100755 GIT binary patch delta 35156 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 diff --git a/package.json b/package.json index 87c7b5f..c7b7b1a 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "@prisma/client": "6.0.1", "@tailwindcss/typography": "^0.5.15", "@types/bun": "^1.1.14", + "dayjs": "^1.11.13", "graphql": "^16.9.0", "graphql-yoga": "^5.10.4", "pino": "^9.5.0", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 0cd53f5..6449cf2 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -15,17 +15,21 @@ datasource db { } model User { - id Int @id @default(autoincrement()) - email String @unique - name String? - posts Post[] + id Int @id @default(autoincrement()) + email String @unique + name String? + posts Post[] + createdAt DateTime + updatedAt DateTime } model Post { - id Int @id @default(autoincrement()) + id Int @id @default(autoincrement()) title String content String? - published Boolean @default(false) - author User @relation(fields: [authorId], references: [id]) + published Boolean @default(false) + author User @relation(fields: [authorId], references: [id]) authorId Int + createdAt DateTime + updatedAt DateTime } \ No newline at end of file diff --git a/src/lib/pothos/Scalars/Date.ts b/src/lib/pothos/Scalars/Date.ts new file mode 100644 index 0000000..298596f --- /dev/null +++ b/src/lib/pothos/Scalars/Date.ts @@ -0,0 +1,15 @@ +import dayjs from 'dayjs'; +import { builder } from '../builder'; + +export const Date = builder.scalarType('Date', { + description: 'Date Scalar in ISO format', + serialize: (t) => { + return t.toISOString(); + }, + parseValue: (date) => { + if (typeof date !== 'string') { + throw new Error('Cyka blyat'); + } + return dayjs(date); + } +}); \ No newline at end of file diff --git a/src/lib/pothos/Scalars/index.ts b/src/lib/pothos/Scalars/index.ts new file mode 100644 index 0000000..521b166 --- /dev/null +++ b/src/lib/pothos/Scalars/index.ts @@ -0,0 +1,10 @@ +import type { Dayjs } from 'dayjs'; + +export * from './Date'; + +export type Scalars = { + Date: { + Input: Dayjs; + Output: Dayjs; + }; +}; \ No newline at end of file diff --git a/src/lib/pothos/builder.ts b/src/lib/pothos/builder.ts index 1428ea6..c8e2d3c 100644 --- a/src/lib/pothos/builder.ts +++ b/src/lib/pothos/builder.ts @@ -2,13 +2,15 @@ import { prisma } from '$lib/prisma'; import type { Context } from '$lib/yoga'; import SchemaBuilder from '@pothos/core'; import PrismaPlugin, { type PrismaTypesFromClient } from '@pothos/plugin-prisma'; +import type { Scalars } from './Scalars'; -type ContextType = ReturnType; - -export const builder = new SchemaBuilder<{ - Context: ContextType; +type PothosType = { + Context: ReturnType; PrismaTypes: PrismaTypesFromClient; -}>({ + Scalars: Scalars; +}; + +export const builder = new SchemaBuilder({ plugins: [PrismaPlugin], prisma: { client: prisma,