diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-06 07:14:43 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-06 07:14:43 +0900 |
| commit | 8f714b5b126226346af850337566f0f70bd02d4f (patch) | |
| tree | f647ad5b28e5a4e74a7f7501c09597a1f8f11a81 /src/server/api/endpoints | |
| parent | Clean up (diff) | |
| download | misskey-8f714b5b126226346af850337566f0f70bd02d4f.tar.gz misskey-8f714b5b126226346af850337566f0f70bd02d4f.tar.bz2 misskey-8f714b5b126226346af850337566f0f70bd02d4f.zip | |
ドライブ容量の設定をDBに保存するようにしたりリファクタリングしたり
Diffstat (limited to 'src/server/api/endpoints')
| -rw-r--r-- | src/server/api/endpoints/admin/update-meta.ts | 26 | ||||
| -rw-r--r-- | src/server/api/endpoints/aggregation/hashtags.ts | 6 | ||||
| -rw-r--r-- | src/server/api/endpoints/drive.ts | 6 | ||||
| -rw-r--r-- | src/server/api/endpoints/hashtags/trend.ts | 6 | ||||
| -rw-r--r-- | src/server/api/endpoints/meta.ts | 27 | ||||
| -rw-r--r-- | src/server/api/endpoints/notes/create.ts | 6 | ||||
| -rw-r--r-- | src/server/api/endpoints/stats.ts | 6 |
7 files changed, 55 insertions, 28 deletions
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts index a0f2b329aa..4c4a3ac85c 100644 --- a/src/server/api/endpoints/admin/update-meta.ts +++ b/src/server/api/endpoints/admin/update-meta.ts @@ -65,7 +65,23 @@ export const meta = { desc: { 'ja-JP': '投稿の最大文字数' } - } + }, + + localDriveCapacityMb: { + validator: $.num.optional.min(0), + desc: { + 'ja-JP': 'ローカルユーザーひとりあたりのドライブ容量 (メガバイト単位)', + 'en-US': 'Drive capacity of a local user (MB)' + } + }, + + remoteDriveCapacityMb: { + validator: $.num.optional.min(0), + desc: { + 'ja-JP': 'リモートユーザーひとりあたりのドライブ容量 (メガバイト単位)', + 'en-US': 'Drive capacity of a remote user (MB)' + } + }, } }; @@ -104,6 +120,14 @@ export default define(meta, (ps) => new Promise(async (res, rej) => { set.maxNoteTextLength = ps.maxNoteTextLength; } + if (ps.localDriveCapacityMb !== undefined) { + set.localDriveCapacityMb = ps.localDriveCapacityMb; + } + + if (ps.remoteDriveCapacityMb !== undefined) { + set.remoteDriveCapacityMb = ps.remoteDriveCapacityMb; + } + await Meta.update({}, { $set: set }, { upsert: true }); diff --git a/src/server/api/endpoints/aggregation/hashtags.ts b/src/server/api/endpoints/aggregation/hashtags.ts index 59706908fa..f8fc7162f5 100644 --- a/src/server/api/endpoints/aggregation/hashtags.ts +++ b/src/server/api/endpoints/aggregation/hashtags.ts @@ -1,14 +1,14 @@ import Note from '../../../../models/note'; -import Meta from '../../../../models/meta'; import define from '../../define'; +import fetchMeta from '../../../../misc/fetch-meta'; export const meta = { requireCredential: false, }; export default define(meta, (ps) => new Promise(async (res, rej) => { - const meta = await Meta.findOne({}); - const hidedTags = meta ? (meta.hidedTags || []).map(t => t.toLowerCase()) : []; + const instance = await fetchMeta(); + const hidedTags = instance.hidedTags.map(t => t.toLowerCase()); const span = 1000 * 60 * 60 * 24 * 7; // 1週間 diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts index 43fe771385..3480fe6002 100644 --- a/src/server/api/endpoints/drive.ts +++ b/src/server/api/endpoints/drive.ts @@ -1,6 +1,6 @@ import DriveFile from '../../../models/drive-file'; -import config from '../../../config'; import define from '../define'; +import fetchMeta from '../../../misc/fetch-meta'; export const meta = { desc: { @@ -14,6 +14,8 @@ export const meta = { }; export default define(meta, (ps, user) => new Promise(async (res, rej) => { + const instance = await fetchMeta(); + // Calculate drive usage const usage = await DriveFile .aggregate([{ @@ -39,7 +41,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { }); res({ - capacity: 1024 * 1024 * config.localDriveCapacityMb, + capacity: 1024 * 1024 * instance.localDriveCapacityMb, usage: usage }); })); diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts index 02d398a683..ed4c8e337f 100644 --- a/src/server/api/endpoints/hashtags/trend.ts +++ b/src/server/api/endpoints/hashtags/trend.ts @@ -1,7 +1,7 @@ import Note from '../../../../models/note'; import { erase } from '../../../../prelude/array'; -import Meta from '../../../../models/meta'; import define from '../../define'; +import fetchMeta from '../../../../misc/fetch-meta'; /* トレンドに載るためには「『直近a分間のユニーク投稿数が今からa分前~今からb分前の間のユニーク投稿数のn倍以上』のハッシュタグの上位5位以内に入る」ことが必要 @@ -20,8 +20,8 @@ export const meta = { }; export default define(meta, () => new Promise(async (res, rej) => { - const meta = await Meta.findOne({}); - const hidedTags = meta ? (meta.hidedTags || []).map(t => t.toLowerCase()) : []; + const instance = await fetchMeta(); + const hidedTags = instance.hidedTags.map(t => t.toLowerCase()); //#region 1. 直近Aの内に投稿されたハッシュタグ(とユーザーのペア)を集計 const data = await Note.aggregate([{ diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index 90a5952e9f..f7a5ed4f16 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -1,9 +1,9 @@ import $ from 'cafy'; import * as os from 'os'; import config from '../../../config'; -import Meta from '../../../models/meta'; import Emoji from '../../../models/emoji'; import define from '../define'; +import fetchMeta from '../../../misc/fetch-meta'; const pkg = require('../../../../package.json'); const client = require('../../../../built/client/meta.json'); @@ -27,7 +27,7 @@ export const meta = { }; export default define(meta, (ps, me) => new Promise(async (res, rej) => { - const met: any = (await Meta.findOne()) || {}; + const instance = await fetchMeta(); const emojis = await Emoji.find({ host: null }, { fields: { @@ -41,8 +41,8 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { version: pkg.version, clientVersion: client.version, - name: met.name || 'Misskey', - description: met.description, + name: instance.name, + description: instance.description, secure: config.https != null, machine: os.hostname(), @@ -54,21 +54,22 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { cores: os.cpus().length }, - broadcasts: met.broadcasts || [], - disableRegistration: met.disableRegistration, - disableLocalTimeline: met.disableLocalTimeline, - driveCapacityPerLocalUserMb: config.localDriveCapacityMb, + broadcasts: instance.broadcasts || [], + disableRegistration: instance.disableRegistration, + disableLocalTimeline: instance.disableLocalTimeline, + driveCapacityPerLocalUserMb: instance.localDriveCapacityMb, + driveCapacityPerRemoteUserMb: instance.remoteDriveCapacityMb, recaptchaSitekey: config.recaptcha ? config.recaptcha.site_key : null, swPublickey: config.sw ? config.sw.public_key : null, - hidedTags: (me && me.isAdmin) ? met.hidedTags : undefined, - bannerUrl: met.bannerUrl, - maxNoteTextLength: met.maxNoteTextLength || 1000, + hidedTags: (me && me.isAdmin) ? instance.hidedTags : undefined, + bannerUrl: instance.bannerUrl, + maxNoteTextLength: instance.maxNoteTextLength, emojis: emojis, features: ps.detail ? { - registration: !met.disableRegistration, - localTimeLine: !met.disableLocalTimeline, + registration: !instance.disableRegistration, + localTimeLine: !instance.disableLocalTimeline, elasticsearch: config.elasticsearch ? true : false, recaptcha: config.recaptcha ? true : false, objectStorage: config.drive && config.drive.storage === 'minio', diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts index f4d7e96265..4f031aa43d 100644 --- a/src/server/api/endpoints/notes/create.ts +++ b/src/server/api/endpoints/notes/create.ts @@ -6,13 +6,13 @@ import User, { IUser } from '../../../../models/user'; import DriveFile, { IDriveFile } from '../../../../models/drive-file'; import create from '../../../../services/note/create'; import define from '../../define'; -import Meta from '../../../../models/meta'; +import fetchMeta from '../../../../misc/fetch-meta'; let maxNoteTextLength = 1000; setInterval(() => { - Meta.findOne({}).then(m => { - if (m.maxNoteTextLength) maxNoteTextLength = m.maxNoteTextLength; + fetchMeta().then(m => { + maxNoteTextLength = m.maxNoteTextLength; }); }, 3000); diff --git a/src/server/api/endpoints/stats.ts b/src/server/api/endpoints/stats.ts index 773a8f7a81..79e2fdf5e8 100644 --- a/src/server/api/endpoints/stats.ts +++ b/src/server/api/endpoints/stats.ts @@ -1,7 +1,7 @@ -import Meta from '../../../models/meta'; import define from '../define'; import driveChart from '../../../chart/drive'; import federationChart from '../../../chart/federation'; +import fetchMeta from '../../../misc/fetch-meta'; export const meta = { requireCredential: false, @@ -15,9 +15,9 @@ export const meta = { }; export default define(meta, () => new Promise(async (res, rej) => { - const meta = await Meta.findOne(); + const instance = await fetchMeta(); - const stats: any = meta ? meta.stats : {}; + const stats: any = instance.stats; const driveStats = await driveChart.getChart('hour', 1); stats.driveUsageLocal = driveStats.local.totalSize[0]; |