Skip to content

Тестовое задание - приложение для управление контактами

Notifications You must be signed in to change notification settings

ILugaro/flask-postgresql-rest-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

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

No packages published