diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-03 23:45:13 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-04 00:09:00 +0900 |
| commit | fdc81f395d9555da1cdbc81dbe34970f3e683247 (patch) | |
| tree | 3c1119e200c3a594c719c848f9a5f50a242fcf03 /src/models | |
| parent | Refactor (diff) | |
| download | sharkey-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.ts | 16 | ||||
| -rw-r--r-- | src/models/post.ts | 3 | ||||
| -rw-r--r-- | src/models/remote-user-object.ts | 15 |
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; - } -}; |