Данный проект представляет собой университетскую систему, которая включает в себя базу данных для хранения информации о студентах, преподавателях, курсах, группах, оценках и других сущностях, а также предоставляет API для взаимодействия с этими данными.
В рамках этой части проекта необходимо создать схему базы данных, состоящую из 15 сущностей. Ниже представлена ER-диаграмма, описывающая связи между сущностями:
Скрипт для установки схемы в базу данных: https://github.com/Nick-star/universityapi/blob/master/sql/02_schema.sql
- Студент: информация о студенте, включая имя, фамилию и группу.
- Преподаватель: информация о преподавателе, включая имя и фамилию.
- Курс: информация о курсе, включая название и преподавателя, который ведет данный курс.
- Группа: информация о группе студентов.
- Отделение: информация об отделении университета.
- Оценка: информация об оценке студента по определенному курсу.
- Расписание: информация о расписании занятий.
- Здание: информация о здании, в котором проводятся занятия.
- Аудитория: информация об аудитории в здании.
- Семестр: информация о семестре учебного года.
- Факультет: информация о факультете университета.
- Экзамен: информация о экзамене по определенному курсу.
- Задание для самостоятельной работы: информация о задании, которое студент должен выполнить самостоятельно.
- Программа курса: информация о программе определенного курса.
- Учебный план: информация о учебном плане для группы студентов.
Необходимо было реализовать следующие SQL запросы:
- Выбрать всех студентов, обучающихся на курсе "Математика".
- Обновить оценку студента по курсу.
- Выбрать всех преподавателей, которые преподают в здании №3.
- Удалить задание для самостоятельной работы, которое было создано более года назад.
- Добавить новый семестр в учебный год.
Скрипт с запросами: https://github.com/Nick-star/universityapi/blob/master/sql/tasks.sql
API должно предоставлять следующие точки входа:
- POST /students - создание нового студента.
- GET /students/{student_id} - получение информации о студенте по его id.
- PUT /students/{student_id} - обновление информации о студенте по его id.
- DELETE /students/{student_id} - удаление студента по его id.
- GET /teachers - получение списка всех преподавателей.
- POST /courses - создание нового курса.
- GET /courses/{course_id} - получение информации о курсе по его id.
- GET /courses/{course_id}/students - получение списка всех студентов на курсе.
- POST /grades - создание новой оценки для студента по курсу.
- PUT /grades/{grade_id} - обновление оценки студента по курсу.
- Откройте терминал на вашей системе.
- Перейдите в папку, в которую вы хотите склонировать репозиторий.
- Выполните следующую команду для клонирования репозитория:
git clone https://github.com/Nick-star/universityapi.git
- Перейдите в папку проекта, введя следующую команду:
cd universityapi
- В папке проекта откройте файл docker-compose.yaml и убедитесь, что все настройки контейнера, такие как порты и переменные окружения, настроены правильно.
- Выполните следующую команду для сборки и запуска контейнера Docker:
docker-compose up -d
- Приложение теперь доступно по порту http://0.0.0.0:8000/
Требования:
- PostgreSQL
- Python (версии 3.x)
- pip
- Откройте терминал.
- Перейдите в папку, в которую вы хотите склонировать репозиторий.
- Выполните следующую команду для клонирования репозитория:
git clone https://github.com/Nick-star/universityapi.git
- Перейдите в папку проекта, введя следующую команду:
cd universityapi
- Выполните следующую команду для создания виртуального окружения:
python3 -m venv venv
- Активируйте виртуальное окружение:
- Для Windows:
venv\Scripts\activate
- Для MacOS и Linus:
source venv/bin/activate
- Установите зависимости, выполнив следующую команду:
pip install -r requirements.txt
- Создайте базу данных 'university' в вашей PostgreSQL и запустите скрипты sql/02_schema.sql и 03_initial_data.sql.
- Запустите приложение, выполнив следующую команду:
uvicorn main:app --host 0.0.0.0 --port 8000
- Приложение теперь доступно по URL-адресу http://localhost:8000.