Source

src/products/families/FamilyService.js

// Path: src/products/families/FamilyService.js
const BaseService = require('../../common/BaseService');
const FamilyEntity = require('./FamilyEntity');
const FamilyRepository = require('./FamilyRepository');
const DB = require('@vectoricons.net/db');
const { withSoftDeletable, withActivatable } = require('../../common/mixins/service');

/**
 * @module Products Domain
 * @fileoverview FamilyService - Service for managing family data with soft delete and activation support.
 * @class FamilyService
 */
class FamilyService extends withSoftDeletable(withActivatable(BaseService)) {
    constructor({ repository, entityClass } = {}) {
        super({
            repository: repository || new FamilyRepository({ DB }),
            entityClass: entityClass || FamilyEntity,
        });
    }

    async getFamilyByUniqueId(uniqueId, options = {}) {
        return this.repository.findByUniqueId(uniqueId, options);
    }

    async getAllActiveFamilies(options = {}) {
        return this.repository.findAllActive(options);
    }
}

module.exports = FamilyService;