refactor: database types (#19624)

This commit is contained in:
Jason Rasmussen
2025-06-30 13:19:16 -04:00
committed by GitHub
parent 09cbc5d3f4
commit e60bc3c304
99 changed files with 518 additions and 889 deletions

View File

@@ -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>;
}