Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 9 additions & 16 deletions lib/store-renderer/services/template-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,10 @@ class TemplateLoader {
private s3Client?: S3Client
private cache: S3TemplateCache = {}
private readonly TEMPLATE_CACHE_TTL = 60 * 60 * 1000 // 1 hora en ms
private readonly bucketName: string
private readonly cloudFrontDomain: string
private readonly appEnv: string

private constructor() {
this.bucketName = process.env.BUCKET_NAME || ''
this.cloudFrontDomain = process.env.CLOUDFRONT_DOMAIN_NAME || ''
this.appEnv = process.env.APP_ENV || 'development'

// Solo inicializar S3 si tenemos bucket configurado
if (this.bucketName) {
if (process.env.BUCKET_NAME) {
this.s3Client = new S3Client({
region: process.env.REGION_BUCKET || 'us-east-2',
})
Expand All @@ -46,9 +39,9 @@ class TemplateLoader {
public async loadTemplate(storeId: string, templatePath: string): Promise<string> {
try {
console.log(`[TemplateLoader] Loading template: ${templatePath} for store: ${storeId}`)
console.log(`[TemplateLoader] Environment: ${this.appEnv}`)
console.log(`[TemplateLoader] CloudFront domain: ${this.cloudFrontDomain}`)
console.log(`[TemplateLoader] Bucket name: ${this.bucketName}`)
console.log(`[TemplateLoader] Environment: ${process.env.APP_ENV}`)
console.log(`[TemplateLoader] CloudFront domain: ${process.env.CLOUDFRONT_DOMAIN_NAME}`)
console.log(`[TemplateLoader] Bucket name: ${process.env.BUCKET_NAME}`)

// Verificar caché primero
const cached = this.getCachedTemplate(storeId, templatePath)
Expand All @@ -60,7 +53,7 @@ class TemplateLoader {
let content: string

// En producción usar CloudFront, en desarrollo usar S3 directo
if (this.appEnv === 'production' && this.cloudFrontDomain) {
if (process.env.APP_ENV === 'production' && process.env.CLOUDFRONT_DOMAIN_NAME) {
console.log(`[TemplateLoader] Loading from CloudFront...`)
content = await this.loadTemplateFromCloudFront(storeId, templatePath)
} else {
Expand Down Expand Up @@ -110,7 +103,7 @@ class TemplateLoader {
// Listar todos los archivos de plantilla en S3
const prefix = `templates/${storeId}/`
const command = new ListObjectsV2Command({
Bucket: this.bucketName,
Bucket: process.env.BUCKET_NAME,
Prefix: prefix,
})

Expand Down Expand Up @@ -270,7 +263,7 @@ class TemplateLoader {
* Carga una plantilla desde CloudFront (producción)
*/
private async loadTemplateFromCloudFront(storeId: string, templatePath: string): Promise<string> {
const templateUrl = `https://${this.cloudFrontDomain}/templates/${storeId}/${templatePath}`
const templateUrl = `https://${process.env.CLOUDFRONT_DOMAIN_NAME}/templates/${storeId}/${templatePath}`

const response = await fetch(templateUrl)

Expand All @@ -287,7 +280,7 @@ class TemplateLoader {
* Carga una plantilla desde S3 directamente (desarrollo)
*/
private async loadTemplateFromS3(storeId: string, templatePath: string): Promise<string> {
if (!this.s3Client || !this.bucketName) {
if (!this.s3Client || !process.env.BUCKET_NAME) {
throw new Error('S3 client or bucket not configured')
}

Expand All @@ -296,7 +289,7 @@ class TemplateLoader {

// Cargar desde S3
const command = new GetObjectCommand({
Bucket: this.bucketName,
Bucket: process.env.BUCKET_NAME,
Key: s3Key,
})

Expand Down