# Описание: Для своей работы приложение использует базу данных sqlite. # Таблицы В базе присутствуют 4 таблицы: + Таблица пользователей + Таблица ошейников + Таблица собак + Таблица связи волонтеров с собаками ## Таблица users В таблице users хранится информация о пользователях, зарегистрировашихся в приложении. ### Поля users: + id - поле типа integer, primary key + name - поле типа string, содержит информацию о имени пользователя, должно быть уникальным в таблице + email - поле типа EmailString, содержит информацию о почте пользователя, должно быть уникальным в таблице + hash_password - поле типа string, содержит хэш от пароля пользователя, используется для авторизации пользователя в приложении + phone - поле типа string, содержит информацию о телефоне пользователя, должно быть уникальным в таблице + token - поле типа string, содержит сгенерированный токен пользователя, который используется для доступа почти ко всем функциям приложения ## Таблица collars В таблице хранится информация об активных ошейниках. Ошейники периодически отправляют запрос в базу на обновление данных о месторасположении ошейника (эмулятор такого ошейника в docs/scripts/script.py). ### Поля collars + id - поле типа integer, primary key + ip - поле типа string, содержит информацию о ip ошейника ## Таблицаа dogs В таблице содержится информация о бездомных собаках, зарегистрированных в приложении. ### Поля dogs + id - поле типа integer, primary key + name - поле типа string, содержит кличку собаки + description - поле типа string, содержит описание и приметы собаки + collar_id - поле типа Integer, содержит id ошейника, который закреплен на собаке. + datas - поле типа array, содержит массив объектов из таблицы `DogsData`, связанные с текущей по полям `dogs.id=DogsData.dog_id` ## Таблица DogsData Таблица содержит набор информации о собаке в определенное время. ### Поля DogsData + id - поле типа integer, primary key + dog_id - id собаки + latitude - поле типа decimal, содержит информацию о координатах собаки в конкретный момент времени + longitude - поле типа decimal, содержит информацию о координатах собаки в конкретный момент времени + datetime - поле типа datetime, содержит дату и время, когда была получена информация о собаке ## Таблица tasks Таблица содержит информацию о заданиях, которые пользователи могут выдавать друг другу. ### Поля tasks + id - поле типа integer, primary key + dog_id - поле типа integer, содержит id собаки, с которой связано задание + type - поле типа string, содержит описание самого задания + status - поле типа boolean **default False**, `True` если задание выполнено, `False` если нет. + responses - поле типа array, содержит массив объектов из таблицы `TaskResponses`, связанные с текущей по полям `tasks.id=TaskResponses.task_id` ## Таблица TaskResponses Таблица содержит информацию об отчетах на задания из таблицы `tasks` ### Поля TaskResponses + id - поле типа integer, primary key + task_id - поле типа integer, содержит id задания + proof - поле типа string, содержит доказательство выполенного задания + user_id - поле типа integer, содержит id пользователя, который выполнил задание + delete - поле типа boolean, **default False**, `True` если отчёт отклонен, `False` если принят