1 import * as Sequelize from 'sequelize'
3 import { addMethodsToModel } from './utils'
10 } from './oauth-client-interface'
12 let OAuthClient: Sequelize.Model<OAuthClientInstance, OAuthClientAttributes>
13 let countTotal: OAuthClientMethods.CountTotal
14 let loadFirstClient: OAuthClientMethods.LoadFirstClient
15 let getByIdAndSecret: OAuthClientMethods.GetByIdAndSecret
17 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
18 OAuthClient = sequelize.define<OAuthClientInstance, OAuthClientAttributes>('OAuthClient',
21 type: DataTypes.STRING,
25 type: DataTypes.STRING,
29 type: DataTypes.ARRAY(DataTypes.STRING)
32 type: DataTypes.ARRAY(DataTypes.STRING)
38 fields: [ 'clientId' ],
42 fields: [ 'clientId', 'clientSecret' ],
49 const classMethods = [
56 addMethodsToModel(OAuthClient, classMethods)
61 // ---------------------------------------------------------------------------
63 function associate (models) {
64 OAuthClient.hasMany(models.OAuthToken, {
65 foreignKey: 'oAuthClientId',
70 countTotal = function (callback: OAuthClientMethods.CountTotalCallback) {
71 return OAuthClient.count().asCallback(callback)
74 loadFirstClient = function (callback: OAuthClientMethods.LoadFirstClientCallback) {
75 return OAuthClient.findOne().asCallback(callback)
78 getByIdAndSecret = function (clientId: string, clientSecret: string) {
82 clientSecret: clientSecret
86 return OAuthClient.findOne(query)