diff options
Diffstat (limited to 'src/server/api/endpoints')
| -rw-r--r-- | src/server/api/endpoints/admin/get-table-stats.ts | 37 | ||||
| -rw-r--r-- | src/server/api/endpoints/i/update-email.ts | 11 | ||||
| -rw-r--r-- | src/server/api/endpoints/meta.ts | 2 |
3 files changed, 49 insertions, 1 deletions
diff --git a/src/server/api/endpoints/admin/get-table-stats.ts b/src/server/api/endpoints/admin/get-table-stats.ts new file mode 100644 index 0000000000..1abea18492 --- /dev/null +++ b/src/server/api/endpoints/admin/get-table-stats.ts @@ -0,0 +1,37 @@ +import define from '../../define'; +import { getConnection } from 'typeorm'; + +export const meta = { + requireCredential: false, + + desc: { + 'en-US': 'Get table stats' + }, + + tags: ['meta'], + + params: { + }, +}; + +export default define(meta, async () => { + const sizes = await + getConnection().query(` + SELECT relname AS "table", reltuples as "count", pg_total_relation_size(C.oid) AS "size" + FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) + WHERE nspname NOT IN ('pg_catalog', 'information_schema') + AND C.relkind <> 'i' + AND nspname !~ '^pg_toast';`) + .then(recs => { + const res = {} as Record<string, { count: number; size: number; }>; + for (const rec of recs) { + res[rec.table] = { + count: parseInt(rec.count, 10), + size: parseInt(rec.size, 10), + }; + } + return res; + }); + + return sizes; +}); diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts index 56284499d3..ca95e612a3 100644 --- a/src/server/api/endpoints/i/update-email.ts +++ b/src/server/api/endpoints/i/update-email.ts @@ -8,6 +8,7 @@ import * as bcrypt from 'bcryptjs'; import { Users, UserProfiles } from '../../../../models'; import { ensure } from '../../../../prelude/ensure'; import { sendEmail } from '../../../../services/send-email'; +import { ApiError } from '../../error'; export const meta = { requireCredential: true, @@ -27,6 +28,14 @@ export const meta = { email: { validator: $.optional.nullable.str }, + }, + + errors: { + incorrectPassword: { + message: 'Incorrect password.', + code: 'INCORRECT_PASSWORD', + id: 'e54c1d7e-e7d6-4103-86b6-0a95069b4ad3' + }, } }; @@ -37,7 +46,7 @@ export default define(meta, async (ps, user) => { const same = await bcrypt.compare(ps.password, profile.password!); if (!same) { - throw new Error('incorrect password'); + throw new ApiError(meta.errors.incorrectPassword); } await UserProfiles.update({ userId: user.id }, { diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts index d18543f56a..4da0c7476c 100644 --- a/src/server/api/endpoints/meta.ts +++ b/src/server/api/endpoints/meta.ts @@ -6,6 +6,7 @@ import { fetchMeta } from '../../../misc/fetch-meta'; import * as pkg from '../../../../package.json'; import { Emojis } from '../../../models'; import { types, bool } from '../../../misc/schema'; +import { getConnection } from 'typeorm'; export const meta = { stability: 'stable', @@ -114,6 +115,7 @@ export default define(meta, async (ps, me) => { machine: os.hostname(), os: os.platform(), node: process.version, + psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version), cpu: { model: os.cpus()[0].model, |