feat: add facility structure to demo seed (property, buildings, floors, rooms)
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run

This commit is contained in:
fullsizemalt 2025-12-12 20:45:37 -08:00
parent 0382e8119d
commit e02fdb0c45

View file

@ -74,6 +74,109 @@ async function main() {
rooms[r.name.replace(DEMO_PREFIX + ' ', '')] = room; rooms[r.name.replace(DEMO_PREFIX + ' ', '')] = room;
} }
// ==================== FACILITY STRUCTURE ====================
console.log('\n🏗 Creating Facility Structure...');
// Create Property
let property = await prisma.facilityProperty.findFirst({ where: { name: `${DEMO_PREFIX} 777 Wolfpack Cultivation` } });
if (!property) {
property = await prisma.facilityProperty.create({
data: {
name: `${DEMO_PREFIX} 777 Wolfpack Cultivation`,
address: '1234 Grow Lane, Grass Valley, CA 95945',
licenseNum: 'CCL21-0001234'
}
});
console.log(' ✓ Property: 777 Wolfpack Cultivation');
}
// Create Buildings
const buildingsData = [
{ name: 'Main Cultivation', code: 'GROW1', type: 'CULTIVATION' },
{ name: 'Processing Facility', code: 'PROC1', type: 'PROCESSING' },
];
const buildings = {};
for (const b of buildingsData) {
let building = await prisma.facilityBuilding.findFirst({
where: { code: b.code, propertyId: property.id }
});
if (!building) {
building = await prisma.facilityBuilding.create({
data: { ...b, propertyId: property.id }
});
console.log(` ✓ Building: ${b.name}`);
}
buildings[b.code] = building;
}
// Create Floors
const floorsData = [
{ buildingCode: 'GROW1', name: 'Ground Floor', number: 1, width: 100, height: 80, ceilingHeight: 12 },
{ buildingCode: 'GROW1', name: 'Upper Floor', number: 2, width: 100, height: 80, ceilingHeight: 10 },
{ buildingCode: 'PROC1', name: 'Ground Floor', number: 1, width: 60, height: 40, ceilingHeight: 10 },
];
const floors = {};
for (const f of floorsData) {
const buildingId = buildings[f.buildingCode]?.id;
if (!buildingId) continue;
let floor = await prisma.facilityFloor.findFirst({
where: { number: f.number, buildingId }
});
if (!floor) {
floor = await prisma.facilityFloor.create({
data: {
buildingId,
name: f.name,
number: f.number,
width: f.width,
height: f.height,
ceilingHeight: f.ceilingHeight
}
});
console.log(` ✓ Floor: ${f.buildingCode} - ${f.name}`);
}
floors[`${f.buildingCode}-F${f.number}`] = floor;
}
// Create Facility Rooms (mapped to grow rooms)
const facilityRoomsData = [
{ floorKey: 'GROW1-F1', name: 'Veg Room 1', code: 'VEG-A', type: 'VEG', posX: 10, posY: 10, width: 40, height: 30 },
{ floorKey: 'GROW1-F1', name: 'Veg Room 2', code: 'VEG-B', type: 'VEG', posX: 55, posY: 10, width: 35, height: 25 },
{ floorKey: 'GROW1-F1', name: 'Mother Room', code: 'MTHR', type: 'MOTHER', posX: 10, posY: 45, width: 20, height: 20 },
{ floorKey: 'GROW1-F2', name: 'Flower Room A', code: 'FLR-A', type: 'FLOWER', posX: 5, posY: 5, width: 45, height: 35 },
{ floorKey: 'GROW1-F2', name: 'Flower Room B', code: 'FLR-B', type: 'FLOWER', posX: 52, posY: 5, width: 45, height: 35 },
{ floorKey: 'GROW1-F2', name: 'Flower Room C', code: 'FLR-C', type: 'FLOWER', posX: 5, posY: 42, width: 40, height: 30 },
{ floorKey: 'PROC1-F1', name: 'Dry Room', code: 'DRY', type: 'DRY', posX: 5, posY: 5, width: 25, height: 30 },
{ floorKey: 'PROC1-F1', name: 'Cure Room', code: 'CURE', type: 'CURE', posX: 35, posY: 5, width: 20, height: 30 },
];
for (const fr of facilityRoomsData) {
const floorId = floors[fr.floorKey]?.id;
if (!floorId) continue;
const existing = await prisma.facilityRoom.findFirst({
where: { code: fr.code, floorId }
});
if (!existing) {
await prisma.facilityRoom.create({
data: {
floorId,
name: fr.name,
code: fr.code,
type: fr.type,
posX: fr.posX,
posY: fr.posY,
width: fr.width,
height: fr.height
}
});
}
}
console.log(' ✓ 8 facility rooms mapped');
// ==================== BATCHES ==================== // ==================== BATCHES ====================
console.log('\n🌱 Creating Batches...'); console.log('\n🌱 Creating Batches...');
const batchesData = [ const batchesData = [