refactor: optimized query

This commit is contained in:
Sergey Yarkov 2021-11-25 20:35:17 +03:00
parent a4adf27831
commit ef2cc11041

View File

@ -1,12 +1,12 @@
import { inject, Ioc } from '@adonisjs/core/build/standalone'; import { inject, Ioc } from '@adonisjs/core/build/standalone';
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
import Database from '@ioc:Adonis/Lucid/Database';
/** /**
* Datatypes * Datatypes
*/ */
import HttpStatusEnum from 'App/Datatypes/Enums/HttpStatusEnum'; import HttpStatusEnum from 'App/Datatypes/Enums/HttpStatusEnum';
import IResponse from 'App/Datatypes/Interfaces/IResponse'; import IResponse from 'App/Datatypes/Interfaces/IResponse';
import Lesson from 'App/Models/Lesson';
import LessonMaterial from 'App/Models/LessonMaterial'; import LessonMaterial from 'App/Models/LessonMaterial';
/** /**
@ -271,14 +271,18 @@ export default class LessonService {
/** /**
* Update order of lessons * Update order of lessons
*/ */
// TODO can be transformed into one query const params = ids
await Promise.all( .map((id, i) => ({ id, i: i + 1 }))
ids.map(async (id, i) => { .reduce((result: Array<number | string>, { id, i }) => result.concat(id, i), []);
await Lesson.query()
.where('id', id) const query = `
.update({ display_order: i + 1 }); UPDATE lessons
}) SET display_order = t.display_order
); FROM (VALUES ${ids.map(() => `(?, ??)`).join(',')}) as t(id, display_order)
WHERE t.id = lessons.id
`;
await Database.rawQuery(query, params);
return { return {
success: true, success: true,