summaryrefslogtreecommitdiff
path: root/src/models/drive-file-thumbnail.ts
diff options
context:
space:
mode:
authorrinsuki <428rinsuki+git@gmail.com>2018-05-17 07:52:24 +0900
committerrinsuki <428rinsuki+git@gmail.com>2018-05-17 07:52:24 +0900
commit829b4012e6dc14eb64a3d8f60826fe9b6a41b40d (patch)
tree42ac37f323db349dca9316e6fdb39fc33b860686 /src/models/drive-file-thumbnail.ts
parentadd yarn.lock to gitignore (diff)
parentUpdate deliver.ts (diff)
downloadmisskey-829b4012e6dc14eb64a3d8f60826fe9b6a41b40d.tar.gz
misskey-829b4012e6dc14eb64a3d8f60826fe9b6a41b40d.tar.bz2
misskey-829b4012e6dc14eb64a3d8f60826fe9b6a41b40d.zip
Merge branch 'master' into fix/yarn-lock-ignore
Diffstat (limited to 'src/models/drive-file-thumbnail.ts')
-rw-r--r--src/models/drive-file-thumbnail.ts61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/models/drive-file-thumbnail.ts b/src/models/drive-file-thumbnail.ts
new file mode 100644
index 0000000000..46de24379f
--- /dev/null
+++ b/src/models/drive-file-thumbnail.ts
@@ -0,0 +1,61 @@
+import * as mongo from 'mongodb';
+import monkDb, { nativeDbConn } from '../db/mongodb';
+
+const DriveFileThumbnail = monkDb.get<IDriveFileThumbnail>('driveFileThumbnails.files');
+DriveFileThumbnail.createIndex('metadata.originalId', { sparse: true, unique: true });
+export default DriveFileThumbnail;
+
+export const DriveFileThumbnailChunk = monkDb.get('driveFileThumbnails.chunks');
+
+export const getDriveFileThumbnailBucket = async (): Promise<mongo.GridFSBucket> => {
+ const db = await nativeDbConn();
+ const bucket = new mongo.GridFSBucket(db, {
+ bucketName: 'driveFileThumbnails'
+ });
+ return bucket;
+};
+
+export type IMetadata = {
+ originalId: mongo.ObjectID;
+};
+
+export type IDriveFileThumbnail = {
+ _id: mongo.ObjectID;
+ uploadDate: Date;
+ md5: string;
+ filename: string;
+ contentType: string;
+ metadata: IMetadata;
+};
+
+/**
+ * DriveFileThumbnailを物理削除します
+ */
+export async function deleteDriveFileThumbnail(driveFile: string | mongo.ObjectID | IDriveFileThumbnail) {
+ let d: IDriveFileThumbnail;
+
+ // Populate
+ if (mongo.ObjectID.prototype.isPrototypeOf(driveFile)) {
+ d = await DriveFileThumbnail.findOne({
+ _id: driveFile
+ });
+ } else if (typeof driveFile === 'string') {
+ d = await DriveFileThumbnail.findOne({
+ _id: new mongo.ObjectID(driveFile)
+ });
+ } else {
+ d = driveFile as IDriveFileThumbnail;
+ }
+
+ if (d == null) return;
+
+ // このDriveFileThumbnailのチャンクをすべて削除
+ await DriveFileThumbnailChunk.remove({
+ files_id: d._id
+ });
+
+ // このDriveFileThumbnailを削除
+ await DriveFileThumbnail.remove({
+ _id: d._id
+ });
+}