import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository, FindOptionsWhere } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { TenantAwareRepository } from '../../../common/repositories/tenant-aware.repository';
import { TripSourceEntity } from '../../../entities/trip-source.entity';

@Injectable()
export class TripSourceRepository extends TenantAwareRepository<TripSourceEntity> {
  constructor(
    @InjectRepository(TripSourceEntity) repo: Repository<TripSourceEntity>,
    cls: ClsService,
  ) {
    super(repo, cls);
  }

  async findAllSorted(): Promise<TripSourceEntity[]> {
    return this.find({
      order: { name: 'ASC' } as any,
    });
  }

  async findByShortName(shortName: string): Promise<TripSourceEntity | null> {
    return this.findOne({
      where: { short_name: shortName } as FindOptionsWhere<TripSourceEntity>,
    });
  }

  async findByShortCode(shortCode: string): Promise<TripSourceEntity | null> {
    return this.findOne({
      where: { short_code: shortCode } as FindOptionsWhere<TripSourceEntity>,
    });
  }
}
