diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-09-04 20:07:54 +0200 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-09-04 20:07:54 +0200 |
commit | b0f9f39ed70299a208d1b388c72de8b7f3510cb7 (patch) | |
tree | 4b7d388125265533ac2f6d4bf457d018617e1db6 /server/initializers | |
parent | e7dbeae8d915cdf4470ceb51c2724b04148b30b5 (diff) | |
download | PeerTube-b0f9f39ed70299a208d1b388c72de8b7f3510cb7.tar.gz PeerTube-b0f9f39ed70299a208d1b388c72de8b7f3510cb7.tar.zst PeerTube-b0f9f39ed70299a208d1b388c72de8b7f3510cb7.zip |
Begin user quota
Diffstat (limited to 'server/initializers')
-rw-r--r-- | server/initializers/constants.ts | 10 | ||||
-rw-r--r-- | server/initializers/database.ts | 1 | ||||
-rw-r--r-- | server/initializers/installer.ts | 9 | ||||
-rw-r--r-- | server/initializers/migrations/0070-user-video-quota.ts | 32 |
4 files changed, 45 insertions, 7 deletions
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 { | |||
15 | 15 | ||
16 | // --------------------------------------------------------------------------- | 16 | // --------------------------------------------------------------------------- |
17 | 17 | ||
18 | const LAST_MIGRATION_VERSION = 65 | 18 | const LAST_MIGRATION_VERSION = 70 |
19 | 19 | ||
20 | // --------------------------------------------------------------------------- | 20 | // --------------------------------------------------------------------------- |
21 | 21 | ||
@@ -77,7 +77,10 @@ const CONFIG = { | |||
77 | }, | 77 | }, |
78 | SIGNUP: { | 78 | SIGNUP: { |
79 | ENABLED: config.get<boolean>('signup.enabled'), | 79 | ENABLED: config.get<boolean>('signup.enabled'), |
80 | LIMIT: config.get<number>('signup.limit') | 80 | LIMIT: config.get<number>('signup.limit'), |
81 | }, | ||
82 | USER: { | ||
83 | VIDEO_QUOTA: config.get<number>('user.video_quota') | ||
81 | }, | 84 | }, |
82 | TRANSCODING: { | 85 | TRANSCODING: { |
83 | ENABLED: config.get<boolean>('transcoding.enabled'), | 86 | ENABLED: config.get<boolean>('transcoding.enabled'), |
@@ -97,7 +100,8 @@ CONFIG.WEBSERVER.HOST = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT | |||
97 | const CONSTRAINTS_FIELDS = { | 100 | const CONSTRAINTS_FIELDS = { |
98 | USERS: { | 101 | USERS: { |
99 | USERNAME: { min: 3, max: 20 }, // Length | 102 | USERNAME: { min: 3, max: 20 }, // Length |
100 | PASSWORD: { min: 6, max: 255 } // Length | 103 | PASSWORD: { min: 6, max: 255 }, // Length |
104 | VIDEO_QUOTA: { min: -1 } | ||
101 | }, | 105 | }, |
102 | VIDEO_ABUSES: { | 106 | VIDEO_ABUSES: { |
103 | REASON: { min: 2, max: 300 } // Length | 107 | 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 @@ | |||
1 | import { join } from 'path' | 1 | import { join } from 'path' |
2 | import { flattenDepth } from 'lodash' | 2 | import { flattenDepth } from 'lodash' |
3 | require('pg').defaults.parseInt8 = true // Avoid BIGINT to be converted to string | ||
3 | import * as Sequelize from 'sequelize' | 4 | import * as Sequelize from 'sequelize' |
4 | import * as Promise from 'bluebird' | 5 | import * as Promise from 'bluebird' |
5 | 6 | ||
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 () { | |||
38 | } | 38 | } |
39 | 39 | ||
40 | function createDirectoriesIfNotExist () { | 40 | function createDirectoriesIfNotExist () { |
41 | const storages = CONFIG.STORAGE | 41 | const storage = CONFIG.STORAGE |
42 | const cacheDirectories = CACHE.DIRECTORIES | 42 | const cacheDirectories = CACHE.DIRECTORIES |
43 | 43 | ||
44 | const tasks = [] | 44 | const tasks = [] |
45 | Object.keys(storages).forEach(key => { | 45 | Object.keys(storage).forEach(key => { |
46 | const dir = storages[key] | 46 | const dir = storage[key] |
47 | tasks.push(mkdirpPromise(dir)) | 47 | tasks.push(mkdirpPromise(dir)) |
48 | }) | 48 | }) |
49 | 49 | ||
@@ -112,7 +112,8 @@ function createOAuthAdminIfNotExist () { | |||
112 | username, | 112 | username, |
113 | email, | 113 | email, |
114 | password, | 114 | password, |
115 | role | 115 | role, |
116 | videoQuota: -1 | ||
116 | } | 117 | } |
117 | 118 | ||
118 | return db.User.create(userData, createOptions).then(createdUser => { | 119 | 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 @@ | |||
1 | import * as Sequelize from 'sequelize' | ||
2 | import * as Promise from 'bluebird' | ||
3 | |||
4 | function up (utils: { | ||
5 | transaction: Sequelize.Transaction, | ||
6 | queryInterface: Sequelize.QueryInterface, | ||
7 | sequelize: Sequelize.Sequelize, | ||
8 | db: any | ||
9 | }): Promise<void> { | ||
10 | const q = utils.queryInterface | ||
11 | |||
12 | const data = { | ||
13 | type: Sequelize.BIGINT, | ||
14 | allowNull: false, | ||
15 | defaultValue: -1 | ||
16 | } | ||
17 | |||
18 | return q.addColumn('Users', 'videoQuota', data) | ||
19 | .then(() => { | ||
20 | data.defaultValue = null | ||
21 | return q.changeColumn('Users', 'videoQuota', data) | ||
22 | }) | ||
23 | } | ||
24 | |||
25 | function down (options) { | ||
26 | throw new Error('Not implemented.') | ||
27 | } | ||
28 | |||
29 | export { | ||
30 | up, | ||
31 | down | ||
32 | } | ||