summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2021-03-16 12:50:07 +0900
committerGitHub <noreply@github.com>2021-03-16 12:50:07 +0900
commitca4f026533adcab9ad0fcae0dd5d4549362e9458 (patch)
tree57086e44b228f701d6a618f630ee641865b8b68a /src/models
parentFix assets test and favicon type (#7344) (diff)
downloadsharkey-ca4f026533adcab9ad0fcae0dd5d4549362e9458.tar.gz
sharkey-ca4f026533adcab9ad0fcae0dd5d4549362e9458.tar.bz2
sharkey-ca4f026533adcab9ad0fcae0dd5d4549362e9458.zip
DB上で壊れたドライブファイルを無視するように (#7345)
Diffstat (limited to 'src/models')
-rw-r--r--src/models/repositories/drive-file.ts30
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);
}
}