@golemio/parkings
Version:
Golemio Parkings Module
17 lines (16 loc) • 1.25 kB
TypeScript
import { IMrParkitGarageWithTariff } from "../../../schema-definitions/datasources/interfaces/IMrParkitGarage";
import { ISmart4CityLocation } from "../../../schema-definitions/datasources/interfaces/ISmart4CityLocation";
import { ParkingProvider } from "../helpers/ParkingProviderEnum";
import { IDataSourceProvider } from "./IDataSourceProvider";
import { ISmart4CityList } from "../../../schema-definitions/datasources/interfaces/ISmart4CityList";
import { IBedrichovParking } from "../../../schema-definitions/datasources/interfaces/IBedrichovParking";
export type DataSourceProviderDict = {
[ParkingProvider.MrParkit]: IDataSourceProvider<IMrParkitGarageWithTariff[]>;
[ParkingProvider.Smart4CityList]: IDataSourceProvider<ISmart4CityList[]>;
[ParkingProvider.Smart4CityLocation]: IDataSourceProvider<ISmart4CityLocation[]>;
[ParkingProvider.Bedrichov]: IDataSourceProvider<IBedrichovParking[]>;
};
export type DataSourceReturnType<T extends ParkingProvider> = ReturnType<DataSourceProviderDict[T]["getDataSource"]>;
export interface IParkingProviderDataSourceFactory {
getDataSource<T extends ParkingProvider>(presetLogsProvider: T, ...params: Parameters<DataSourceProviderDict[T]["getDataSource"]>): DataSourceReturnType<T>;
}