D. Product Management

Tutorial Product Management

1. Backend Product Model (src/models/Product.js)

const db = require('../config/database');

const Product = {
  create: async (productData) => {
    const { name, description, price, stock, image_url, category_id } = productData;
    const [result] = await db.execute(
      'INSERT INTO products (name, description, price, stock, image_url, category_id) VALUES (?, ?, ?, ?, ?, ?)',
      [name, description, price, stock, image_url, category_id]
    );
    return result;
  },

  findAll: async () => {
    const [rows] = await db.execute('SELECT * FROM products');
    return rows;
  },

  findById: async (id) => {
    const [rows] = await db.execute('SELECT * FROM products WHERE id = ?', [id]);
    return rows[0];
  },

  update: async (id, productData) => {
    const { name, description, price, stock, image_url, category_id } = productData;
    const [result] = await db.execute(
      'UPDATE products SET name = ?, description = ?, price = ?, stock = ?, image_url = ?, category_id = ? WHERE id = ?',
      [name, description, price, stock, image_url, category_id, id]
    );
    return result;
  },

  delete: async (id) => {
    const [result] = await db.execute('DELETE FROM products WHERE id = ?', [id]);
    return result;
  },

  // Methods tambahan akan diimplementasikan nanti
  /*
  findByCategory: async (categoryId) => {...},
  updateStock: async (id, quantity) => {...},
  searchProducts: async (keyword) => {...},
  */
};

module.exports = Product;

2. Backend Product Controller (src/controllers/productController.js)

3. Backend Product Routes (src/routes/product.routes.js)

4. Frontend Product Service (src/services/product.service.js)

5. Frontend Product Slice (src/store/slices/productSlice.js)

6. Frontend Product List Component (src/components/products/ProductList.js)

7. Frontend Product Form Component (src/components/products/ProductForm.js)

8. Frontend Product Detail Component (src/components/products/ProductDetail.js)

Catatan Implementasi:

  1. Templates yang perlu dibuat:

    • Product list view (grid/list)

    • Product form modal

    • Product detail page

    • Product search dan filter

    • Product image upload

  2. Features yang perlu ditambahkan:

    • Pagination

    • Search functionality

    • Category management

    • Image handling

    • Stock tracking

    • Price history

  3. Additional Features:

    • Product variants

    • Bulk import/export

    • Product analytics

    • Product reviews

    • Stock alerts

  4. Security Considerations:

    • Input validation

    • Image upload restrictions

    • Role-based access

    • Data sanitization

Langkah testing:

  1. Test CRUD operations

  2. Verify image uploads

  3. Test search functionality

  4. Verify role permissions

  5. Test form validations

  6. Check error handling

Last updated

Was this helpful?