Bir Modül İçin Gerekli Yapılar

Bir Modül İçin Gerekli Yapılar

Yeni bir modül oluşturulurken aşağıdaki dosya ve yapılar zorunludur. Bu standartlar, sistemin genel mimarisiyle uyumluluk sağlamak için belirlenmiştir.


1. manifest.json

Her modülün kök dizininde bir manifest.json dosyası bulunmalıdır. Bu dosya, modülün sistem tarafından tanınmasını sağlar.

{
  "name": "calendar",
  "version": "1.0.0",
  "title": "Takvim",
  "route": "/calendar"
}

Alanlar:

  • name: Modülün teknik adı.
  • version: Modül sürümü.
  • title: Arayüzde gösterilecek başlık.
  • route: Modüle ait API rotası.

2. validation.js

Her modül, kendi model yapısına uygun bir validation.js dosyasına sahip olmalıdır. Bu dosyada:

  • Hangi alanların zorunlu olduğu
  • Hangi alanların opsiyonel olduğu
  • Veri tipleri ve özel kurallar

tanımlanmalıdır.


3. service.js

Modül içerisindeki tüm veritabanı işlemleri service.js dosyasında tanımlanır.

const httpStatus = require("http-status");
const ApiError = require("@/utils/ApiError");
const { db } = require("@/models");
const { pagination } = require("@/utils");

/**
 * Get Calendars
 * @param {*} sortBy
 * @param {*} page
 * @param {*} limit
 * @returns
 */
const getCalendars = async (sortBy = "startDate", page = 1, limit = 10) => {
  return await pagination(db.calendar, {}, [], sortBy, "ASC", page, limit);
};

/**
 * Get Calendar
 * @param {*} eventId
 * @returns
 */
const getCalendar = async (eventId) => {
  const event = await db.calendar.findByPk(eventId);
};

Bu dosyada, modüle ait listeleme, detay çekme gibi işlemler tanımlanır. Gerekli durumlarda diğer CRUD işlemleri de burada yer alır.


4. permission.json Dosyası

Yeni modül için gerekli izinler permission.json dosyasına eklenmelidir. Bu dosya, kullanıcıların hangi işlemleri yapabileceğini belirler.

Modülün route dosyasında bu izinler kontrol edilir ve sadece yetkisi olanlar işlemi gerçekleştirebilir.

Yetkisiz işlem denemelerinde kullanıcıya şu uyarı gösterilir:

"Bu işlemi yapmaya yetkiniz yok, lütfen sistem yöneticisi ile iletişime geçiniz."


results matching ""

    No results matching ""