修复openapi认证,环境变量排序

This commit is contained in:
whyour 2022-01-13 11:13:04 +08:00
parent e13ff86ff6
commit 43bc29b25c
4 changed files with 21 additions and 8 deletions

View File

@ -50,7 +50,10 @@ export enum CrontabStatus {
interface CronInstance extends Model<Crontab, Crontab>, Crontab {}
export const CrontabModel = sequelize.define<CronInstance>('Crontab', {
name: DataTypes.STRING,
command: DataTypes.STRING,
command: {
unique: 'command',
type: DataTypes.STRING,
},
schedule: DataTypes.STRING,
timestamp: DataTypes.STRING,
saved: DataTypes.BOOLEAN,

View File

@ -31,6 +31,12 @@ export default class CronService {
}
public async insert(payload: Crontab): Promise<Crontab> {
const cron = await CrontabModel.findOne({
where: { command: payload.command },
});
if (cron) {
return cron;
}
return await CrontabModel.create(payload, { returning: true });
}

View File

@ -108,15 +108,18 @@ export default class EnvService {
};
}
try {
const result = await this.find(condition);
const result = await this.find(condition, [['position', 'DESC']]);
return result as any;
} catch (error) {
throw error;
}
}
private async find(query: any, sort?: any): Promise<Env[]> {
const docs = await EnvModel.findAll({ where: { ...query } });
private async find(query: any, sort: any = []): Promise<Env[]> {
const docs = await EnvModel.findAll({
where: { ...query },
order: [...sort],
});
return docs;
}

View File

@ -12,14 +12,15 @@ export default class OpenService {
constructor(@Inject('logger') private logger: winston.Logger) {}
public async findTokenByValue(token: string): Promise<App | null> {
const doc = await this.getDb({
where: sequelize.fn(
const doc = await this.getDb(
sequelize.fn(
'JSON_CONTAINS',
sequelize.col('tokens'),
JSON.stringify({ value: token }),
),
});
);
return doc;
AppModel.upsert;
}
public async create(payload: App): Promise<App> {
@ -50,7 +51,7 @@ export default class OpenService {
}
public async getDb(query: any): Promise<App> {
const doc: any = await AppModel.findOne({ where: { ...query } });
const doc: any = await AppModel.findOne({ where: query });
return doc && (doc.get({ plain: true }) as App);
}