Remove "function" in favor of () => {}
[oweals/peertube.git] / server / models / oauth / oauth-token-interface.ts
1 import * as Sequelize from 'sequelize'
2 import * as Promise from 'bluebird'
3
4 import { UserModel } from '../user'
5
6 export type OAuthTokenInfo = {
7   refreshToken: string
8   refreshTokenExpiresAt: Date,
9   client: {
10     id: number
11   },
12   user: {
13     id: number
14   }
15 }
16
17 export namespace OAuthTokenMethods {
18   export type GetByRefreshTokenAndPopulateClient = (refreshToken: string) => Promise<OAuthTokenInfo>
19   export type GetByTokenAndPopulateUser = (bearerToken: string) => Promise<OAuthTokenInstance>
20   export type GetByRefreshTokenAndPopulateUser = (refreshToken: string) => Promise<OAuthTokenInstance>
21
22   export type RemoveByUserId = (userId) => Promise<number>
23 }
24
25 export interface OAuthTokenClass {
26   getByRefreshTokenAndPopulateClient: OAuthTokenMethods.GetByRefreshTokenAndPopulateClient
27   getByTokenAndPopulateUser: OAuthTokenMethods.GetByTokenAndPopulateUser
28   getByRefreshTokenAndPopulateUser: OAuthTokenMethods.GetByRefreshTokenAndPopulateUser
29   removeByUserId: OAuthTokenMethods.RemoveByUserId
30 }
31
32 export interface OAuthTokenAttributes {
33   accessToken: string
34   accessTokenExpiresAt: Date
35   refreshToken: string
36   refreshTokenExpiresAt: Date
37
38   User?: UserModel
39 }
40
41 export interface OAuthTokenInstance extends OAuthTokenClass, OAuthTokenAttributes, Sequelize.Instance<OAuthTokenAttributes> {
42   id: number
43   createdAt: Date
44   updatedAt: Date
45 }
46
47 export interface OAuthTokenModel extends OAuthTokenClass, Sequelize.Model<OAuthTokenInstance, OAuthTokenAttributes> {}