import mongoose, {Schema} from 'mongoose';
import * as crypto from "crypto";

export enum TokenType {
    API, SESSION
}

export interface IToken {
    token: string
    clientId: number
    type: TokenType
    userAgent?: string
    created: Date
}

const TokenSchema = new Schema<IToken>({
    token: {
        type: String,
        default: () => crypto.randomBytes(48).toString('hex')
    },
    clientId: {
        type: Number,
        required: true
    },
    type: {
        type: Number,
        enum: TokenType,
        default: TokenType.SESSION
    },
    userAgent: {
        type: String,
        required: false
    },
    created: {
        type: Date,
        default: Date.now
    }
});

export const Token = mongoose.model('tokens', TokenSchema);