summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-10-31 11:17:24 +0900
committerGitHub <noreply@github.com>2018-10-31 11:17:24 +0900
commit5e3372e9329883aefa19fa572715077d79eac5be (patch)
treec259467122fa4d2add35aa413b4e9986ab6fd7ce /src/models
parentImplement /api/v1/instance (#3045) (diff)
parent良い感じに (diff)
downloadsharkey-5e3372e9329883aefa19fa572715077d79eac5be.tar.gz
sharkey-5e3372e9329883aefa19fa572715077d79eac5be.tar.bz2
sharkey-5e3372e9329883aefa19fa572715077d79eac5be.zip
Merge pull request #3047 from mei23/mei-1031-blokings-list
blockings list
Diffstat (limited to 'src/models')
-rw-r--r--src/models/blocking.ts41
-rw-r--r--src/models/mute.ts41
2 files changed, 82 insertions, 0 deletions
diff --git a/src/models/blocking.ts b/src/models/blocking.ts
index 2974b53554..3eace3989a 100644
--- a/src/models/blocking.ts
+++ b/src/models/blocking.ts
@@ -1,7 +1,12 @@
import * as mongo from 'mongodb';
import db from '../db/mongodb';
+import isObjectId from '../misc/is-objectid';
+const deepcopy = require('deepcopy');
+import { pack as packUser } from './user';
const Blocking = db.get<IBlocking>('blocking');
+Blocking.createIndex('blockerId');
+Blocking.createIndex('blockeeId');
Blocking.createIndex(['blockerId', 'blockeeId'], { unique: true });
export default Blocking;
@@ -11,3 +16,39 @@ export type IBlocking = {
blockeeId: mongo.ObjectID;
blockerId: mongo.ObjectID;
};
+
+export const packMany = async (
+ blockings: (string | mongo.ObjectID | IBlocking)[],
+ me?: string | mongo.ObjectID | IUser
+) => {
+ return (await Promise.all(blockings.map(x => pack(x, me)))).filter(x => x != null);
+};
+
+export const pack = (
+ blocking: any,
+ me?: any
+) => new Promise<any>(async (resolve, reject) => {
+ let _blocking: any;
+
+ // Populate the blocking if 'blocking' is ID
+ if (isObjectId(blocking)) {
+ _blocking = await Blocking.findOne({
+ _id: blocking
+ });
+ } else if (typeof blocking === 'string') {
+ _blocking = await Blocking.findOne({
+ _id: new mongo.ObjectID(blocking)
+ });
+ } else {
+ _blocking = deepcopy(blocking);
+ }
+
+ // Rename _id to id
+ _blocking.id = _blocking._id;
+ delete _blocking._id;
+
+ // Populate blockee
+ _blocking.blockee = await packUser(_blocking.blockeeId, me);
+
+ resolve(_blocking);
+});
diff --git a/src/models/mute.ts b/src/models/mute.ts
index 4bad3d3d31..58536d4b9c 100644
--- a/src/models/mute.ts
+++ b/src/models/mute.ts
@@ -1,7 +1,12 @@
import * as mongo from 'mongodb';
import db from '../db/mongodb';
+import isObjectId from '../misc/is-objectid';
+const deepcopy = require('deepcopy');
+import { pack as packUser } from './user';
const Mute = db.get<IMute>('mute');
+Mute.createIndex('muterId');
+Mute.createIndex('muteeId');
Mute.createIndex(['muterId', 'muteeId'], { unique: true });
export default Mute;
@@ -11,3 +16,39 @@ export interface IMute {
muterId: mongo.ObjectID;
muteeId: mongo.ObjectID;
}
+
+export const packMany = async (
+ mutes: (string | mongo.ObjectID | IMute)[],
+ me?: string | mongo.ObjectID | IUser
+) => {
+ return (await Promise.all(mutes.map(x => pack(x, me)))).filter(x => x != null);
+};
+
+export const pack = (
+ mute: any,
+ me?: any
+) => new Promise<any>(async (resolve, reject) => {
+ let _mute: any;
+
+ // Populate the mute if 'mute' is ID
+ if (isObjectId(mute)) {
+ _mute = await Mute.findOne({
+ _id: mute
+ });
+ } else if (typeof mute === 'string') {
+ _mute = await Mute.findOne({
+ _id: new mongo.ObjectID(mute)
+ });
+ } else {
+ _mute = deepcopy(mute);
+ }
+
+ // Rename _id to id
+ _mute.id = _mute._id;
+ delete _mute._id;
+
+ // Populate mutee
+ _mute.mutee = await packUser(_mute.muteeId, me);
+
+ resolve(_mute);
+});