1 import * as Sequelize from 'sequelize'
3 import { addMethodsToModel } from '../utils'
9 } from './oauth-client-interface'
11 let OAuthClient: Sequelize.Model<OAuthClientInstance, OAuthClientAttributes>
12 let countTotal: OAuthClientMethods.CountTotal
13 let loadFirstClient: OAuthClientMethods.LoadFirstClient
14 let getByIdAndSecret: OAuthClientMethods.GetByIdAndSecret
16 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
17 OAuthClient = sequelize.define<OAuthClientInstance, OAuthClientAttributes>('OAuthClient',
20 type: DataTypes.STRING,
24 type: DataTypes.STRING,
28 type: DataTypes.ARRAY(DataTypes.STRING)
31 type: DataTypes.ARRAY(DataTypes.STRING)
37 fields: [ 'clientId' ],
41 fields: [ 'clientId', 'clientSecret' ],
48 const classMethods = [
55 addMethodsToModel(OAuthClient, classMethods)
60 // ---------------------------------------------------------------------------
62 function associate (models) {
63 OAuthClient.hasMany(models.OAuthToken, {
64 foreignKey: 'oAuthClientId',
69 countTotal = function () {
70 return OAuthClient.count()
73 loadFirstClient = function () {
74 return OAuthClient.findOne()
77 getByIdAndSecret = function (clientId: string, clientSecret: string) {
81 clientSecret: clientSecret
85 return OAuthClient.findOne(query)