File size: 1,504 Bytes
df37f6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from dependency_injector import containers, providers

from app.client.futabus_client import FutabusClient
from app.repositories.trip_repository import TripRepository
from app.resolvers.location_resolver import LocationResolver
from app.services.location_service import LocationService
from app.services.time_service import TimeService
from app.services.trip_service import TripService
from app.services.user_service import UserService
from app.ner.services.ner import NER


class Container(containers.DeclarativeContainer):
    wiring_config = containers.WiringConfiguration(
        modules=[
            "app.api.v1.trip",
            "app.api.v1.user",
            "app.api.v1.location",
            "app.api.v1.time",
        ]
    )

    ner_model = providers.Singleton(NER)

    futabus_client = providers.Singleton(FutabusClient)

    location_service = providers.Factory(
        LocationService,
        client=futabus_client,
    )

    location_resolver = providers.Factory(
        LocationResolver, location_service=location_service
    )
    # NER model (singleton nếu model lớn)

    trip_repository = providers.Factory(TripRepository, client=futabus_client)

    trip_service = providers.Factory(
        TripService,
        trip_repository=trip_repository,
        futabus_client=futabus_client,
        location_resolver=location_resolver,
    )

    time_service = providers.Factory(
        TimeService,
    )

    user_service = providers.Factory(UserService, model=ner_model)