Skip to content

[JITERA] Implement Reader Feature

chi le requested to merge feat/add-reader-feature-1749014089 into main

Created by: chi-jitera

Overview

This pull request introduces a new "reader" feature to the project, allowing for the management of readers through a dedicated model, service, controller, and routes.

Changes

  1. Reader Model:

    • Created a Reader model in models/Reader.js to represent readers in the database. This model includes fields for name, email, and membershipDate.
    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 }
    });
    module.exports = mongoose.model('Reader', readerSchema);
  2. Reader Service:

    • Implemented a service in services/readerService.js to handle business logic related to readers, including functions to create, retrieve, update, and delete readers.
    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. Reader Controller:

    • Created a controller in controllers/readerController.js to handle HTTP requests for reader operations, utilizing the service functions.
    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. Reader Routes:

    • Defined routes in routes/readerRoutes.js to expose endpoints for reader operations, including creating, retrieving, updating, and deleting readers.
    const express = require('express');
    const readerController = require('../controllers/readerController');
    const router = express.Router();
    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;

Integration

  • Ensure to integrate the new readerRoutes in the main server file (e.g., server.js) to make these endpoints accessible.

Merge request reports