import { relations } from 'drizzle-orm'; import { pgTable,pgEnum,integer,index, varchar,real, uuid } from 'drizzle-orm/pg-core'; import { floor } from './floor'; import { task } from './task'; import { z } from 'zod'; import { project } from './project'; import { areaStatusEnum } from '@/server/project/domain/models'; export const areaStatus=pgEnum("status", areaStatusEnum) export const areaStatusEnumSchema=z.enum(areaStatus.enumValues) export const areas = pgTable("areas", { id: uuid("id").primaryKey().defaultRandom().notNull(), type:varchar('type',{length:250}).notNull(), length: real("length").notNull(), width: real("width").notNull(), quantity: integer("quantity").notNull().default(1), projectId:uuid('project_id').notNull().references(()=>project.id), projectName:varchar('project_name',{length:250}).notNull(), floorId:uuid('floorId').notNull().references(()=>floor.id,{onDelete:'cascade',onUpdate:'cascade'}), status:areaStatus('status').notNull().default('no iniciada') },(t)=>({ areas_floor:index("areas_floor").on(t.floorId) })); export const areasRelations=relations(areas,({one,many})=>({ floor:one(floor,{ fields:[areas.floorId], references:[floor.id] }), task:many(task) })) export type AreaSelect= typeof areas.$inferSelect export type AreaUpdate= typeof areas.$inferInsert