Oluwasetemi Ojo
07/15/2021, 11:48 AMgenerator client {
provider = "prisma-client-js"
previewFeatures = ["mongodb"]
}
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
enum Source {
EMAIL
FACEBOOK
GOOGLE
APPLE
}
enum Role {
CUSTOMER
BUSINESSOWNER
BUSINESSMANAGER
FLOORMANAGER
SALESSTAFF
SUPERADMIN
}
model User {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
email String @unique
firstName String?
lastName String?
phone String?
image String @default("<https://via.placeholder.com/350.png>")
password String //6 character long including Uppercase and lowercase
role Role @default(CUSTOMER)
source Source @default(EMAIL)
address Address? @relation(references: [id], fields: [addressId])
addressId String? @db.ObjectId
resetPasswordToken String?
resetPasswordExpires DateTime?
resetPasswordAt DateTime?
verified Boolean @default(false)
Wallet Wallet?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Expenses Expenses[]
Token Token[]
ExpenseItem ExpenseItem[]
}
model Address {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
addressLine String
city String?
state String?
country String?
User User?
Hangout Location?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Location {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
name String
description String?
Address Address? @relation(fields: [addressId], references: [id])
addressId String? @db.ObjectId
viewCount Int @default(0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Inventory Inventory[]
Token Token[]
}
enum Type {
FOOD
DRINK
}
enum Measurement {
BOTTLE
CARTON6
CARTON8
CARTON12
CARTON24
}
model Inventory {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
name String
type Type @default(DRINK)
measurmenr Measurement?
quantity Int
costPrice Float
sellingPrice Float
published Boolean @default(false)
location Location? @relation(fields: [locationId], references: [id])
locationId String @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
ExpenseItem ExpenseItem[]
}
// wallet
model Wallet {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
balance Float @default(0)
user User? @relation(fields: [userId], references: [id])
userId String @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// expenses
model Expenses {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
name String
description String
totalAmount Float @default(0)
user User? @relation(fields: [userId], references: [id])
userId String @db.ObjectId
item ExpenseItem[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model ExpenseItem {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
name String
rate Int @default(0)
item Inventory @relation(fields: [inventoryId], references: [id])
inventoryId String @db.ObjectId
user User? @relation(fields: [userId], references: [id])
userId String @db.ObjectId
Expenses Expenses? @relation(fields: [expensesId], references: [id])
expensesId String? @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum Status {
USED
PENDING
}
// token
model Token {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
token String @unique
value Float @default(0)
location Location @relation(fields: [locationId], references: [id])
locationId String @db.ObjectId
user User @relation(fields: [userId], references: [id])
userId String @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// transactions
// activities
// permission
// logs