import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'
import { Repository } from 'typeorm';
import { isEmpty } from 'src/common/helper';
import { MultiFileUploadEntity } from './entities/multi-file-upload.entity';
import { Image } from './entities/portfolio-image.entity';

@Injectable()
export class MultiFileUploadRepository {
    constructor(
        @InjectRepository(MultiFileUploadEntity)
        private readonly fileUpload: Repository<MultiFileUploadEntity>
    ) { }

    async findAll() {
        const data = await this.fileUpload.find({
            relations: ['portfolio_images']
        })

        const completeUrl = data.map((result) => ({
            ...result,
            avatar: isEmpty(result.avatar)
                ? null
                : `${process.env.DOMAIN}${result.avatar}`,
            portfolio_images: isEmpty(result.portfolio_images)
                ? null
                : result.portfolio_images.map(image => ({
                    id: image.id,
                    url: `${process.env.DOMAIN}${image.portfolio_images}`,
                })),
        }))

        return completeUrl
    }

    async findOne(id: string) {
        const data = await this.fileUpload.findOne({ 
            where: { id },
            relations: ['portfolio_images']
        })

        if (data) {
            const singleFileUrl = isEmpty(data.avatar)
                ? null
                : `${process.env.DOMAIN}${data.avatar}`

            const multiFileUrl = isEmpty(data.portfolio_images)
                ? null
                : data.portfolio_images.map(image => ({
                    id: image.id,
                    url: `${process.env.DOMAIN}${image.portfolio_images}`,
                }))

            const response = {
                ...data,
                avatar: singleFileUrl,
                portfolio_images: multiFileUrl
            }

            return response
        }
    }
}