CREATE TABLE IF NOT EXISTS `roles` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL UNIQUE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `roles` (name) VALUES ('Administrador'), ('Gestor'), ('Funcionário'); CREATE TABLE IF NOT EXISTS `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `role_id` INT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `unit` VARCHAR(50) NOT NULL, -- e.g., kg, L, un `quantity` DECIMAL(10, 2) NOT NULL DEFAULT 0.00, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `stock_movements` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `product_id` INT NOT NULL, `type` ENUM('entrada', 'saída') NOT NULL, `quantity` DECIMAL(10, 2) NOT NULL, `user_id` INT, `notes` TEXT, `date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`product_id`) REFERENCES `products`(`id`), FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `financial_categories` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `financial_categories` (name) VALUES ('Combustível'), ('Sementes'), ('Defensivos'), ('Maquinário'), ('Mão de Obra'), ('Manutenção'), ('Receita de Venda'), ('Outros'); CREATE TABLE IF NOT EXISTS `financial_transactions` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `description` VARCHAR(255) NOT NULL, `type` ENUM('receita', 'despesa') NOT NULL, `amount` DECIMAL(10, 2) NOT NULL, `category_id` INT, `user_id` INT, `date` DATE NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`category_id`) REFERENCES `financial_categories`(`id`), FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `crops` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `area` DECIMAL(10, 2) NOT NULL, -- in hectares `start_date` DATE NOT NULL, `end_date` DATE, `expected_yield` DECIMAL(10, 2), `actual_yield` DECIMAL(10, 2), `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS `crop_inputs` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `crop_id` INT NOT NULL, `product_id` INT NOT NULL, `quantity` DECIMAL(10, 2) NOT NULL, `application_date` DATE NOT NULL, `user_id` INT, `notes` TEXT, FOREIGN KEY (`crop_id`) REFERENCES `crops`(`id`), FOREIGN KEY (`product_id`) REFERENCES `products`(`id`), FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;