From b0f9f39ed70299a208d1b388c72de8b7f3510cb7 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 4 Sep 2017 20:07:54 +0200 Subject: Begin user quota --- server/initializers/constants.ts | 10 +++++-- server/initializers/database.ts | 1 + server/initializers/installer.ts | 9 +++--- .../migrations/0070-user-video-quota.ts | 32 ++++++++++++++++++++++ 4 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 server/initializers/migrations/0070-user-video-quota.ts (limited to 'server/initializers') diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 50a939083..b93a85859 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -15,7 +15,7 @@ import { // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 65 +const LAST_MIGRATION_VERSION = 70 // --------------------------------------------------------------------------- @@ -77,7 +77,10 @@ const CONFIG = { }, SIGNUP: { ENABLED: config.get('signup.enabled'), - LIMIT: config.get('signup.limit') + LIMIT: config.get('signup.limit'), + }, + USER: { + VIDEO_QUOTA: config.get('user.video_quota') }, TRANSCODING: { ENABLED: config.get('transcoding.enabled'), @@ -97,7 +100,8 @@ CONFIG.WEBSERVER.HOST = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT const CONSTRAINTS_FIELDS = { USERS: { USERNAME: { min: 3, max: 20 }, // Length - PASSWORD: { min: 6, max: 255 } // Length + PASSWORD: { min: 6, max: 255 }, // Length + VIDEO_QUOTA: { min: -1 } }, VIDEO_ABUSES: { REASON: { min: 2, max: 300 } // Length diff --git a/server/initializers/database.ts b/server/initializers/database.ts index c0df2b63a..d04c8db1b 100644 --- a/server/initializers/database.ts +++ b/server/initializers/database.ts @@ -1,5 +1,6 @@ import { join } from 'path' import { flattenDepth } from 'lodash' +require('pg').defaults.parseInt8 = true // Avoid BIGINT to be converted to string import * as Sequelize from 'sequelize' import * as Promise from 'bluebird' diff --git a/server/initializers/installer.ts b/server/initializers/installer.ts index 43b5adfed..10b74b85f 100644 --- a/server/initializers/installer.ts +++ b/server/initializers/installer.ts @@ -38,12 +38,12 @@ function removeCacheDirectories () { } function createDirectoriesIfNotExist () { - const storages = CONFIG.STORAGE + const storage = CONFIG.STORAGE const cacheDirectories = CACHE.DIRECTORIES const tasks = [] - Object.keys(storages).forEach(key => { - const dir = storages[key] + Object.keys(storage).forEach(key => { + const dir = storage[key] tasks.push(mkdirpPromise(dir)) }) @@ -112,7 +112,8 @@ function createOAuthAdminIfNotExist () { username, email, password, - role + role, + videoQuota: -1 } return db.User.create(userData, createOptions).then(createdUser => { diff --git a/server/initializers/migrations/0070-user-video-quota.ts b/server/initializers/migrations/0070-user-video-quota.ts new file mode 100644 index 000000000..dec4d46dd --- /dev/null +++ b/server/initializers/migrations/0070-user-video-quota.ts @@ -0,0 +1,32 @@ +import * as Sequelize from 'sequelize' +import * as Promise from 'bluebird' + +function up (utils: { + transaction: Sequelize.Transaction, + queryInterface: Sequelize.QueryInterface, + sequelize: Sequelize.Sequelize, + db: any +}): Promise { + const q = utils.queryInterface + + const data = { + type: Sequelize.BIGINT, + allowNull: false, + defaultValue: -1 + } + + return q.addColumn('Users', 'videoQuota', data) + .then(() => { + data.defaultValue = null + return q.changeColumn('Users', 'videoQuota', data) + }) +} + +function down (options) { + throw new Error('Not implemented.') +} + +export { + up, + down +} -- cgit v1.2.3