const Order = require('../models/Order');

class OrderRepository {
    // 1. Barcha buyurtmalarni olish (Ro'yxatni ko'rish uchun kerak)
    async findAll() {
        return await Order.find().populate('bookId'); 
        // .populate('bookId') — kitob haqidagi ma'lumotlarni ham qo'shib chiqaradi
    }

    // 2. ID bo'yicha topish (Bekor qilishdan oldin tekshirish uchun)
    async findById(id) {
        return await Order.findById(id);
    }

    // 3. Holatni yangilash (Pending -> Cancelled qilish uchun asosiy metod)
    async updateStatus(id, newStatus) {
        return await Order.findByIdAndUpdate(
            id, 
            { status: newStatus }, 
            { new: true }
        );
    }
    
    // 4. Yangi buyurtma yaratish
    async create(orderData) {
        const order = new Order(orderData);
        return await order.save();
    }

    // 5. Ma'lum bir holatdagi buyurtmalarni filtrlash (Masalan, faqat "Pending"lar)
    async findByStatus(status) {
        return await Order.find({ status: status });
    }
}

module.exports = new OrderRepository();