mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 10:19:20 +03:00
refactor: optimized query
This commit is contained in:
parent
a4adf27831
commit
ef2cc11041
@ -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,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user