summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-03 23:45:13 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-04 00:09:00 +0900
commitfdc81f395d9555da1cdbc81dbe34970f3e683247 (patch)
tree3c1119e200c3a594c719c848f9a5f50a242fcf03 /src/models
parentRefactor (diff)
downloadsharkey-fdc81f395d9555da1cdbc81dbe34970f3e683247.tar.gz
sharkey-fdc81f395d9555da1cdbc81dbe34970f3e683247.tar.bz2
sharkey-fdc81f395d9555da1cdbc81dbe34970f3e683247.zip
Enforce URI uniquness
Diffstat (limited to 'src/models')
-rw-r--r--src/models/drive-file.ts16
-rw-r--r--src/models/post.ts3
-rw-r--r--src/models/remote-user-object.ts15
3 files changed, 14 insertions, 20 deletions
diff --git a/src/models/drive-file.ts b/src/models/drive-file.ts
index fba1aebdae..c86570f0f7 100644
--- a/src/models/drive-file.ts
+++ b/src/models/drive-file.ts
@@ -6,6 +6,8 @@ import monkDb, { nativeDbConn } from '../db/mongodb';
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
+DriveFile.createIndex('metadata.uri', { sparse: true, unique: true });
+
export default DriveFile;
const getGridFSBucket = async (): Promise<mongodb.GridFSBucket> => {
@@ -18,17 +20,21 @@ const getGridFSBucket = async (): Promise<mongodb.GridFSBucket> => {
export { getGridFSBucket };
+export type IMetadata = {
+ properties: any;
+ userId: mongodb.ObjectID;
+ folderId: mongodb.ObjectID;
+ comment: string;
+ uri: string;
+};
+
export type IDriveFile = {
_id: mongodb.ObjectID;
uploadDate: Date;
md5: string;
filename: string;
contentType: string;
- metadata: {
- properties: any;
- userId: mongodb.ObjectID;
- folderId: mongodb.ObjectID;
- }
+ metadata: IMetadata;
};
export function validateFileName(name: string): boolean {
diff --git a/src/models/post.ts b/src/models/post.ts
index 798c18e4b1..2f2b51b946 100644
--- a/src/models/post.ts
+++ b/src/models/post.ts
@@ -11,6 +11,8 @@ import { pack as packFile } from './drive-file';
const Post = db.get<IPost>('posts');
+Post.createIndex('uri', { sparse: true, unique: true });
+
export default Post;
export function isValidText(text: string): boolean {
@@ -49,6 +51,7 @@ export type IPost = {
heading: number;
speed: number;
};
+ uri: string;
};
/**
diff --git a/src/models/remote-user-object.ts b/src/models/remote-user-object.ts
deleted file mode 100644
index fb5b337c90..0000000000
--- a/src/models/remote-user-object.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as mongodb from 'mongodb';
-import db from '../db/mongodb';
-
-const RemoteUserObject = db.get<IRemoteUserObject>('remoteUserObjects');
-
-export default RemoteUserObject;
-
-export type IRemoteUserObject = {
- _id: mongodb.ObjectID;
- uri: string;
- object: {
- $ref: string;
- $id: mongodb.ObjectID;
- }
-};