package com.sn.sowsysrestapi.domain.service;

import lombok.Builder;
import lombok.Getter;

import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public interface PictureStorageService {

    InputStream recover(String fileName);

    void store(NewPicture newPicture);

    void remove(String fileName);

    default void replace(String oldFileName, NewPicture newPicture) {

        this.store(newPicture);

        if (oldFileName != null) {
            this.remove(oldFileName);
        }

    }


    default String generateFileName(String originalName) {

        LocalDateTime localDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-hhmmssmma");

        String initialFileName = dateTimeFormatter.format(localDateTime);

        return initialFileName + "_" + originalName;

    }

    @Builder
    @Getter
    class NewPicture {

        private String fileName;
        private InputStream inputStream;

    }

}
