mirror of
https://github.com/Art051/immich.git
synced 2025-08-11 19:29:00 +00:00
feat(server): harden move file (#4361)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
@@ -5,6 +5,7 @@ import { AssetEntity } from './asset.entity';
|
||||
import { AuditEntity } from './audit.entity';
|
||||
import { ExifEntity } from './exif.entity';
|
||||
import { LibraryEntity } from './library.entity';
|
||||
import { MoveEntity } from './move.entity';
|
||||
import { PartnerEntity } from './partner.entity';
|
||||
import { PersonEntity } from './person.entity';
|
||||
import { SharedLinkEntity } from './shared-link.entity';
|
||||
@@ -21,6 +22,7 @@ export * from './asset.entity';
|
||||
export * from './audit.entity';
|
||||
export * from './exif.entity';
|
||||
export * from './library.entity';
|
||||
export * from './move.entity';
|
||||
export * from './partner.entity';
|
||||
export * from './person.entity';
|
||||
export * from './shared-link.entity';
|
||||
@@ -37,6 +39,7 @@ export const databaseEntities = [
|
||||
AssetFaceEntity,
|
||||
AuditEntity,
|
||||
ExifEntity,
|
||||
MoveEntity,
|
||||
PartnerEntity,
|
||||
PersonEntity,
|
||||
SharedLinkEntity,
|
||||
|
||||
37
server/src/infra/entities/move.entity.ts
Normal file
37
server/src/infra/entities/move.entity.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { Column, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
||||
|
||||
@Entity('move_history')
|
||||
// path lock (per entity)
|
||||
@Unique('UQ_entityId_pathType', ['entityId', 'pathType'])
|
||||
// new path lock (global)
|
||||
@Unique('UQ_newPath', ['newPath'])
|
||||
export class MoveEntity {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id!: string;
|
||||
|
||||
@Column({ type: 'varchar' })
|
||||
entityId!: string;
|
||||
|
||||
@Column({ type: 'varchar' })
|
||||
pathType!: PathType;
|
||||
|
||||
@Column({ type: 'varchar' })
|
||||
oldPath!: string;
|
||||
|
||||
@Column({ type: 'varchar' })
|
||||
newPath!: string;
|
||||
}
|
||||
|
||||
export enum AssetPathType {
|
||||
ORIGINAL = 'original',
|
||||
JPEG_THUMBNAIL = 'jpeg_thumbnail',
|
||||
WEBP_THUMBNAIL = 'webp_thumbnail',
|
||||
ENCODED_VIDEO = 'encoded_video',
|
||||
SIDECAR = 'sidecar',
|
||||
}
|
||||
|
||||
export enum PersonPathType {
|
||||
FACE = 'face',
|
||||
}
|
||||
|
||||
export type PathType = AssetPathType | PersonPathType;
|
||||
Reference in New Issue
Block a user