35 lines
1 KiB
TypeScript
35 lines
1 KiB
TypeScript
import {Feature, AppServices} from "@app/core/Feature";
|
|
import {ProjectFeature} from "../projects";
|
|
import {UserFeature} from "../users";
|
|
import {MetricEvents} from "./MetricsEvents";
|
|
import {MetricsRepository} from "./MetricsRepository";
|
|
import {MetricsUseCases} from "./MetricsUseCases";
|
|
|
|
export * from "./MetricsUseCases"
|
|
export * from "./entities"
|
|
|
|
export type MetricFeatureDependencies = {
|
|
userFeature: UserFeature
|
|
projectFeature: ProjectFeature
|
|
}
|
|
|
|
export class MetricFeature extends Feature {
|
|
|
|
name = "Metric"
|
|
events: MetricEvents = new MetricEvents()
|
|
dependencies: MetricFeatureDependencies
|
|
|
|
repository: MetricsRepository
|
|
useCases: MetricsUseCases
|
|
|
|
constructor(services: AppServices, dependencies: MetricFeatureDependencies) {
|
|
super(services);
|
|
this.repository = new MetricsRepository(services.db)
|
|
this.dependencies = dependencies
|
|
this.useCases = new MetricsUseCases({
|
|
projectService: this.dependencies.projectFeature.service,
|
|
metricRepository: this.repository,
|
|
metricEvents: this.events
|
|
})
|
|
}
|
|
}
|