diff --git a/server/entity/Media.ts b/server/entity/Media.ts index 47a3ed9c..1941162a 100644 --- a/server/entity/Media.ts +++ b/server/entity/Media.ts @@ -132,10 +132,23 @@ class Media { @UpdateDateColumn() public updatedAt: Date; + /** + * The `lastSeasonChange` column stores the date and time when the media was added to the library. + * It needs to be database-aware because SQLite supports `datetime` while PostgreSQL supports `timestamp with timezone (timestampz)`. + */ @DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }) public lastSeasonChange: Date; - @DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }) + /** + * The `mediaAddedAt` column stores the date and time when the media was added to the library. + * It needs to be database-aware because SQLite supports `datetime` while PostgreSQL supports `timestamp with timezone (timestampz)`. + * This column is nullable because it can be null when the media is not yet synced to the library. + */ + @DbAwareColumn({ + type: 'datetime', + default: () => 'CURRENT_TIMESTAMP', + nullable: true, + }) public mediaAddedAt: Date; @Column({ nullable: true, type: 'int' }) diff --git a/server/utils/DbColumnHelper.ts b/server/utils/DbColumnHelper.ts index 4bdb00c9..1c030b92 100644 --- a/server/utils/DbColumnHelper.ts +++ b/server/utils/DbColumnHelper.ts @@ -2,7 +2,7 @@ import { isPgsql } from '@server/datasource'; import type { ColumnOptions, ColumnType } from 'typeorm'; import { Column } from 'typeorm'; const pgTypeMapping: { [key: string]: ColumnType } = { - datetime: 'timestamp without time zone', + datetime: 'timestamp with time zone', }; export function resolveDbType(pgType: ColumnType): ColumnType {