All files / src/repositories/scan sla-config.repository.ts

33.33% Statements 7/21
0% Branches 0/4
0% Functions 0/7
27.78% Lines 5/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 991x 1x 1x       1x   1x                                                                                                                                                                                    
import {inject} from '@loopback/core';
import {LogChainDataSource} from '@logchain/datasources';
import {
  SlaConfig,
  SlaConfigRelations,
} from '@logchain/models/scan/sla-config.model';
import {BaseCrudRepository} from '../base-crud.repository.base';
 
export class SlaConfigRepository extends BaseCrudRepository<
  SlaConfig,
  typeof SlaConfig.prototype.id,
  SlaConfigRelations
> {
  constructor(
    @inject('datasources.logchain')
    dataSource: LogChainDataSource,
  ) {
    super(SlaConfig, dataSource);
  }
 
  /**
   * Find all active SLA configs
   */
  async findActive(countryCode?: string) {
    const where: any = {
      is_active: true,
      is_deleted: false,
    };
 
    if (countryCode) {
      where.country_code = countryCode;
    }
 
    return this.find({
      where,
      order: ['provider ASC'],
    });
  }
 
  /**
   * Find SLA config by provider name
   */
  async findByProvider(provider: string) {
    return this.findOne({
      where: {
        provider: {like: provider},
        is_active: true,
        is_deleted: false,
      },
    });
  }
 
  /**
   * Find SLA config by provider and country code
   */
  async findByProviderAndCountry(provider: string, countryCode?: string) {
    const where: any = {
      provider: {like: provider},
      is_active: true,
      is_deleted: false,
    };
 
    if (countryCode) {
      where.country_code = countryCode;
    }
 
    return this.findOne({where});
  }
 
  /**
   * Soft delete SLA config (deactivate)
   */
  async softDelete(id: number): Promise<void> {
    await this.updateById(id, {
      is_active: false,
      is_deleted: true,
      updated_at: new Date(),
    });
  }
 
  /**
   * Get all providers list (for dropdown/select)
   */
  async getProvidersList(): Promise<{id: number; provider: string}[]> {
    const configs = await this.find({
      where: {
        is_active: true,
        is_deleted: false,
      },
      order: ['provider ASC'],
    });
 
    return configs.map(c => ({
      id: c.id,
      provider: c.provider,
    }));
  }
}