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