diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index 979695f..0d86139 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -241,3 +241,31 @@ model PlantHealthCheck { @@map("plant_health_checks") } +// Supply/Shopping List models +model SupplyItem { + id String @id @default(uuid()) + name String + category SupplyCategory + quantity Int @default(0) + minThreshold Int @default(0) + unit String // "each", "box", "roll", "gallon", etc. + location String? // "Storage Room", "Bathroom", etc. + lastOrdered DateTime? + notes String? + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@map("supply_items") +} + +enum SupplyCategory { + FILTER // Air filters, water filters + CLEANING // Cleaning supplies + PPE // Gloves, masks, suits + OFFICE // Paper, pens, etc. + BATHROOM // Toilet paper, soap, etc. + KITCHEN // Coffee, snacks, etc. + MAINTENANCE // Tools, parts, etc. + OTHER +} diff --git a/backend/prisma/seed.js b/backend/prisma/seed.js index 6ad901f..08fc1c4 100644 --- a/backend/prisma/seed.js +++ b/backend/prisma/seed.js @@ -3,83 +3,53 @@ const bcrypt = require('bcrypt'); const prisma = new PrismaClient(); -const Role = { - OWNER: 'OWNER', - MANAGER: 'MANAGER', - GROWER: 'GROWER', - STAFF: 'STAFF' -}; - -const RoomType = { - VEG: 'VEG', - FLOWER: 'FLOWER', - DRY: 'DRY', - CURE: 'CURE', - MOTHER: 'MOTHER', - CLONE: 'CLONE' -}; - async function main() { console.log('Seeding database...'); - // Hash password once for all users + // Hash password once const hashedPassword = await bcrypt.hash('password123', 10); - // Create test users for each role - const users = [ - { - email: 'admin@runfoo.run', + // 777 Wolfpack Team (Production Users) + const travis = await prisma.user.upsert({ + where: { email: 'travis@runfoo.run' }, + update: {}, + create: { + email: 'travis@runfoo.run', passwordHash: hashedPassword, - name: 'Facility Owner', - role: Role.OWNER, - rate: 50.00 + name: 'Travis', + role: 'MANAGER', + rate: 35.00, }, - { - email: 'manager@runfoo.run', + }); + + const jen = await prisma.user.upsert({ + where: { email: 'jen@runfoo.run' }, + update: {}, + create: { + email: 'jen@runfoo.run', passwordHash: hashedPassword, - name: 'Operations Manager', - role: Role.MANAGER, - rate: 35.00 + name: 'Jen', + role: 'GROWER', + rate: 30.00, }, - { - email: 'grower@runfoo.run', + }); + + const king = await prisma.user.upsert({ + where: { email: 'king@runfoo.run' }, + update: {}, + create: { + email: 'king@runfoo.run', passwordHash: hashedPassword, - name: 'Head Grower', - role: Role.GROWER, - rate: 30.00 + name: 'King', + role: 'GROWER', + rate: 30.00, }, - { - email: 'staff@runfoo.run', - passwordHash: hashedPassword, - name: 'Floor Staff', - role: Role.STAFF, - rate: 20.00 - } - ]; + }); - for (const userData of users) { - const existing = await prisma.user.findUnique({ where: { email: userData.email } }); - if (!existing) { - await prisma.user.create({ data: userData }); - console.log(`Created ${userData.role}: ${userData.email} / password123`); - } - } - - // Create Default Rooms - const rooms = [ - { name: 'Veg Room 1', type: RoomType.VEG, sqft: 1200 }, - { name: 'Flower Room A', type: RoomType.FLOWER, sqft: 2500 }, - { name: 'Flower Room B', type: RoomType.FLOWER, sqft: 2500 }, - { name: 'Dry Room', type: RoomType.DRY, sqft: 800 }, - ]; - - for (const r of rooms) { - const existing = await prisma.room.findFirst({ where: { name: r.name } }); - if (!existing) { - await prisma.room.create({ data: r }); - console.log(`Created Room: ${r.name}`); - } - } + console.log('✅ Created 777 Wolfpack team users'); + console.log(' - Travis (Manager)'); + console.log(' - Jen (Grower)'); + console.log(' - King (Grower)'); console.log('Seeding complete.'); }