Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pomxark/example-app
Успешно выполненное тестовое задание. Кэширование, очередь, обработка дат, тестирование
https://github.com/pomxark/example-app
assets cors csrf docker docker-compose https laravel laravel-cors nginx node20 postgres tdd test-automation vite
Last synced: 15 days ago
JSON representation
Успешно выполненное тестовое задание. Кэширование, очередь, обработка дат, тестирование
- Host: GitHub
- URL: https://github.com/pomxark/example-app
- Owner: POMXARK
- Created: 2023-06-03T22:38:46.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-10-01T13:15:43.000Z (about 1 year ago)
- Last Synced: 2023-10-02T06:27:51.628Z (about 1 year ago)
- Topics: assets, cors, csrf, docker, docker-compose, https, laravel, laravel-cors, nginx, node20, postgres, tdd, test-automation, vite
- Language: PHP
- Homepage: https://example-app-auxb.onrender.com/
- Size: 791 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Подробнее о проекте: https://github.com/POMXARK/example-app/blob/master/DOCS.md
Laravel Framework 9.52.15 (PHP 8.1.2-1ubuntu2.11) node 20
### Тестовое задание
На вакансию: https://khabarovsk.hh.ru/vacancy/81007713?hhtmFrom=chat
Необходимо попробовать максимально задействовать возможности фреймворка по канонам паттерна MVC.
Есть сущность "Пациент" с полями first_name, last_name, birthdate, age, age_type
Необходимо описать роутер и контроллер который:1. принимает только поля first_name, last_name и birthdate
2. Создает сущность "Пациент" через модель Patient
4. поля age(int возраст) и age_type(char день/месяц/год) заполняются в зависимости от пришеднего в контроллер birthdate(date дата рождения). Если возраст меньше месяца, то это дни. Если меньше года, то месяцы
5. созданную и сохраненную сущность отправить в 5ти минутный кеш и в очередьОбработчик очереди и делать не надо. БД создавать и подключать тоже. Работоспособность кода не важна, главное - способ реализации
5. запросом из роута нужно выгрузить список сущностей и также задействовать кеш (если есть и не просрочился). Выгружается полями name (конкатенация first_name + last_name), дата рождения в формате (d.m.Y) и возвраст в формате "4 день" (склонять не надо)
P.S. В лоб пилить логику в контроллере - не интересно. Необходимо учесть, что контроллер должен быть максимально "тонким" и с минимальным вызовом вспомогательных сервисов вида $this->userService->age()
1. age содержит цифру согласно указанному age_type - кол-во дней, месяцев или лет
2. age_type поле в любом формате, главное показать логику вычисления
3. если дата рождения меньше месяца назад - указываем в age кол-во дней, а в age_type - дни (21 день)
если дата рождения меньше года (очевидно что более 1 месяца) - указываем age кол-во целых месяцев, а в age_type - месяцы (1 месяц)
в остальных случаях - указываем age кол-во целых лет, а в age_type - год (21 год)### Запуск
- cp .env.example .env
- php artisan optimize
- chmod -R 777 storage/logs
- docker-compose up -d --build### demo-deploy (all in one)
- sudo rm -r docker
- docker build -t example-app .
- docker run -d -p 8000:80 --name example-app example-app