This commit is contained in:
syuilo 2018-03-28 09:10:05 +09:00
parent 3c553ba674
commit 0cc5ca598a
12 changed files with 166 additions and 43 deletions

View File

@ -1,8 +1,16 @@
import * as mongo from 'mongodb';
import db from '../../db/mongodb';
const collection = db.get('access_tokens');
const AccessToken = db.get<IAccessTokens>('accessTokens');
AccessToken.createIndex('token');
AccessToken.createIndex('hash');
export default AccessToken;
(collection as any).createIndex('token'); // fuck type definition
(collection as any).createIndex('hash'); // fuck type definition
export default collection as any; // fuck type definition
export type IAccessTokens = {
_id: mongo.ObjectID;
createdAt: Date;
appId: mongo.ObjectID;
userId: mongo.ObjectID;
token: string;
hash: string;
};

View File

@ -5,16 +5,22 @@ import db from '../../db/mongodb';
import config from '../../conf';
const App = db.get<IApp>('apps');
App.createIndex('name_id');
App.createIndex('name_id_lower');
App.createIndex('nameId');
App.createIndex('nameIdLower');
App.createIndex('secret');
export default App;
export type IApp = {
_id: mongo.ObjectID;
created_at: Date;
user_id: mongo.ObjectID;
createdAt: Date;
userId: mongo.ObjectID;
secret: string;
name: string;
nameId: string;
nameIdLower: string;
description: string;
permission: string;
callbackUrl: string;
};
export function isValidNameId(nameId: string): boolean {
@ -70,7 +76,7 @@ export const pack = (
_app.id = _app._id;
delete _app._id;
delete _app.name_id_lower;
delete _app.nameIdLower;
// Visible by only owner
if (!opts.includeSecret) {
@ -84,8 +90,8 @@ export const pack = (
if (me) {
// 既に連携しているか
const exist = await AccessToken.count({
app_id: _app.id,
user_id: me,
appId: _app.id,
userId: me,
}, {
limit: 1
});

View File

@ -1,3 +0,0 @@
import db from '../../db/mongodb';
export default db.get('appdata') as any; // fuck type definition

View File

@ -3,11 +3,15 @@ import deepcopy = require('deepcopy');
import db from '../../db/mongodb';
import { pack as packApp } from './app';
const AuthSession = db.get('auth_sessions');
const AuthSession = db.get<IAuthSession>('authSessions');
export default AuthSession;
export interface IAuthSession {
_id: mongo.ObjectID;
createdAt: Date;
appId: mongo.ObjectID;
userId: mongo.ObjectID;
token: string;
}
/**
@ -24,7 +28,6 @@ export const pack = (
let _session: any;
// TODO: Populate session if it ID
_session = deepcopy(session);
// Me
@ -39,7 +42,7 @@ export const pack = (
delete _session._id;
// Populate app
_session.app = await packApp(_session.app_id, me);
_session.app = await packApp(_session.appId, me);
resolve(_session);
});

View File

@ -1,3 +1,14 @@
import * as mongo from 'mongodb';
import db from '../../db/mongodb';
export default db.get('channel_watching') as any; // fuck type definition
const ChannelWatching = db.get<IChannelWatching>('channelWatching');
export default ChannelWatching;
export interface IChannelWatching {
_id: mongo.ObjectID;
createdAt: Date;
deletedAt: Date;
channel_id: mongo.ObjectID;
userId: mongo.ObjectID;
}

View File

@ -9,10 +9,11 @@ export default Channel;
export type IChannel = {
_id: mongo.ObjectID;
created_at: Date;
createdAt: Date;
title: string;
user_id: mongo.ObjectID;
userId: mongo.ObjectID;
index: number;
watchingCount: number;
};
/**
@ -47,7 +48,7 @@ export const pack = (
delete _channel._id;
// Remove needless properties
delete _channel.user_id;
delete _channel.userId;
// Me
const meId: mongo.ObjectID = me
@ -61,9 +62,9 @@ export const pack = (
if (me) {
//#region Watchしているかどうか
const watch = await Watching.findOne({
user_id: meId,
userId: meId,
channel_id: _channel.id,
deleted_at: { $exists: false }
deletedAt: { $exists: false }
});
_channel.is_watching = watch !== null;

View File

@ -4,14 +4,14 @@ import { pack as packFolder } from './drive-folder';
import config from '../../conf';
import monkDb, { nativeDbConn } from '../../db/mongodb';
const DriveFile = monkDb.get<IDriveFile>('drive_files.files');
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
export default DriveFile;
const getGridFSBucket = async (): Promise<mongodb.GridFSBucket> => {
const db = await nativeDbConn();
const bucket = new mongodb.GridFSBucket(db, {
bucketName: 'drive_files'
bucketName: 'driveFiles'
});
return bucket;
};
@ -26,8 +26,8 @@ export type IDriveFile = {
contentType: string;
metadata: {
properties: any;
user_id: mongodb.ObjectID;
folder_id: mongodb.ObjectID;
userId: mongodb.ObjectID;
folderId: mongodb.ObjectID;
}
};
@ -79,7 +79,7 @@ export const pack = (
let _target: any = {};
_target.id = _file._id;
_target.created_at = _file.uploadDate;
_target.createdAt = _file.uploadDate;
_target.name = _file.filename;
_target.type = _file.contentType;
_target.datasize = _file.length;
@ -92,9 +92,9 @@ export const pack = (
if (_target.properties == null) _target.properties = {};
if (opts.detail) {
if (_target.folder_id) {
if (_target.folderId) {
// Populate folder
_target.folder = await packFolder(_target.folder_id, {
_target.folder = await packFolder(_target.folderId, {
detail: true
});
}

View File

@ -8,10 +8,10 @@ export default DriveFolder;
export type IDriveFolder = {
_id: mongo.ObjectID;
created_at: Date;
createdAt: Date;
name: string;
user_id: mongo.ObjectID;
parent_id: mongo.ObjectID;
userId: mongo.ObjectID;
parentId: mongo.ObjectID;
};
export function isValidFolderName(name: string): boolean {
@ -55,20 +55,20 @@ export const pack = (
if (opts.detail) {
const childFoldersCount = await DriveFolder.count({
parent_id: _folder.id
parentId: _folder.id
});
const childFilesCount = await DriveFile.count({
'metadata.folder_id': _folder.id
'metadata.folderId': _folder.id
});
_folder.folders_count = childFoldersCount;
_folder.files_count = childFilesCount;
}
if (opts.detail && _folder.parent_id) {
if (opts.detail && _folder.parentId) {
// Populate parent folder
_folder.parent = await pack(_folder.parent_id, {
_folder.parent = await pack(_folder.parentId, {
detail: true
});
}

View File

@ -1,3 +0,0 @@
import db from '../../db/mongodb';
export default db.get('drive_tags') as any; // fuck type definition

View File

@ -1,3 +1,12 @@
import * as mongo from 'mongodb';
import db from '../../db/mongodb';
export default db.get('favorites') as any; // fuck type definition
const Favorites = db.get<IFavorites>('favorites');
export default Favorites;
export type IFavorites = {
_id: mongo.ObjectID;
createdAt: Date;
userId: mongo.ObjectID;
postId: mongo.ObjectID;
};

View File

@ -1,3 +1,13 @@
import * as mongo from 'mongodb';
import db from '../../db/mongodb';
export default db.get('following') as any; // fuck type definition
const Following = db.get<IFollowing>('following');
export default Following;
export type IFollowing = {
_id: mongo.ObjectID;
createdAt: Date;
deletedAt: Date;
followeeId: mongo.ObjectID;
followerId: mongo.ObjectID;
};

View File

@ -0,0 +1,81 @@
db.access_tokens.renameCollection('accessTokens');
db.accessTokens.update({}, {
$rename: {
created_at: 'createdAt',
app_id: 'appId',
user_id: 'userId',
}
}, false, true);
db.apps.update({}, {
$rename: {
created_at: 'createdAt',
user_id: 'userId',
name_id: 'nameId',
name_id_lower: 'nameIdLower',
callback_url: 'callbackUrl',
}
}, false, true);
db.auth_sessions.renameCollection('authSessions');
db.authSessions.update({}, {
$rename: {
created_at: 'createdAt',
app_id: 'appId',
user_id: 'userId',
}
}, false, true);
db.channel_watching.renameCollection('channelWatching');
db.channelWatching.update({}, {
$rename: {
created_at: 'createdAt',
deleted_at: 'deletedAt',
channel_id: 'channelId',
user_id: 'userId',
}
}, false, true);
db.channels.update({}, {
$rename: {
created_at: 'createdAt',
user_id: 'userId',
watching_count: 'watchingCount'
}
}, false, true);
db.drive_files.files.renameCollection('driveFiles.files');
db.drive_files.chunks.renameCollection('driveFiles.chunks');
db.driveFiles.files.update({}, {
$rename: {
'metadata.user_id': 'metadata.userId',
'metadata.folder_id': 'metadata.folderId',
'metadata.properties.average_color': 'metadata.properties.avgColor'
}
}, false, true);
db.drive_folders.renameCollection('driveFolders');
db.driveFolders.update({}, {
$rename: {
created_at: 'createdAt',
user_id: 'userId',
parent_id: 'parentId',
}
}, false, true);
db.favorites.update({}, {
$rename: {
created_at: 'createdAt',
user_id: 'userId',
post_id: 'postId',
}
}, false, true);
db.following.update({}, {
$rename: {
created_at: 'createdAt',
deleted_at: 'deletedAt',
followee_id: 'followeeId',
follower_id: 'followerId',
}
}, false, true);