From 2a362cd07491092babd7f86fc5cbacd1e05ad65c Mon Sep 17 00:00:00 2001 From: Patryk Omiotek Date: Thu, 21 Mar 2024 20:55:16 +0100 Subject: [PATCH] feat: created_at column in job offer model --- .../jobboard/src/app/(public)/job-offers/create/actions.ts | 4 ++-- apps/jobboard/src/app/(public)/job-offers/create/page.tsx | 4 ++-- apps/jobboard/src/app/(public)/job-offers/create/types.ts | 4 ++-- .../20240321194532_add_created_at_field/migration.sql | 2 ++ libs/prisma-schema/prisma/schema.prisma | 7 ++++--- 5 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 libs/prisma-schema/prisma/migrations/20240321194532_add_created_at_field/migration.sql diff --git a/apps/jobboard/src/app/(public)/job-offers/create/actions.ts b/apps/jobboard/src/app/(public)/job-offers/create/actions.ts index dd30fba..064f00e 100644 --- a/apps/jobboard/src/app/(public)/job-offers/create/actions.ts +++ b/apps/jobboard/src/app/(public)/job-offers/create/actions.ts @@ -2,7 +2,7 @@ import db from '@jobboard/prisma-client'; import { redirect } from 'next/navigation'; -import { CreateOfferDto, offerSchema } from './types'; +import { CreateOfferDto, createOfferSchema } from './types'; import { ZodError } from 'zod'; // export const createJobOfferAction = async (data: FormData) => { @@ -26,7 +26,7 @@ export const createJobOfferAction = async (data: CreateOfferDto) => { // }); try { - const offer = offerSchema.parse(data); + const offer = createOfferSchema.parse(data); await db.jobOffer.create({ data: offer }); diff --git a/apps/jobboard/src/app/(public)/job-offers/create/page.tsx b/apps/jobboard/src/app/(public)/job-offers/create/page.tsx index 2066e1e..66b5b03 100644 --- a/apps/jobboard/src/app/(public)/job-offers/create/page.tsx +++ b/apps/jobboard/src/app/(public)/job-offers/create/page.tsx @@ -3,7 +3,7 @@ import { Alert, Button, Header, Input } from '@jobboard/common-ui'; import { createJobOfferAction } from './actions'; -import { CreateOfferDto, offerSchema } from './types'; +import { CreateOfferDto, createOfferSchema } from './types'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { use, useState, useTransition } from 'react'; @@ -15,7 +15,7 @@ export default function CreateOfferPage() { handleSubmit, formState: { errors }, } = useForm({ - resolver: zodResolver(offerSchema), + resolver: zodResolver(createOfferSchema), }); const router = useRouter(); const [isPending, setTransition] = useTransition(); diff --git a/apps/jobboard/src/app/(public)/job-offers/create/types.ts b/apps/jobboard/src/app/(public)/job-offers/create/types.ts index 55d62fc..00ad426 100644 --- a/apps/jobboard/src/app/(public)/job-offers/create/types.ts +++ b/apps/jobboard/src/app/(public)/job-offers/create/types.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -export const offerSchema = z.object({ +export const createOfferSchema = z.object({ title: z .string() .min(3, 'Must be at least 3 characters') @@ -27,4 +27,4 @@ export const offerSchema = z.object({ .max(50, 'Must be at least 50 characters'), }); -export type CreateOfferDto = z.infer; +export type CreateOfferDto = z.infer; diff --git a/libs/prisma-schema/prisma/migrations/20240321194532_add_created_at_field/migration.sql b/libs/prisma-schema/prisma/migrations/20240321194532_add_created_at_field/migration.sql new file mode 100644 index 0000000..020215f --- /dev/null +++ b/libs/prisma-schema/prisma/migrations/20240321194532_add_created_at_field/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "JobOffer" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; diff --git a/libs/prisma-schema/prisma/schema.prisma b/libs/prisma-schema/prisma/schema.prisma index 21cd375..a4a58b8 100644 --- a/libs/prisma-schema/prisma/schema.prisma +++ b/libs/prisma-schema/prisma/schema.prisma @@ -11,12 +11,13 @@ datasource db { } model JobOffer { - id Int @id @default(autoincrement()) - public_id String @unique @default(uuid()) + id Int @id @default(autoincrement()) + public_id String @unique @default(uuid()) title String description String position String salary Float company String - city String? @db.VarChar(100) + city String? @db.VarChar(100) + created_at DateTime @default(now()) }