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