Skip to content

Commit

Permalink
feat(api): add prisma schema
Browse files Browse the repository at this point in the history
  • Loading branch information
duongdev committed Jun 6, 2024
1 parent b8d9a2f commit 4c95f23
Showing 1 changed file with 123 additions and 3 deletions.
126 changes: 123 additions & 3 deletions apps/api/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,127 @@ datasource db {
}

model User {
id String @id @default(cuid())
email String @unique
name String?
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
email String @unique
name String?
userWalletAccounts UserWalletAccount[]
budgetUsers BudgetUser[]
transactions Transaction[]
}

model UserWalletAccount {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
user User @relation(fields: [userId], references: [id])
name String
icon String?
description String?
lastDigits String?
transactions Transaction[]
}

model Budget {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
description String?
type BudgetType @default(SPENDING)
periodConfig BudgetPeriodConfig?
budgetUsers BudgetUser[]
transactions Transaction[]
}

enum BudgetType {
SPENDING
SAVING
INVESTING
DEBT
}

enum BudgetPeriod {
MONTHLY
QUARTERLY
YEARLY
CUSTOM
}

model BudgetPeriodConfig {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
period BudgetPeriod
amount Decimal
currency String
startDate DateTime?
endDate DateTime?
budget Budget @relation(fields: [budgetId], references: [id], onDelete: Cascade)
budgetId String @unique
}

model BudgetUser {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
permission BudgetUserPermission
userId String
user User @relation(fields: [userId], references: [id])
budgetId String
budget Budget @relation(fields: [budgetId], references: [id])
@@unique([userId, budgetId])
}

enum BudgetUserPermission {
OWNER
MEMBER
}

model Transaction {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
amount Decimal
currency String
date DateTime
note String?
categoryId String?
category Category? @relation(fields: [categoryId], references: [id], onDelete: SetNull)
budgetId String
budget Budget @relation(fields: [budgetId], references: [id])
walletAccountId String
walletAccount UserWalletAccount @relation(fields: [walletAccountId], references: [id])
createdByUserId String
createdByUser User @relation(fields: [createdByUserId], references: [id])
}

model Category {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
description String?
icon String?
color String?
parent Category? @relation("CategoryToCategory", fields: [parentId], references: [id], onDelete: SetNull)
parentId String?
children Category[] @relation("CategoryToCategory")
transactions Transaction[]
}

0 comments on commit 4c95f23

Please # to comment.