Merge branch 'dev' into NCBACK-33
# Conflicts: # src/main/java/ru/soune/nocopy/entity/file/ImageProtection.java # src/main/java/ru/soune/nocopy/entity/user/User.java # src/main/java/ru/soune/nocopy/handler/ImageFoundRequestHandler.java # src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java # src/main/java/ru/soune/nocopy/service/file/impl/FileUploadServiceImpl.java
This commit is contained in:
@@ -66,6 +66,20 @@ public class FileEntity {
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
@Column(name = "protected_file_path")
|
||||
private String protectedFilePath;
|
||||
|
||||
@Column(name = "protection_status")
|
||||
@Enumerated(EnumType.STRING)
|
||||
private ProtectionStatus protectionStatus;
|
||||
|
||||
@Column(name = "protected_at")
|
||||
private LocalDateTime protectedAt;
|
||||
|
||||
@Column(name = "signature")
|
||||
@JsonIgnore
|
||||
private String signature;
|
||||
|
||||
@OneToOne(mappedBy = "file", cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@JsonIgnore
|
||||
private ImageHashEntity imageHash;
|
||||
@@ -75,9 +89,19 @@ public class FileEntity {
|
||||
if (this.status == null) {
|
||||
this.status = FileStatus.ACTIVE;
|
||||
}
|
||||
|
||||
if (this.protectionStatus == null) {
|
||||
this.protectionStatus = ProtectionStatus.NOT_PROTECTED;
|
||||
}
|
||||
|
||||
if (this.createdAt == null) {
|
||||
this.createdAt = LocalDateTime.now();
|
||||
}
|
||||
this.updatedAt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
@PreUpdate
|
||||
public void preUpdate() {
|
||||
this.updatedAt = LocalDateTime.now();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,11 @@ import java.util.List;
|
||||
|
||||
@Getter
|
||||
public enum FileType {
|
||||
IMAGE("image", Arrays.asList("jpg", "jpeg", "png", "gif", "bmp", "webp", "jfif")),
|
||||
// IMAGE("image", Arrays.asList("jpg", "jpeg", "png", "gif", "bmp", "webp", "jfif")),
|
||||
IMAGE("image", Arrays.asList("jpg", "jpeg", "png", "gif", "bmp")),
|
||||
VIDEO("video", Arrays.asList("mp4", "avi", "mov", "wmv", "flv", "mkv", "webm", "m4v", "mpg", "mpeg",
|
||||
"3gp", "3g2", "f4v", "m2ts", "mts", "vob", "ogv", "divx")),
|
||||
AUDIO("audio", Arrays.asList("mp3", "wav", "flac"));
|
||||
AUDIO("audio", List.of("wav"));
|
||||
|
||||
private final String displayName;
|
||||
private final List<String> allowedExtensions;
|
||||
|
||||
@@ -9,7 +9,11 @@ import lombok.NoArgsConstructor;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Entity
|
||||
@Table(name = "image_hashes")
|
||||
@Table(name = "image_hashes", indexes = {
|
||||
@Index(name = "idx_image_hashes_hash64", columnList = "hash64_hi, hash64_lo"),
|
||||
@Index(name = "idx_image_hashes_hash64_hi", columnList = "hash64_hi"),
|
||||
@Index(name = "idx_image_hashes_hash64_lo", columnList = "hash64_lo")
|
||||
})
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@@ -26,10 +30,10 @@ public class ImageHashEntity {
|
||||
private FileEntity file;
|
||||
|
||||
@Column(name = "hash64_hi")
|
||||
private Integer hash64Hi;
|
||||
private Long hash64Hi;
|
||||
|
||||
@Column(name = "hash64_lo")
|
||||
private Integer hash64Lo;
|
||||
private Long hash64Lo;
|
||||
|
||||
@Column(name = "hash_algorithm", nullable = false)
|
||||
private String hashAlgorithm;
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
package ru.soune.nocopy.entity.file;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.*;
|
||||
import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
|
||||
import ru.soune.nocopy.entity.user.User;
|
||||
import ru.soune.nocopy.entity.user.UserContent;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Entity
|
||||
@Table(name = "image_protection")
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
@EntityListeners(AuditingEntityListener.class)
|
||||
public class ImageProtection {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long protectionId;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "user_id", nullable = false)
|
||||
@ToString.Exclude
|
||||
private User user;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "content_id", nullable = false)
|
||||
@ToString.Exclude
|
||||
private UserContent content;
|
||||
|
||||
@Column(name = "protection_method", nullable = false, length = 50)
|
||||
private String protectionMethod;
|
||||
|
||||
@Column(name = "protection_level", nullable = false)
|
||||
private Integer protectionLevel;
|
||||
|
||||
@Column(name = "is_active", nullable = false)
|
||||
private Boolean isActive = true;
|
||||
|
||||
@CreatedDate
|
||||
@Column(name = "applied_at", nullable = false, updatable = false)
|
||||
private LocalDateTime appliedAt;
|
||||
|
||||
@Column(name = "metadata", columnDefinition = "JSON")
|
||||
private String metadata;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package ru.soune.nocopy.entity.file;
|
||||
|
||||
public enum ProtectionStatus {
|
||||
NOT_PROTECTED,
|
||||
PROCESSING,
|
||||
PROTECTED,
|
||||
FAILED,
|
||||
FAILED_SAVE
|
||||
}
|
||||
Reference in New Issue
Block a user