Я создаю простое приложение ToDo, используя Spring Boot в Kotlin. Я новичок в обоих. Ниже приводится класс данных, который я использую для сохранения данных через JPA в базе данных MySQL.
@Entity @Table
data class Task(
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column val id: Long,
@Column var title: String,
@Column var isCompleted: Boolean
)
А это репозиторий JPA.
@Repository interface TaskRepository: JpaRepository<Task, Long>
У пользователя может быть список задач.
У меня есть два требования. Во-первых, когда пользователь добавляет новое задание, оно должно быть добавлено в конец списка, а это означает, что при извлечении из базы данных мне нужен список в следующем порядке: был сохранен Я думал о достижении этого путем добавления свойства позиции, как показано ниже, которое автоматически увеличивается. Предложите, если есть лучшая альтернатива. Заказ на основе созданного времени не будет соответствовать другим моим требованиям.
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column var position: Int
Второе требование - пользователь может переупорядочить задачи. Так, например, пользователь может переместить задачу с 8-й позиции на 2-ю. Чтобы добиться этого, я думаю об увеличении позиции каждой задачи с 2 до 7 на одну, а затем об изменении позиции выбранной задачи до 2.
Я не знаю, как этого добиться с помощью одного запрос. Это вообще возможно? И это правильный способ сделать это?
Кроме того, если пользователь удаляет задачу, в идеале я бы хотел вычесть положение всех задач по одному. Но если это дорого, я могу обойтись без этого.
Мне очень понравилось соглашение Spring Boot относительно конфигурации конфигурации, поэтому я надеюсь, что должен быть более простой и лучший способ удовлетворить мои требования.