summaryrefslogtreecommitdiff
path: root/src/models/blocking.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/blocking.ts')
-rw-r--r--src/models/blocking.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/models/blocking.ts b/src/models/blocking.ts
new file mode 100644
index 0000000000..9a6e4ce42d
--- /dev/null
+++ b/src/models/blocking.ts
@@ -0,0 +1,41 @@
+import * as mongo from 'mongodb';
+import db from '../db/mongodb';
+import isObjectId from '../misc/is-objectid';
+
+const Blocking = db.get<IBlocking>('blocking');
+Blocking.createIndex(['blockerId', 'blockeeId'], { unique: true });
+export default Blocking;
+
+export type IBlocking = {
+ _id: mongo.ObjectID;
+ createdAt: Date;
+ blockeeId: mongo.ObjectID;
+ blockerId: mongo.ObjectID;
+};
+
+/**
+ * Blockingを物理削除します
+ */
+export async function deleteBlocking(blocking: string | mongo.ObjectID | IBlocking) {
+ let f: IBlocking;
+
+ // Populate
+ if (isObjectId(blocking)) {
+ f = await Blocking.findOne({
+ _id: blocking
+ });
+ } else if (typeof blocking === 'string') {
+ f = await Blocking.findOne({
+ _id: new mongo.ObjectID(blocking)
+ });
+ } else {
+ f = blocking as IBlocking;
+ }
+
+ if (f == null) return;
+
+ // このBlockingを削除
+ await Blocking.remove({
+ _id: f._id
+ });
+}