<?php

namespace MintyPHP\Service\Settings;

use MintyPHP\Repository\Access\RoleRepository;
use MintyPHP\Repository\Access\RoleRepositoryInterface;
use MintyPHP\Repository\Org\DepartmentRepository;
use MintyPHP\Repository\Org\DepartmentRepositoryInterface;
use MintyPHP\Repository\Settings\SettingRepository;
use MintyPHP\Repository\Settings\SettingRepositoryInterface;
use MintyPHP\Repository\Tenant\TenantRepository;
use MintyPHP\Repository\Tenant\TenantRepositoryInterface;

class SettingRepositoryFactory
{
    private ?SettingRepository $settingRepository = null;
    private ?TenantRepository $tenantRepository = null;
    private ?RoleRepository $roleRepository = null;
    private ?DepartmentRepository $departmentRepository = null;

    public function createSettingRepository(): SettingRepositoryInterface
    {
        return $this->settingRepository ??= new SettingRepository();
    }

    public function createTenantRepository(): TenantRepositoryInterface
    {
        return $this->tenantRepository ??= new TenantRepository();
    }

    public function createRoleRepository(): RoleRepositoryInterface
    {
        return $this->roleRepository ??= new RoleRepository();
    }

    public function createDepartmentRepository(): DepartmentRepositoryInterface
    {
        return $this->departmentRepository ??= new DepartmentRepository();
    }
}
