From 9b0c19492ca42fc64e4937c02ff691e672867341 Mon Sep 17 00:00:00 2001 From: TZGyn Date: Mon, 26 Jun 2023 01:17:50 +0800 Subject: [PATCH] Removed global type declaration (use zod instead) --- composables/note.ts | 54 +++++++++++++++++++++++---------------- server/api/note.delete.ts | 2 +- types/global.d.ts | 24 ----------------- 3 files changed, 33 insertions(+), 47 deletions(-) delete mode 100644 types/global.d.ts diff --git a/composables/note.ts b/composables/note.ts index 0a38c8c..90707f0 100644 --- a/composables/note.ts +++ b/composables/note.ts @@ -1,28 +1,38 @@ -const submitNote = async ( - note: Note, - query: NoteQuery -): Promise => { - let response: ApiResponse = { - status: 200, - message: 'Update', - error: null, - } - - await useFetch('/api/note', { - method: 'POST', - query, - body: note, - onResponse({ response }) { - console.log('POST:', response._data.message) - response = response._data - }, - }) - - return response +import { z } from 'zod' + +const noteSchema = z.object({ + title: z.string(), + description: z.string(), +}) + +const submitNote = async (note: unknown, noteId: string | string[]) => { + const parsedNote = noteSchema.safeParse(note) + + if (!parsedNote.success) return + + let response = { + status: 200, + message: 'Update', + error: null, + } + + await useFetch('/api/note', { + method: 'POST', + query: { id: noteId }, + body: parsedNote.data, + onResponse({ response }) { + console.log('POST:', response._data.message) + response = response._data + }, + }) + + return response } +type Note = z.infer + const useNote = () => - useState('note', () => Object({ title: '', description: '' })) + useState('note', () => Object({ title: '', description: '' })) const useDescription = () => useState('description', () => '') diff --git a/server/api/note.delete.ts b/server/api/note.delete.ts index 4674542..ee59f59 100644 --- a/server/api/note.delete.ts +++ b/server/api/note.delete.ts @@ -1,6 +1,6 @@ import { serverSupabaseUser, serverSupabaseClient } from '#supabase/server' -export default defineEventHandler(async (event): Promise => { +export default defineEventHandler(async (event) => { const user = await serverSupabaseUser(event) const supabase = serverSupabaseClient(event) const query = getQuery(event) diff --git a/types/global.d.ts b/types/global.d.ts deleted file mode 100644 index cfe40c9..0000000 --- a/types/global.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { PostgrestError } from '@supabase/postgrest-js' - -export {} - -declare global { - interface Note { - title: string - description: string - } - - interface NoteQuery { - id: number | string | string[] - } - - interface ApiResponse { - status: number - message: string - error: PostgrestError | null - } - - interface DeleteResponse extends ApiResponse { - data: undefined[] | null - } -}