]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/oauth/oauth-client.ts
Add expect message to ease debug
[github/Chocobozzz/PeerTube.git] / server / models / oauth / oauth-client.ts
index 9cc68771dad5983d959f93ea6de09094574676a5..457e846137f94a79f8a8dad70ae3c6e6e7e46a10 100644 (file)
@@ -1,86 +1,63 @@
-import * as Sequelize from 'sequelize'
+import { AllowNull, Column, CreatedAt, DataType, HasMany, Model, Table, UpdatedAt } from 'sequelize-typescript'
+import { AttributesOnly } from '@shared/typescript-utils'
+import { OAuthTokenModel } from './oauth-token'
 
-import { addMethodsToModel } from '../utils'
-import {
-  OAuthClientInstance,
-  OAuthClientAttributes,
-
-  OAuthClientMethods
-} from './oauth-client-interface'
-
-let OAuthClient: Sequelize.Model<OAuthClientInstance, OAuthClientAttributes>
-let countTotal: OAuthClientMethods.CountTotal
-let loadFirstClient: OAuthClientMethods.LoadFirstClient
-let getByIdAndSecret: OAuthClientMethods.GetByIdAndSecret
-
-export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
-  OAuthClient = sequelize.define<OAuthClientInstance, OAuthClientAttributes>('OAuthClient',
+@Table({
+  tableName: 'oAuthClient',
+  indexes: [
     {
-      clientId: {
-        type: DataTypes.STRING,
-        allowNull: false
-      },
-      clientSecret: {
-        type: DataTypes.STRING,
-        allowNull: false
-      },
-      grants: {
-        type: DataTypes.ARRAY(DataTypes.STRING)
-      },
-      redirectUris: {
-        type: DataTypes.ARRAY(DataTypes.STRING)
-      }
+      fields: [ 'clientId' ],
+      unique: true
     },
     {
-      indexes: [
-        {
-          fields: [ 'clientId' ],
-          unique: true
-        },
-        {
-          fields: [ 'clientId', 'clientSecret' ],
-          unique: true
-        }
-      ]
+      fields: [ 'clientId', 'clientSecret' ],
+      unique: true
     }
-  )
+  ]
+})
+export class OAuthClientModel extends Model<Partial<AttributesOnly<OAuthClientModel>>> {
 
-  const classMethods = [
-    associate,
+  @AllowNull(false)
+  @Column
+  clientId: string
 
-    countTotal,
-    getByIdAndSecret,
-    loadFirstClient
-  ]
-  addMethodsToModel(OAuthClient, classMethods)
+  @AllowNull(false)
+  @Column
+  clientSecret: string
 
-  return OAuthClient
-}
+  @Column(DataType.ARRAY(DataType.STRING))
+  grants: string[]
+
+  @Column(DataType.ARRAY(DataType.STRING))
+  redirectUris: string[]
+
+  @CreatedAt
+  createdAt: Date
 
-// ---------------------------------------------------------------------------
+  @UpdatedAt
+  updatedAt: Date
 
-function associate (models) {
-  OAuthClient.hasMany(models.OAuthToken, {
-    foreignKey: 'oAuthClientId',
+  @HasMany(() => OAuthTokenModel, {
     onDelete: 'cascade'
   })
-}
+  OAuthTokens: OAuthTokenModel[]
 
-countTotal = function () {
-  return OAuthClient.count()
-}
+  static countTotal () {
+    return OAuthClientModel.count()
+  }
 
-loadFirstClient = function () {
-  return OAuthClient.findOne()
-}
+  static loadFirstClient () {
+    return OAuthClientModel.findOne()
+  }
 
-getByIdAndSecret = function (clientId: string, clientSecret: string) {
-  const query = {
-    where: {
-      clientId: clientId,
-      clientSecret: clientSecret
+  static getByIdAndSecret (clientId: string, clientSecret: string) {
+    const query = {
+      where: {
+        clientId,
+        clientSecret
+      }
     }
-  }
 
-  return OAuthClient.findOne(query)
+    return OAuthClientModel.findOne(query)
+  }
 }