juice-shop
64 строки · 1.7 Кб
1/*
2* Copyright (c) 2014-2024 Bjoern Kimminich & the OWASP Juice Shop contributors.
3* SPDX-License-Identifier: MIT
4*/
5
6/* jslint node: true */
7import {8Model,9type InferAttributes,10type InferCreationAttributes,11DataTypes,12type CreationOptional,13type Sequelize14} from 'sequelize'15class Challenge extends Model<16InferAttributes<Challenge>,17InferCreationAttributes<Challenge>18> {19declare id: CreationOptional<number>20declare name: string21declare category: string22declare description: string23declare difficulty: number24declare hint: string | null25declare hintUrl: string | null26declare mitigationUrl: CreationOptional<string> | null27declare key: string28declare disabledEnv: CreationOptional<string> | null29declare tutorialOrder: CreationOptional<number> | null30declare tags: string | undefined31declare solved: CreationOptional<boolean>32declare codingChallengeStatus: CreationOptional<number>33}
34
35const ChallengeModelInit = (sequelize: Sequelize) => {36Challenge.init(37{38id: {39type: DataTypes.INTEGER,40primaryKey: true,41autoIncrement: true42},43key: DataTypes.STRING,44name: DataTypes.STRING,45category: DataTypes.STRING,46tags: DataTypes.STRING,47description: DataTypes.STRING,48difficulty: DataTypes.INTEGER,49hint: DataTypes.STRING,50hintUrl: DataTypes.STRING,51mitigationUrl: DataTypes.STRING,52solved: DataTypes.BOOLEAN,53disabledEnv: DataTypes.STRING,54tutorialOrder: DataTypes.NUMBER,55codingChallengeStatus: DataTypes.NUMBER56},57{58tableName: 'Challenges',59sequelize
60}61)62}
63
64export { Challenge as ChallengeModel, ChallengeModelInit }65