summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-20 13:31:43 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-20 13:31:43 +0900
commit4953842ff1c65fc850c856e11598e9901ff7c6e1 (patch)
treef06129067250842ee44a975235a054cc27b3dc44 /src/models
parent:art: (diff)
downloadmisskey-4953842ff1c65fc850c856e11598e9901ff7c6e1.tar.gz
misskey-4953842ff1c65fc850c856e11598e9901ff7c6e1.tar.bz2
misskey-4953842ff1c65fc850c856e11598e9901ff7c6e1.zip
:v:
Diffstat (limited to 'src/models')
-rw-r--r--src/models/favorite.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/models/favorite.ts b/src/models/favorite.ts
index 5387b29457..d24833f191 100644
--- a/src/models/favorite.ts
+++ b/src/models/favorite.ts
@@ -1,5 +1,7 @@
import * as mongo from 'mongodb';
+import deepcopy = require('deepcopy');
import db from '../db/mongodb';
+import { pack as packNote } from './note';
const Favorite = db.get<IFavorite>('favorites');
Favorite.createIndex(['userId', 'noteId'], { unique: true });
@@ -38,3 +40,35 @@ export async function deleteFavorite(favorite: string | mongo.ObjectID | IFavori
_id: f._id
});
}
+
+/**
+ * Pack a favorite for API response
+ */
+export const pack = (
+ favorite: any,
+ me: any
+) => new Promise<any>(async (resolve, reject) => {
+ let _favorite: any;
+
+ // Populate the favorite if 'favorite' is ID
+ if (mongo.ObjectID.prototype.isPrototypeOf(favorite)) {
+ _favorite = await Favorite.findOne({
+ _id: favorite
+ });
+ } else if (typeof favorite === 'string') {
+ _favorite = await Favorite.findOne({
+ _id: new mongo.ObjectID(favorite)
+ });
+ } else {
+ _favorite = deepcopy(favorite);
+ }
+
+ // Rename _id to id
+ _favorite.id = _favorite._id;
+ delete _favorite._id;
+
+ // Populate note
+ _favorite.note = await packNote(_favorite.noteId, me);
+
+ resolve(_favorite);
+});