package com.ibeetl.admin.core.file;

import java.io.OutputStream;
import java.util.List;
/**
 * 文件持久化，默认为文件系统，可以扩展到fastfds等
 *
 * @author xiandafu
 */
public interface FileService {
  /**
   * 得到一个临时文件操作
   *
   * @param name
   * @return
   */
  public FileItem createFileTemp(String name);

  /**
   * 创建一个持久的文档
   *
   * @param name
   * @param bizType
   * @param bizId
   * @param userId
   * @param orgId
   * @param tags
   * @return
   */
  public FileItem createFileItem(
      String name,
      String bizType,
      String bizId,
      Long userId,
      Long orgId,
      String fileBatchId,
      List<FileTag> tags);

  public FileItem loadFileItemByPath(String path);

  public FileItem getFileItemById(Long id);

  public FileItem getFileItemById(Long id, String batchFileId);

  public List<FileItem> queryByUserId(Long userId, List<FileTag> tags);

  public List<FileItem> queryByBiz(String bizType, String bizId);

  public List<FileItem> queryByBatchId(String fileBatchId);
  /**
   * 删除某个文件
   *
   * @param id
   * @param fileBatchId，用于验证
   */
  public void removeFile(Long id, String fileBatchId);

  /**
   * 完善附件信息
   *
   * @param fileBatchId
   * @param bizType
   * @param bizId
   */
  public void updateFile(String fileBatchId, String bizType, String bizId);
}
