Skip to content

[JITERA] Implement Reader Management System

chi le requested to merge feat/manage-readers-1748946468 into main

Created by: chi-jitera

Overview

This pull request introduces a new feature for managing readers in the book management system. It includes the creation of a Reader model, service, controller, and routes to handle CRUD operations for readers.

Changes

  1. Model:

    • Created models/Reader.js to define the Reader schema with fields such as name, email, membershipDate, and isActive.
    const mongoose = require('../config/db');
    const readerSchema = new mongoose.Schema({
        name: { type: String, required: true },
        email: { type: String, required: true, unique: true },
        membershipDate: { type: Date, default: Date.now },
        isActive: { type: Boolean, default: true }
    });
    module.exports = mongoose.model('Reader', readerSchema);
  2. Service:

    • Implemented business logic in services/readerService.js to handle reader creation, retrieval, updating, and deletion.
    const Reader = require('../models/Reader');
    exports.createReader = async (readerData) => { /*...*/ };
    exports.getAllReaders = async () => { /*...*/ };
    exports.getReaderById = async (readerId) => { /*...*/ };
    exports.updateReader = async (readerId, updateData) => { /*...*/ };
    exports.deleteReader = async (readerId) => { /*...*/ };
  3. Controller:

    • Created controllers/readerController.js to handle HTTP requests related to readers.
    const readerService = require('../services/readerService');
    exports.createReader = async (req, res) => { /*...*/ };
    exports.getAllReaders = async (req, res) => { /*...*/ };
    exports.getReaderById = async (req, res) => { /*...*/ };
    exports.updateReader = async (req, res) => { /*...*/ };
    exports.deleteReader = async (req, res) => { /*...*/ };
  4. Routes:

    • Defined API endpoints in routes/readerRoutes.js for managing readers.
    const express = require('express');
    const router = express.Router();
    const readerController = require('../controllers/readerController');
    router.post('/readers', readerController.createReader);
    router.get('/readers', readerController.getAllReaders);
    router.get('/readers/:id', readerController.getReaderById);
    router.put('/readers/:id', readerController.updateReader);
    router.delete('/readers/:id', readerController.deleteReader);
    module.exports = router;

These components will allow for efficient management of readers in the system, similar to the existing book management functionality.

Merge request reports