diff --git a/package-lock.json b/package-lock.json index 59906c4..2ee831f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,13 +26,11 @@ "next": "14.0.0", "next-themes": "^0.2.1", "next13-progressbar": "^1.1.1", - "prisma": "^5.6.0", "react": "^18", "react-dom": "^18", "react-hook-form": "^7.47.0", "tailwind-merge": "^1.14.0", "tailwindcss-animate": "^1.0.7", - "uuid": "^9.0.1", "zod": "^3.22.4" }, "devDependencies": { @@ -47,6 +45,7 @@ "postcss": "^8", "prettier": "^3.0.3", "prettier-plugin-organize-imports": "^3.2.3", + "prisma": "^5.7.0", "tailwindcss": "^3", "typescript": "^5" } @@ -500,17 +499,62 @@ } } }, + "node_modules/@prisma/debug": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.7.0.tgz", + "integrity": "sha512-tZ+MOjWlVvz1kOEhNYMa4QUGURY+kgOUBqLHYIV8jmCsMuvA1tWcn7qtIMLzYWCbDcQT4ZS8xDgK0R2gl6/0wA==", + "devOptional": true + }, "node_modules/@prisma/engines": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.6.0.tgz", - "integrity": "sha512-Mt2q+GNJpU2vFn6kif24oRSBQv1KOkYaterQsi0k2/lA+dLvhRX6Lm26gon6PYHwUM8/h8KRgXIUMU0PCLB6bw==", - "hasInstallScript": true + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.7.0.tgz", + "integrity": "sha512-TkOMgMm60n5YgEKPn9erIvFX2/QuWnl3GBo6yTRyZKk5O5KQertXiNnrYgSLy0SpsKmhovEPQb+D4l0SzyE7XA==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.7.0", + "@prisma/engines-version": "5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9", + "@prisma/fetch-engine": "5.7.0", + "@prisma/get-platform": "5.7.0" + } }, "node_modules/@prisma/engines-version": { "version": "5.6.0-32.e95e739751f42d8ca026f6b910f5a2dc5adeaeee", "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.6.0-32.e95e739751f42d8ca026f6b910f5a2dc5adeaeee.tgz", "integrity": "sha512-UoFgbV1awGL/3wXuUK3GDaX2SolqczeeJ5b4FVec9tzeGbSWJboPSbT0psSrmgYAKiKnkOPFSLlH6+b+IyOwAw==" }, + "node_modules/@prisma/engines/node_modules/@prisma/engines-version": { + "version": "5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9.tgz", + "integrity": "sha512-V6tgRVi62jRwTm0Hglky3Scwjr/AKFBFtS+MdbsBr7UOuiu1TKLPc6xfPiyEN1+bYqjEtjxwGsHgahcJsd1rNg==", + "devOptional": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.7.0.tgz", + "integrity": "sha512-zIn/qmO+N/3FYe7/L9o+yZseIU8ivh4NdPKSkQRIHfg2QVTVMnbhGoTcecbxfVubeTp+DjcbjS0H9fCuM4W04w==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.7.0", + "@prisma/engines-version": "5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9", + "@prisma/get-platform": "5.7.0" + } + }, + "node_modules/@prisma/fetch-engine/node_modules/@prisma/engines-version": { + "version": "5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9.tgz", + "integrity": "sha512-V6tgRVi62jRwTm0Hglky3Scwjr/AKFBFtS+MdbsBr7UOuiu1TKLPc6xfPiyEN1+bYqjEtjxwGsHgahcJsd1rNg==", + "devOptional": true + }, + "node_modules/@prisma/get-platform": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.7.0.tgz", + "integrity": "sha512-ZeV/Op4bZsWXuw5Tg05WwRI8BlKiRFhsixPcAM+5BKYSiUZiMKIi713tfT3drBq8+T0E1arNZgYSA9QYcglWNA==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.7.0" + } + }, "node_modules/@radix-ui/number": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", @@ -4611,12 +4655,13 @@ } }, "node_modules/prisma": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.6.0.tgz", - "integrity": "sha512-EEaccku4ZGshdr2cthYHhf7iyvCcXqwJDvnoQRAJg5ge2Tzpv0e2BaMCp+CbbDUwoVTzwgOap9Zp+d4jFa2O9A==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.7.0.tgz", + "integrity": "sha512-0rcfXO2ErmGAtxnuTNHQT9ztL0zZheQjOI/VNJzdq87C3TlGPQtMqtM+KCwU6XtmkoEr7vbCQqA7HF9IY0ST+Q==", + "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/engines": "5.6.0" + "@prisma/engines": "5.7.0" }, "bin": { "prisma": "build/index.js" @@ -5653,19 +5698,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/package.json b/package.json index d488774..6717d13 100644 --- a/package.json +++ b/package.json @@ -27,13 +27,11 @@ "next": "14.0.0", "next-themes": "^0.2.1", "next13-progressbar": "^1.1.1", - "prisma": "^5.6.0", "react": "^18", "react-dom": "^18", "react-hook-form": "^7.47.0", "tailwind-merge": "^1.14.0", "tailwindcss-animate": "^1.0.7", - "uuid": "^9.0.1", "zod": "^3.22.4" }, "devDependencies": { @@ -48,6 +46,7 @@ "postcss": "^8", "prettier": "^3.0.3", "prettier-plugin-organize-imports": "^3.2.3", + "prisma": "^5.7.0", "tailwindcss": "^3", "typescript": "^5" } diff --git a/src/lib/api.ts b/src/lib/api.ts index f83b681..33e3eac 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -1,19 +1,22 @@ import { getPrisma } from '@/lib/prisma' import { ExpenseFormValues, GroupFormValues } from '@/lib/schemas' import { Expense } from '@prisma/client' -import { v4 as uuidv4 } from 'uuid' + +function randomId() { + return Math.random().toString(36).slice(2, 9) +} export async function createGroup(groupFormValues: GroupFormValues) { const prisma = await getPrisma() return prisma.group.create({ data: { - id: uuidv4(), + id: randomId(), name: groupFormValues.name, currency: groupFormValues.currency, participants: { createMany: { data: groupFormValues.participants.map(({ name }) => ({ - id: uuidv4(), + id: randomId(), name, })), }, @@ -41,7 +44,7 @@ export async function createExpense( const prisma = await getPrisma() return prisma.expense.create({ data: { - id: uuidv4(), + id: randomId(), groupId, amount: expenseFormValues.amount, title: expenseFormValues.title, @@ -160,7 +163,7 @@ export async function updateGroup( data: groupFormValues.participants .filter((participant) => participant.id === undefined) .map((participant) => ({ - id: uuidv4(), + id: randomId(), name: participant.name, })), },