generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model Apartment { id String @id @default(cuid()) name String address String? totalArea Float? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt rooms Room[] } model Room { id String @id @default(cuid()) apartmentId String name String shape String @default("[]") // JSON array of {x, y} points width Float? height Float? wallHeight Float @default(2.7) plinthHeight Float @default(0.06) plinthThickness Float @default(0.01) order Int @default(0) posX Float @default(0) posY Float @default(0) floorType String @default("CONCRETE") wallColor String @default("#f5f0eb") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt apartment Apartment @relation(fields: [apartmentId], references: [id], onDelete: Cascade) walls Wall[] openings WallOpening[] electricalItems ElectricalItem[] furnitureItems FurnitureItem[] @@index([apartmentId]) } model Wall { id String @id @default(cuid()) roomId String startX Float startY Float endX Float endY Float thickness Float @default(0.1) direction String @default("OTHER") // NORTH, SOUTH, EAST, WEST, OTHER room Room @relation(fields: [roomId], references: [id], onDelete: Cascade) openings WallOpening[] @@index([roomId]) } model WallOpening { id String @id @default(cuid()) roomId String wallId String type String // DOOR, WINDOW positionAlongWall Float width Float height Float elevationFromFloor Float @default(0) openDirection String @default("LEFT") // LEFT, RIGHT, INWARD, OUTWARD room Room @relation(fields: [roomId], references: [id], onDelete: Cascade) wall Wall @relation(fields: [wallId], references: [id], onDelete: Cascade) @@index([roomId]) @@index([wallId]) } model ElectricalItem { id String @id @default(cuid()) roomId String type String // OUTLET, SWITCH, JUNCTION_BOX, LIGHT_CEILING, LIGHT_WALL, CABLE_ROUTE x Float y Float wallId String? elevationFromFloor Float? rotation Float @default(0) metadata String? // JSON room Room @relation(fields: [roomId], references: [id], onDelete: Cascade) @@index([roomId]) } model FurnitureItem { id String @id @default(cuid()) roomId String type String // BED, DESK, WARDROBE, SOFA, TABLE, CHAIR, SHELF, NIGHTSTAND, DRESSER, BOOKCASE, OTHER x Float y Float width Float depth Float height Float rotation Float @default(0) elevationFromFloor Float @default(0) label String? room Room @relation(fields: [roomId], references: [id], onDelete: Cascade) @@index([roomId]) }