]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/oauth-client.ts
Type functions
[github/Chocobozzz/PeerTube.git] / server / models / oauth-client.ts
1 import * as Sequelize from 'sequelize'
2
3 import { addMethodsToModel } from './utils'
4 import {
5 OAuthClientClass,
6 OAuthClientInstance,
7 OAuthClientAttributes,
8
9 OAuthClientMethods
10 } from './oauth-client-interface'
11
12 let OAuthClient: Sequelize.Model<OAuthClientInstance, OAuthClientAttributes>
13 let countTotal: OAuthClientMethods.CountTotal
14 let loadFirstClient: OAuthClientMethods.LoadFirstClient
15 let getByIdAndSecret: OAuthClientMethods.GetByIdAndSecret
16
17 export default function (sequelize, DataTypes) {
18 OAuthClient = sequelize.define('OAuthClient',
19 {
20 clientId: {
21 type: DataTypes.STRING,
22 allowNull: false
23 },
24 clientSecret: {
25 type: DataTypes.STRING,
26 allowNull: false
27 },
28 grants: {
29 type: DataTypes.ARRAY(DataTypes.STRING)
30 },
31 redirectUris: {
32 type: DataTypes.ARRAY(DataTypes.STRING)
33 }
34 },
35 {
36 indexes: [
37 {
38 fields: [ 'clientId' ],
39 unique: true
40 },
41 {
42 fields: [ 'clientId', 'clientSecret' ],
43 unique: true
44 }
45 ]
46 }
47 )
48
49 const classMethods = [
50 associate,
51
52 countTotal,
53 getByIdAndSecret,
54 loadFirstClient
55 ]
56 addMethodsToModel(OAuthClient, classMethods)
57
58 return OAuthClient
59 }
60
61 // ---------------------------------------------------------------------------
62
63 function associate (models) {
64 OAuthClient.hasMany(models.OAuthToken, {
65 foreignKey: 'oAuthClientId',
66 onDelete: 'cascade'
67 })
68 }
69
70 countTotal = function (callback: OAuthClientMethods.CountTotalCallback) {
71 return OAuthClient.count().asCallback(callback)
72 }
73
74 loadFirstClient = function (callback: OAuthClientMethods.LoadFirstClientCallback) {
75 return OAuthClient.findOne().asCallback(callback)
76 }
77
78 getByIdAndSecret = function (clientId: string, clientSecret: string) {
79 const query = {
80 where: {
81 clientId: clientId,
82 clientSecret: clientSecret
83 }
84 }
85
86 return OAuthClient.findOne(query)
87 }