Skip to content

Repository files navigation

ТЕСТОВОЕ ЗАДАНИЕ

Цель.

Обработка и анализ XML файла.

Задача.

Загрузка файла, анализ на определенную структуру, которая известна и задана изначально как «паттерн» с набором условий, сохранение файла в случае нахождения соответствия куска заданной структуре и условиям и последующий вывод файла на экран в виде таблицы с возможностью сортировки и контекстного поиска. Если в загружаемом файле не найдено соответствие заданной структуре и условиям, то он не сохраняется.

Дополнительно.

Создание API, которое будет предоставлять возможность получения списка файлов, которые были сохранены, а также получения одного или нескольких файлов в виде формата JSON. Создание БД для хранения имен файлов (только тех, которые подошли по условию), даты из обработки (сохранения). На диске файлы хранятся с уникальными именами. При получении данных через API, указывать в формате JSON, какой файл или набор файлов передается с оригинальными именами файлов.

Структура, которая является шаблоном для загрузки:

<Component Id="030-032-000-000">
<Value></Value>
<Limit></Limit>
<Error>ERROR</Error>
</Component>

Файлы для тестов:

  1. file_1.xml - не соответствует сигнатуре
  2. file_2.xml - верно
  3. file_3.xml - повреждена структура

Пояснения по структуре, условиям и иерархическому соотношению:

  1. элемент Component не является корневым элементом
  2. (!?) имеет три свойства: Value, Limit, Error
  3. Также, у элемента Component имеется атрибут Id, который имеет определенное значение "030-032-000-000"; другие значения не соответствуют условию.
  4. элемент Value должен быть пустым
  5. элемент Limit должен быть пустым
  6. элемент Error должен содержать значение “ERROR”
  7. элемент регистpoнезависимы
Пояснения по организации API:

доступ должен быть открытым, безключевым, не надо писать целую службу, достаточно просто уметь отдавать данные по запросу без аутентификации и секретного ключа, предусмотреть ответ сервера на обработку некорректного запроса. К заданию прилагается несколько xml файлов для анализа. Используемые инструменты: PHP, JS, SQL.

решение (laravel 11, php8.3, xml->array sign scan)

что не сделано

поиск по табличке и сортировка (js можем обсудить)

запуск

  1. set up php 8.2/8.3
  2. composer install
  3. создать базу xmltests
  4. доступ к базе прописать в .env (DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD)
  5. php artisan migrate
  6. http://localhost/xml/index

Так же есть тривиальная задача, выполнение которой будет приветствоватса.

Тривиальная задача.

я хочу хранить свою библиотеку книг в БД. Меня волнуют названия книг и авторы — больше ничего хранить не надо. Предложите структуру таблиц, далее вытащите список книг, которые написаны 3-мя соавторами.

Вопирос

получить отчет «книга — количество соавторов» и отфильтровать те, у которых соавторов меньше 3х.

структура дб: княги и авторы

CREATE TABLE `books` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
)

CREATE TABLE `authors` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
)

CREATE TABLE `book_authors` (
`id` int NOT NULL AUTO_INCREMENT,
`book_id` int NOT NULL,
`author_id` int NOT NULL,
PRIMARY KEY (`id`)
)

получение списка книг с менее чем 3-мя авторами:

SELECT ba.book_id as book_id, b.name AS book_name, count(ba.book_id) AS author_count
FROM book_authors ba
JOIN books b ON b.id = book_id
GROUP BY ba.book_id
HAVING count(ba.book_id) < 3

About

just a php test

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages