Skip to content

livevasiliy/spring-task-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Manager

Java Spring Boot PostgreSQL Liquibase

Task Manager — это простое приложение для управления задачами с использованием Spring Boot, PostgreSQL, Liquibase и многопоточности. Это RESTful API позволяет создавать, обновлять, удалять и просматривать задачи.


Содержание

  1. Описание проекта
  2. Технологии
  3. Настройка проекта
  4. Запуск приложения
  5. API документация
  6. Миграции базы данных
  7. Логирование
  8. Дополнительные возможности
  9. Лицензия

Описание проекта

Task Manager — это консольное приложение для управления задачами, которое предоставляет следующие функции:

  • Создание, обновление, удаление и просмотр задач.
  • Установка дедлайнов и статусов задач.
  • Хранение данных в PostgreSQL.
  • Использование Liquibase для миграций базы данных.
  • Поддержка многопоточности для фоновых задач (например, проверка просроченных задач).

Технологии

Проект использует следующие технологии:

  • Java 21: Язык программирования.
  • Spring Boot 3.x: Фреймворк для создания REST API.
  • Spring Data JPA: Для работы с базой данных через Hibernate.
  • PostgreSQL: Реляционная база данных.
  • Liquibase: Инструмент для управления миграциями базы данных.
  • Lombok: Для автоматической генерации геттеров/сеттеров.
  • Docker: Для развертывания PostgreSQL.
  • Maven: Для управления зависимостями.

Настройка проекта

1. Предварительные требования

  • Java 21 или выше.
  • Maven для сборки проекта.
  • Docker для запуска PostgreSQL.

2. Развертывание PostgreSQL в Docker

Запустите PostgreSQL в Docker:

docker compose up -d

3. Клонирование репозитория

Склонируйте репозиторий на вашу локальную машину:

git clone https://github.com/livevasiliy/spring-task-manager.git
cd spring-task-manager

4. Настройка application.properties

Убедитесь, что файл src/main/resources/application.properties содержит правильные настройки для подключения к PostgreSQL:

# Настройки сервера
server.port=8080

# Настройки PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/task_manager
spring.datasource.username=homestead
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver

# Настройки JPA
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

# Настройки Liquibase
spring.liquibase.change-log=classpath:db/changelog/master.xml

Запуск приложения

1. Сборка проекта

Выполните сборку проекта с помощью Maven:

./mvnw clean install

2. Запуск приложения

Запустите приложение:

./mvnw spring-boot:run

Приложение будет доступно по адресу: http://localhost:8080.


API документация

API предоставляет следующие эндпоинты:

1. Получить все задачи

GET /api/tasks

2. Создать новую задачу

POST /api/tasks
Content-Type: application/json

{
    "title": "Learn Spring Boot",
    "description": "Complete the first project",
    "dueDate": "2023-12-01",
    "status": "TODO"
}

3. Получить задачу по ID

GET /api/tasks/{id}

4. Обновить задачу

PUT /api/tasks/{id}
Content-Type: application/json

{
    "title": "Learn Spring Boot and Liquibase",
    "description": "Complete the first project with database migrations",
    "dueDate": "2023-12-01",
    "status": "IN_PROGRESS"
}

5. Удалить задачу

DELETE /api/tasks/{id}

Миграции базы данных

Миграции базы данных управляются с помощью Liquibase. Все миграции находятся в папке src/main/resources/db/changelog.

Пример файла миграции (21-01-changelog.xml):

<changeSet id="1" author="livevasiliy">
    <createTable tableName="tasks">
        <column name="id" type="BIGINT" autoIncrement="true">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="title" type="VARCHAR(255)">
            <constraints nullable="false"/>
        </column>
        <column name="description" type="TEXT"/>
        <column name="due_date" type="DATE"/>
        <column name="status" type="VARCHAR(50)">
            <constraints nullable="false"/>
        </column>
    </createTable>
</changeSet>

Логирование

Для локального окружения включено логирование Liquibase. Вы можете настроить уровень логирования в application.properties:

logging.level.liquibase=DEBUG
logging.level.org.hibernate.SQL=DEBUG

Дополнительные возможности

  1. Многопоточность: Фоновая проверка просроченных задач с использованием @Scheduled.
  2. Swagger/OpenAPI: Swagger для документации API.
  3. CI/CD: CI/CD pipeline с использованием GitHub Actions.
  4. Тесты: Unit-тесты и Feature для сервисов и контроллеров.

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. файл LICENSE.


Если у вас есть вопросы или предложения, не стесняйтесь открывать issue или связаться со мной! [email protected]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages