## KRW 가격 기능 - pricing 테이블에 hourly_price_krw, monthly_price_krw 컬럼 추가 - 부가세 10% + 영업이익 10% + 환율 적용 (기본 1450원) - 시간당: 1원 단위 반올림 (최소 1원) - 월간: 100원 단위 반올림 (최소 100원) - 환율/부가세/영업이익률 환경변수로 분리 (배포 없이 변경 가능) ## GPU/G8/VPU 인스턴스 지원 - gpu_instances, gpu_pricing 테이블 추가 - g8_instances, g8_pricing 테이블 추가 - vpu_instances, vpu_pricing 테이블 추가 - Linode/Vultr 커넥터에 GPU 동기화 로직 추가 ## 환경변수 추가 - KRW_EXCHANGE_RATE: 환율 (기본 1450) - KRW_VAT_RATE: 부가세율 (기본 1.1) - KRW_MARKUP_RATE: 영업이익률 (기본 1.1) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
102 lines
3.3 KiB
TypeScript
102 lines
3.3 KiB
TypeScript
/**
|
|
* Repositories Index
|
|
* Export all repository classes for easy importing
|
|
*/
|
|
|
|
export { BaseRepository } from './base';
|
|
export { ProvidersRepository } from './providers';
|
|
export { RegionsRepository } from './regions';
|
|
export { InstancesRepository } from './instances';
|
|
export { PricingRepository } from './pricing';
|
|
export { GpuInstancesRepository } from './gpu-instances';
|
|
export { GpuPricingRepository } from './gpu-pricing';
|
|
export { G8InstancesRepository } from './g8-instances';
|
|
export { G8PricingRepository } from './g8-pricing';
|
|
export { VpuInstancesRepository } from './vpu-instances';
|
|
export { VpuPricingRepository } from './vpu-pricing';
|
|
|
|
import { ProvidersRepository } from './providers';
|
|
import { RegionsRepository } from './regions';
|
|
import { InstancesRepository } from './instances';
|
|
import { PricingRepository } from './pricing';
|
|
import { GpuInstancesRepository } from './gpu-instances';
|
|
import { GpuPricingRepository } from './gpu-pricing';
|
|
import { G8InstancesRepository } from './g8-instances';
|
|
import { G8PricingRepository } from './g8-pricing';
|
|
import { VpuInstancesRepository } from './vpu-instances';
|
|
import { VpuPricingRepository } from './vpu-pricing';
|
|
import type { Env } from '../types';
|
|
|
|
/**
|
|
* Repository factory for creating repository instances
|
|
* Uses lazy singleton pattern to cache repository instances
|
|
*/
|
|
export class RepositoryFactory {
|
|
private _providers?: ProvidersRepository;
|
|
private _regions?: RegionsRepository;
|
|
private _instances?: InstancesRepository;
|
|
private _pricing?: PricingRepository;
|
|
private _gpuInstances?: GpuInstancesRepository;
|
|
private _gpuPricing?: GpuPricingRepository;
|
|
private _g8Instances?: G8InstancesRepository;
|
|
private _g8Pricing?: G8PricingRepository;
|
|
private _vpuInstances?: VpuInstancesRepository;
|
|
private _vpuPricing?: VpuPricingRepository;
|
|
|
|
constructor(private _db: D1Database, private _env?: Env) {}
|
|
|
|
/**
|
|
* Access to raw D1 database instance for advanced operations (e.g., batch queries)
|
|
*/
|
|
get db(): D1Database {
|
|
return this._db;
|
|
}
|
|
|
|
/**
|
|
* Access to environment variables for KRW pricing configuration
|
|
*/
|
|
get env(): Env | undefined {
|
|
return this._env;
|
|
}
|
|
|
|
get providers(): ProvidersRepository {
|
|
return this._providers ??= new ProvidersRepository(this.db);
|
|
}
|
|
|
|
get regions(): RegionsRepository {
|
|
return this._regions ??= new RegionsRepository(this.db);
|
|
}
|
|
|
|
get instances(): InstancesRepository {
|
|
return this._instances ??= new InstancesRepository(this.db);
|
|
}
|
|
|
|
get pricing(): PricingRepository {
|
|
return this._pricing ??= new PricingRepository(this.db, this._env);
|
|
}
|
|
|
|
get gpuInstances(): GpuInstancesRepository {
|
|
return this._gpuInstances ??= new GpuInstancesRepository(this.db);
|
|
}
|
|
|
|
get gpuPricing(): GpuPricingRepository {
|
|
return this._gpuPricing ??= new GpuPricingRepository(this.db, this._env);
|
|
}
|
|
|
|
get g8Instances(): G8InstancesRepository {
|
|
return this._g8Instances ??= new G8InstancesRepository(this.db);
|
|
}
|
|
|
|
get g8Pricing(): G8PricingRepository {
|
|
return this._g8Pricing ??= new G8PricingRepository(this.db, this._env);
|
|
}
|
|
|
|
get vpuInstances(): VpuInstancesRepository {
|
|
return this._vpuInstances ??= new VpuInstancesRepository(this.db);
|
|
}
|
|
|
|
get vpuPricing(): VpuPricingRepository {
|
|
return this._vpuPricing ??= new VpuPricingRepository(this.db, this._env);
|
|
}
|
|
}
|