sidimekov/opd_labs

Бэкенд - Доработка БД

Closed this issue · 0 comments

Поменять db_managers.php по формату как написано в "Реформы БД": #8

То есть таблицу testings вместо отдельных столбцов статы (reaction_time, accuracy, misses, mistake) сделать один столбец: statistics. Он будет типа text, там будет храниться строка формата JSON, например:

{
  "reaction_time": 100,
  "accuracy": 2,
  "misses": 3,
  "mistakes": 1
}

Подправить файл db_managers.php:

  • Подправить методы:
    • getTestResults: Работать и так будет, но было бы славно чтобы столбец statistics getTestResults()['statistics'] давал не json строку, а двусвязный список (аналог Map в других япах), где ключами будут статы, а значениями - их значения.
      То есть чтобы можно допустим было бы прописать getTestResults()['statistics']['reaction_time']. Короче декодировать json строку в двусвязный список и засунуть его туда же: getTestResults()['statistics']
    • getUserResults: Аналогично с методом выше
    • addTestResults: в параметрах метода нужны ид юзера и теста, а также ссылочный массив (по типу Map с ключами значениями), в этом массиве ключ: название статистики (например "reaction_time"), а в значении - значение статы.
      Метод должен закодировать в JSON строку этот ссылочный массив и отправить в столбец statistics в таблицу testings
    • getMidUserStats: сам метод рассчитывает средние значения результатов одного теста, если указан конкретный ид пользователя, то значения рассчитывается среднее значение результатов одного теста у одного пользователя, если ид пользователя не указан ( в параметрах метода значение по умолчанию userId null ), то рассчитывается средние результаты одного теста среди всех пользователей.
      Щас реализация есть только для 4 статистик, нужно подправить так, чтобы можно было рассчитать для всех статистик, указанных для тесте, по идее список статистик можно получить, прописав метод array_keys( getUserResults() )

Важно потестить методы у себя: в ксампе открыть phpmyadmin, и на страничке какой то вкинуть метод var_dump( ... ), и сверить резы с бдшками и тем, что выдаёт метод