123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { AllowNull, Column, CreatedAt, DataType, HasMany, Model, Table, UpdatedAt } from 'sequelize-typescript'
- import { AttributesOnly } from '@shared/typescript-utils'
- import { OAuthTokenModel } from './oauth-token'
- @Table({
- tableName: 'oAuthClient',
- indexes: [
- {
- fields: [ 'clientId' ],
- unique: true
- },
- {
- fields: [ 'clientId', 'clientSecret' ],
- unique: true
- }
- ]
- })
- export class OAuthClientModel extends Model<Partial<AttributesOnly<OAuthClientModel>>> {
- @AllowNull(false)
- @Column
- clientId: string
- @AllowNull(false)
- @Column
- clientSecret: string
- @Column(DataType.ARRAY(DataType.STRING))
- grants: string[]
- @Column(DataType.ARRAY(DataType.STRING))
- redirectUris: string[]
- @CreatedAt
- createdAt: Date
- @UpdatedAt
- updatedAt: Date
- @HasMany(() => OAuthTokenModel, {
- onDelete: 'cascade'
- })
- OAuthTokens: OAuthTokenModel[]
- static countTotal () {
- return OAuthClientModel.count()
- }
- static loadFirstClient () {
- return OAuthClientModel.findOne()
- }
- static getByIdAndSecret (clientId: string, clientSecret: string) {
- const query = {
- where: {
- clientId,
- clientSecret
- }
- }
- return OAuthClientModel.findOne(query)
- }
- }
|