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