// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "mysql" url = env("DATABASE_URL") } // https://github.com/pantharshit00/prisma-docs-generator generator docs { provider = "node node_modules/prisma-docs-generator" output = "../docs" } // https://github.com/notiz-dev/prisma-dbml-generator // Viewer: https://dbdiagram.io/d generator dbml { provider = "prisma-dbml-generator" output = "../docs" outputName = "schema.dbml" projectName = "AssetFlow" } enum Status { normal borrowed stolen lost } model Item { id Int @id @unique @default(autoincrement()) SKU String? @unique amount Int @default(1) name String Comment String? status Status @default(normal) /// TODO: Would it be better to create a separate model for this as well instead of providing several static statuses to choose from(enum)? manufacturer String /// TODO: Do we need this as a mandatory field? Probably we can add another model for manufacturer. category Category @relation(fields: [categoryId], references: [id]) categoryId Int items Item[] @relation("items") /// Item beinhaltet.. baseItem Item[] @relation("items") /// Item zugehörig zu. storageLocation StorageLocation? @relation(fields: [storageLocationId], references: [id]) storageLocationId Int? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt importedBy String? } model StorageLocation { id Int @id @default(autoincrement()) name String @unique /// This is our LocationID for external use prefixed with: '%StorageUnit%_' storageUnit StorageUnit? @relation(fields: [storageUnitId], references: [id]) storageUnitId Int? Item Item[] } /// A StorageUnit is the base and can hold multiple StorageLocations. model StorageUnit { id Int @id @default(autoincrement()) name String street String houseNumber String zipCode String city String country String StorageLocation StorageLocation[] } model Category { id Int @id @default(autoincrement()) name String @unique description String? Item Item[] } /// TODO: Add relationship to StorageUnit, Item and if necessary to StorageLocation. model Owner { id Int @id @default(autoincrement()) type OwnerType @default(person) name String lastName String? street String houseNumber String zipCode String city String country String } enum OwnerType { person customer company }