diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2021-03-16 12:50:07 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-16 12:50:07 +0900 |
| commit | ca4f026533adcab9ad0fcae0dd5d4549362e9458 (patch) | |
| tree | 57086e44b228f701d6a618f630ee641865b8b68a /src | |
| parent | Fix assets test and favicon type (#7344) (diff) | |
| download | sharkey-ca4f026533adcab9ad0fcae0dd5d4549362e9458.tar.gz sharkey-ca4f026533adcab9ad0fcae0dd5d4549362e9458.tar.bz2 sharkey-ca4f026533adcab9ad0fcae0dd5d4549362e9458.zip | |
DB上で壊れたドライブファイルを無視するように (#7345)
Diffstat (limited to 'src')
| -rw-r--r-- | src/models/repositories/drive-file.ts | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/models/repositories/drive-file.ts b/src/models/repositories/drive-file.ts index bc1e37489c..62416f69ea 100644 --- a/src/models/repositories/drive-file.ts +++ b/src/models/repositories/drive-file.ts @@ -12,6 +12,12 @@ import { fetchMeta } from '../../misc/fetch-meta'; export type PackedDriveFile = SchemaType<typeof packedDriveFileSchema>; +type PackOptions = { + detail?: boolean, + self?: boolean, + withUser?: boolean, +}; + @EntityRepository(DriveFile) export class DriveFileRepository extends Repository<DriveFile> { public validateFileName(name: string): boolean { @@ -89,20 +95,19 @@ export class DriveFileRepository extends Repository<DriveFile> { return parseInt(sum, 10) || 0; } + public async pack(src: DriveFile['id'], options?: PackOptions): Promise<PackedDriveFile | null>; + public async pack(src: DriveFile, options?: PackOptions): Promise<PackedDriveFile>; public async pack( src: DriveFile['id'] | DriveFile, - options?: { - detail?: boolean, - self?: boolean, - withUser?: boolean, - } - ): Promise<PackedDriveFile> { + options?: PackOptions + ): Promise<PackedDriveFile | null> { const opts = Object.assign({ detail: false, self: false }, options); - const file = typeof src === 'object' ? src : await this.findOneOrFail(src); + const file = typeof src === 'object' ? src : await this.findOne(src); + if (file == null) return null; const meta = await fetchMeta(); @@ -128,15 +133,12 @@ export class DriveFileRepository extends Repository<DriveFile> { }); } - public packMany( + public async packMany( files: any[], - options?: { - detail?: boolean - self?: boolean, - withUser?: boolean, - } + options?: PackOptions ) { - return Promise.all(files.map(f => this.pack(f, options))); + const items = await Promise.all(files.map(f => this.pack(f, options))); + return items.filter(x => x != null); } } |