From 0a8e56f80033ce889b38b01f2287cd6fbbe36dd6 Mon Sep 17 00:00:00 2001 From: Sebastien Castiel Date: Mon, 8 Jan 2024 18:11:11 +0100 Subject: Add splitmode and shares to expenses (#11) * Add splitmode and shares to expenses * Update balances based on shares * Change field size * Form validation * Redesign expense form * Split unevenly by amount --- .../20231215203936_add_shares_in_expenses/migration.sql | 2 ++ prisma/migrations/20231215213409_add_split_mode/migration.sql | 5 +++++ prisma/schema.prisma | 9 +++++++++ 3 files changed, 16 insertions(+) create mode 100644 prisma/migrations/20231215203936_add_shares_in_expenses/migration.sql create mode 100644 prisma/migrations/20231215213409_add_split_mode/migration.sql (limited to 'prisma') diff --git a/prisma/migrations/20231215203936_add_shares_in_expenses/migration.sql b/prisma/migrations/20231215203936_add_shares_in_expenses/migration.sql new file mode 100644 index 0000000..ecf7a04 --- /dev/null +++ b/prisma/migrations/20231215203936_add_shares_in_expenses/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "ExpensePaidFor" ADD COLUMN "shares" INTEGER NOT NULL DEFAULT 1; diff --git a/prisma/migrations/20231215213409_add_split_mode/migration.sql b/prisma/migrations/20231215213409_add_split_mode/migration.sql new file mode 100644 index 0000000..ac36cfc --- /dev/null +++ b/prisma/migrations/20231215213409_add_split_mode/migration.sql @@ -0,0 +1,5 @@ +-- CreateEnum +CREATE TYPE "SplitMode" AS ENUM ('EVENLY', 'BY_SHARES', 'BY_PERCENTAGE', 'BY_AMOUNT'); + +-- AlterTable +ALTER TABLE "Expense" ADD COLUMN "splitMode" "SplitMode" NOT NULL DEFAULT 'EVENLY'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index edf68f2..fd65754 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -39,14 +39,23 @@ model Expense { paidFor ExpensePaidFor[] groupId String isReimbursement Boolean @default(false) + splitMode SplitMode @default(EVENLY) createdAt DateTime @default(now()) } +enum SplitMode { + EVENLY + BY_SHARES + BY_PERCENTAGE + BY_AMOUNT +} + model ExpensePaidFor { expense Expense @relation(fields: [expenseId], references: [id], onDelete: Cascade) participant Participant @relation(fields: [participantId], references: [id], onDelete: Cascade) expenseId String participantId String + shares Int @default(1) @@id([expenseId, participantId]) } -- cgit v1.3