-
Notifications
You must be signed in to change notification settings - Fork 0
ILugaro/flask-postgresql-rest-api
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Тестовое задание - приложение для управления контактами.
Функциональные требования:
1. Приложение должно позволять создавать и изменять контакты,
2. Контакты должны содержать следующие атрибуты: Фамилия, Имя, Отчество, Организация, должность, email, телефон,
3. Приложение должно позволять осуществлять сортировку и фильтрацию контактов по всем атрибутам, а также полнотекстовый поиск по Фамилии, имени и отчеству,
4. Приложение должно поддерживать 2 роли:
a. Администратор: может создавать, изменять и удалять контакты, видеть удаленные контакты,
b. Пользователь: может создавать контакты, редактировать и удалять только свои контакты.
Нефункциональные требования:
1. Взаимодействие с приложением должно быть реализовано по REST API в произвольном формате,
2. В качестве СУБД должна быть использована PostgreSQL наиболее актуальной версии,
3. Приложение должно быть написано на Python наиболее актуальной версии,
4. Приложение должно быть размещено в пробном(бесплатном) аккаунте любого облачного провайдера в виде Docker-контейнера и опубликовано для доступа извне.
ОПИСАНИЕ ЗАПРОСОВ:
(в папке flask-postgresql-rest-api/tests/postman/ есть файл для postman)
Все запросы требуют Basic авторизацию:
showContacts (POST api/contacts/show) - получение контактов.
Параметры:
search - строка полнотекстового поиска для ИФО
sort - параметр по которому будет происходить сортировка
typeSort - тип сортировки, standart или reverse
filters - Именованный массив для фильтрации, где ключ - имя колонки, а значение - условие фильтрации (например {"organization":"почта", "name":"Ольга"}).
addContacts (POST api/contacts/add) - добавление нового параметра
Параметры:
name
last_name
patronymic - отчество
organization
post
email
phone
holder - владелец контакта (может указывать только администратор)
deleteContacts (DELETE api/contacts/<id контакта>) - удаление контакта
Параметры:
irrevocable - если True - безвозвратное удаление
updateContacts (PULL api/contacts/<id контакта>) - изменение контакта
В качестве параметров атребуты контакта и их новые значения
newUser (POST api/userList)
login
password
role - "d" (по умолчанию) или "a". Стандартный пользователь или администратор соответственно.
deleteUser (DELETE api/userList/<id пользователя>)
RESET (POST api/userList/reset/<id администратора>) - проводит очистку БД контактов и клиентов, кроме указанного администратора
*Используеться только в режиме DEBUG
ОПИСАНИЕ КОДА:
Сервер работает с двумя endpoint (назначение в app.js):
"/api/userList" - работа с авторотационными данными пользователей API сервиса
"/api/contacts" - работа непосредственно с базой контактов
В папке "src\models\entities" есть 2 сущности:
Contact.py - сущность контакта, его поля и методы обработки входящей информации (изменение формата тел. номера)
User.py - сущность, где прописано разделение логики работы с контактами для админов и простых пользователей.
В папке "src\models" в файлах ContactsModel.py и UserModel.py в основном содержатся методы работы с БД.
ContactsModel.py - с SQL таблицей "contacts"
UserModel.py - с SQL таблицей "users"
В файле .env.example требуемые поля для .env
About
Тестовое задание - приложение для управление контактами
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published