]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/initializers/database.ts
Type functions
[github/Chocobozzz/PeerTube.git] / server / initializers / database.ts
index 753a06669a107b131952c2763ef2c1c722f5a6fb..78ca5ab84879fb0361552fb1b5a5de6b372f9868 100644 (file)
@@ -1,17 +1,57 @@
-import fs = require('fs')
+import * as fs from 'fs'
 import { join } from 'path'
-import Sequelize = require('sequelize')
+import * as Sequelize from 'sequelize'
 
 import { CONFIG } from './constants'
 // Do not use barrel, we need to load database first
 import { logger } from '../helpers/logger'
 import { isTestInstance } from '../helpers/utils'
+import {
+  ApplicationModel,
+  AuthorModel,
+  JobModel,
+  OAuthClientModel,
+  OAuthTokenModel,
+  PodModel,
+  RequestModel,
+  RequestToPodModel,
+  RequestVideoEventModel,
+  RequestVideoQaduModel,
+  TagModel,
+  UserModel,
+  UserVideoRateModel,
+  VideoAbuseModel,
+  BlacklistedVideoModel,
+  VideoTagModel,
+  VideoModel
+} from '../models'
 
 const dbname = CONFIG.DATABASE.DBNAME
 const username = CONFIG.DATABASE.USERNAME
 const password = CONFIG.DATABASE.PASSWORD
 
-const database: any = {}
+const database: {
+  sequelize?: Sequelize.Sequelize,
+  init?: (silent: any, callback: any) => void,
+
+  Application?: ApplicationModel,
+  Author?: AuthorModel,
+  Job?: JobModel,
+  OAuthClient?: OAuthClientModel,
+  OAuthToken?: OAuthTokenModel,
+  Pod?: PodModel,
+  RequestToPod?: RequestToPodModel,
+  RequestVideoEvent?: RequestVideoEventModel,
+  RequestVideoQadu?: RequestVideoQaduModel,
+  Request?: RequestModel,
+  Tag?: TagModel,
+  UserVideoRate?: UserVideoRateModel,
+  User?: UserModel,
+  VideoAbuse?: VideoAbuseModel,
+  BlacklistedVideo?: BlacklistedVideoModel,
+  VideoTag?: VideoTagModel,
+  Video?: VideoModel
+} = {}
 
 const sequelize = new Sequelize(dbname, username, password, {
   dialect: 'postgres',
@@ -19,7 +59,7 @@ const sequelize = new Sequelize(dbname, username, password, {
   port: CONFIG.DATABASE.PORT,
   benchmark: isTestInstance(),
 
-  logging: function (message, benchmark) {
+  logging: function (message: string, benchmark: number) {
     let newMessage = message
     if (benchmark !== undefined) {
       newMessage += ' | ' + benchmark + 'ms'
@@ -31,13 +71,7 @@ const sequelize = new Sequelize(dbname, username, password, {
 
 database.sequelize = sequelize
 
-database.init = function (silent, callback) {
-  if (!callback) {
-    callback = silent
-    silent = false
-  }
-
-  if (!callback) callback = function () { /* empty */ }
+database.init = function (silent: boolean, callback: (err: Error) => void) {
 
   const modelDirectory = join(__dirname, '..', 'models')
   fs.readdir(modelDirectory, function (err, files) {
@@ -45,7 +79,12 @@ database.init = function (silent, callback) {
 
     files.filter(function (file) {
       // For all models but not utils.js
-      if (file === 'utils.js') return false
+      if (
+        file === 'index.js' ||
+        file === 'utils.js' ||
+        file.endsWith('-interface.js') ||
+        file.endsWith('.js.map')
+      ) return false
 
       return true
     })
@@ -69,4 +108,6 @@ database.init = function (silent, callback) {
 
 // ---------------------------------------------------------------------------
 
-module.exports = database
+export {
+  database
+}