File size: 910 Bytes
2c16c8c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { UserRepositorySupabase } from '../../infra/supabase/repository/user.repository';
import { UserService } from './user.service';
import { UserController } from './user.controller';

export class UserFactory {
  private static repository: UserRepositorySupabase;
  private static service: UserService;
  private static controller: UserController;

  static getRepository() {
    if (!UserFactory.repository) {
      UserFactory.repository = new UserRepositorySupabase();
    }
    return UserFactory.repository;
  }

  static getService() {
    if (!UserFactory.service) {
      UserFactory.service = new UserService(UserFactory.getRepository());
    }
    return UserFactory.service;
  }

  static getController() {
    if (!UserFactory.controller) {
      UserFactory.controller = new UserController(UserFactory.getService());
    }
    return UserFactory.controller;
  }
}