// Path: lolibox-server/src/main/java/io/loli/box/entity/User.java
// @Entity
// @Table(name = "user_accounts")
// public class User {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     private Long id;
// 
//     @Column(name = "email", length = 100, nullable = false, unique = true)
//     private String email;
// 
//     @Column(name = "user_name", length = 100, nullable = false,unique = true)
//     private String userName;
// 
//     @Column(name = "password", length = 255)
//     private String password;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "role", length = 20, nullable = false)
//     private Role role;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "sign_in_provider", length = 20)
//     private SocialMediaService signInProvider;
// 
//     @Column(name = "create_date")
//     private Date createDate = new Date();
// 
//     public Date getCreateDate() {
//         return createDate;
//     }
// 
//     public void setCreateDate(Date createDate) {
//         this.createDate = createDate;
//     }
// 
//     public User() {
// 
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getUserName() {
//         return userName;
//     }
// 
//     public void setUserName(String userName) {
//         this.userName = userName;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public Role getRole() {
//         return role;
//     }
// 
//     public void setRole(Role role) {
//         this.role = role;
//     }
// 
//     public SocialMediaService getSignInProvider() {
//         return signInProvider;
//     }
// 
//     public void setSignInProvider(SocialMediaService signInProvider) {
//         this.signInProvider = signInProvider;
//     }
// }
// 
// Path: lolibox-server/src/main/java/io/loli/box/service/AbstractStorageService.java
// public abstract class AbstractStorageService implements StorageService {
//     @Autowired
//     protected ImgFileRepository imgFileRepository;
// 
//     public void deleteFile(String name) {
//         imgFileRepository.updateDeleteByShortName(name, true);
//     }
// 
//     @Override
//     public boolean deleteFile(String name, User user) {
//         ImgFile file = imgFileRepository.findByShortName(name);
//         if(file.getUser().getId().equals(user.getId())) {
//             return true;
//         } else {
//             return false;
//         }
//     }
// }


import io.loli.box.entity.User;
import io.loli.box.service.AbstractStorageService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Calendar;
package io.loli.box.service.impl;



@Component
@ConditionalOnProperty(name = "storage.type", havingValue = "filesystem")
@ConfigurationProperties(prefix = "storage.filesystem")
// Path: lolibox-server/src/main/java/io/loli/box/entity/User.java
// @Entity
// @Table(name = "user_accounts")
// public class User {
// 
//     @Id
//     @GeneratedValue(strategy = GenerationType.AUTO)
//     private Long id;
// 
//     @Column(name = "email", length = 100, nullable = false, unique = true)
//     private String email;
// 
//     @Column(name = "user_name", length = 100, nullable = false,unique = true)
//     private String userName;
// 
//     @Column(name = "password", length = 255)
//     private String password;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "role", length = 20, nullable = false)
//     private Role role;
// 
//     @Enumerated(EnumType.STRING)
//     @Column(name = "sign_in_provider", length = 20)
//     private SocialMediaService signInProvider;
// 
//     @Column(name = "create_date")
//     private Date createDate = new Date();
// 
//     public Date getCreateDate() {
//         return createDate;
//     }
// 
//     public void setCreateDate(Date createDate) {
//         this.createDate = createDate;
//     }
// 
//     public User() {
// 
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getUserName() {
//         return userName;
//     }
// 
//     public void setUserName(String userName) {
//         this.userName = userName;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public Role getRole() {
//         return role;
//     }
// 
//     public void setRole(Role role) {
//         this.role = role;
//     }
// 
//     public SocialMediaService getSignInProvider() {
//         return signInProvider;
//     }
// 
//     public void setSignInProvider(SocialMediaService signInProvider) {
//         this.signInProvider = signInProvider;
//     }
// }
// 
// Path: lolibox-server/src/main/java/io/loli/box/service/AbstractStorageService.java
// public abstract class AbstractStorageService implements StorageService {
//     @Autowired
//     protected ImgFileRepository imgFileRepository;
// 
//     public void deleteFile(String name) {
//         imgFileRepository.updateDeleteByShortName(name, true);
//     }
// 
//     @Override
//     public boolean deleteFile(String name, User user) {
//         ImgFile file = imgFileRepository.findByShortName(name);
//         if(file.getUser().getId().equals(user.getId())) {
//             return true;
//         } else {
//             return false;
//         }
//     }
// }


// Path: lolibox-server/src/main/java/io/loli/box/service/impl/FileSystemStorageService.java
import io.loli.box.entity.User;
import io.loli.box.service.AbstractStorageService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Calendar;

package io.loli.box.service.impl;



@Component
@ConditionalOnProperty(name = "storage.type", havingValue = "filesystem")
@ConfigurationProperties(prefix = "storage.filesystem")
public class FileSystemStorageService extends AbstractStorageService {