// 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 itemStatus { normal borrowed stolen lost } model Item { id Int @id @unique @default(autoincrement()) SKU String? @unique amount Int @default(1) name String comment String? status itemStatus @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 category itemCategory? @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 @unique contactInfo contactInfo @relation(fields: [contactInfoId], references: [id]) contactInfoId Int StorageLocation StorageLocation[] } model itemCategory { id Int @id @default(autoincrement()) name String @unique description String? Item Item[] } /// TODO: Add relationship to StorageUnit, Item and if necessary to StorageLocation. model contactInfo { id Int @id @default(autoincrement()) type contactType @default(person) name String? lastName String? street String houseNumber String zipCode String city String country String StorageUnit StorageUnit[] } enum contactType { storageUnit person customer company partner enemy }