mirror of
https://github.com/immich-app/immich.git
synced 2025-12-20 09:15:35 +03:00
refactor: database types (#19624)
This commit is contained in:
@@ -11,9 +11,11 @@ import {
|
||||
CreateDateColumn,
|
||||
DeleteDateColumn,
|
||||
ForeignKeyColumn,
|
||||
Generated,
|
||||
Index,
|
||||
PrimaryGeneratedColumn,
|
||||
Table,
|
||||
Timestamp,
|
||||
UpdateDateColumn,
|
||||
} from 'src/sql-tools';
|
||||
import { ASSET_CHECKSUM_CONSTRAINT } from 'src/utils/database';
|
||||
@@ -60,7 +62,7 @@ import { ASSET_CHECKSUM_CONSTRAINT } from 'src/utils/database';
|
||||
// For all assets, each originalpath must be unique per user and library
|
||||
export class AssetTable {
|
||||
@PrimaryGeneratedColumn()
|
||||
id!: string;
|
||||
id!: Generated<string>;
|
||||
|
||||
@Column()
|
||||
deviceAssetId!: string;
|
||||
@@ -78,13 +80,13 @@ export class AssetTable {
|
||||
originalPath!: string;
|
||||
|
||||
@Column({ type: 'timestamp with time zone', indexName: 'idx_asset_file_created_at' })
|
||||
fileCreatedAt!: Date;
|
||||
fileCreatedAt!: Timestamp;
|
||||
|
||||
@Column({ type: 'timestamp with time zone' })
|
||||
fileModifiedAt!: Date;
|
||||
fileModifiedAt!: Timestamp;
|
||||
|
||||
@Column({ type: 'boolean', default: false })
|
||||
isFavorite!: boolean;
|
||||
isFavorite!: Generated<boolean>;
|
||||
|
||||
@Column({ type: 'character varying', nullable: true })
|
||||
duration!: string | null;
|
||||
@@ -99,10 +101,10 @@ export class AssetTable {
|
||||
livePhotoVideoId!: string | null;
|
||||
|
||||
@UpdateDateColumn()
|
||||
updatedAt!: Date;
|
||||
updatedAt!: Generated<Timestamp>;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt!: Date;
|
||||
createdAt!: Generated<Timestamp>;
|
||||
|
||||
@Column({ index: true })
|
||||
originalFileName!: string;
|
||||
@@ -114,32 +116,32 @@ export class AssetTable {
|
||||
thumbhash!: Buffer | null;
|
||||
|
||||
@Column({ type: 'boolean', default: false })
|
||||
isOffline!: boolean;
|
||||
isOffline!: Generated<boolean>;
|
||||
|
||||
@ForeignKeyColumn(() => LibraryTable, { onDelete: 'CASCADE', onUpdate: 'CASCADE', nullable: true })
|
||||
libraryId?: string | null;
|
||||
libraryId!: string | null;
|
||||
|
||||
@Column({ type: 'boolean', default: false })
|
||||
isExternal!: boolean;
|
||||
isExternal!: Generated<boolean>;
|
||||
|
||||
@DeleteDateColumn()
|
||||
deletedAt!: Date | null;
|
||||
deletedAt!: Timestamp | null;
|
||||
|
||||
@Column({ type: 'timestamp with time zone' })
|
||||
localDateTime!: Date;
|
||||
localDateTime!: Timestamp;
|
||||
|
||||
@ForeignKeyColumn(() => StackTable, { nullable: true, onDelete: 'SET NULL', onUpdate: 'CASCADE' })
|
||||
stackId?: string | null;
|
||||
stackId!: string | null;
|
||||
|
||||
@Column({ type: 'uuid', nullable: true, indexName: 'IDX_assets_duplicateId' })
|
||||
duplicateId!: string | null;
|
||||
|
||||
@Column({ enum: assets_status_enum, default: AssetStatus.ACTIVE })
|
||||
status!: AssetStatus;
|
||||
status!: Generated<AssetStatus>;
|
||||
|
||||
@UpdateIdColumn({ indexName: 'IDX_assets_update_id' })
|
||||
updateId?: string;
|
||||
updateId!: Generated<string>;
|
||||
|
||||
@Column({ enum: asset_visibility_enum, default: AssetVisibility.TIMELINE })
|
||||
visibility!: AssetVisibility;
|
||||
visibility!: Generated<AssetVisibility>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user