Как создать объекты Spring Data для облегчения работы приложения обмена сообщениями? - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно создать несколько объектов, которые будут создавать резервные копии моего приложения, которые будут включать разговоры между пользователями. А пока представьте, что он имеет схожую функциональность с Tinder. Будут пользователи, и эти пользователи могут общаться с другими пользователями. Разговор никогда не будет состоять из более чем двух пользователей.

Я пытался создать сущность Пользователь, Разговор и Сообщение. Пользователь будет просто хранить основную информацию о пользователе. Диалог будет отслеживать двух участников, а объект сообщения будет содержать фактическое сообщение и метку времени. Я хочу использовать эту временную метку, чтобы при рендеринге открытых бесед пользователя я мог отсортировать их по беседе с самым последним отправленным сообщением. Может быть, я хочу метку времени в объекте Разговор?

У меня сейчас проблемы с компиляцией, но мне все равно не нравится мой подход. Я был бы очень признателен за любую помощь. Спасибо! Я также готов полностью изменить подход, если кто-то думает, что может быть лучший подход к этой сущности.

Пользователь:

@Entity
@Table(name = "users")
data class User (

@Id
var id: UUID = UUID.randomUUID(),

@Column(nullable = false)
var firstName: String,

@Column(nullable = false)
var lastName: String,

@Column(nullable = false, unique = true)
var username: String,

@Column(nullable = false)
var password: String,

@Transient 
var confirmPassword: String,

@Column(nullable = false)
var zipCode: String,

@Column(nullable=true)
var bio: String?,

@Column(nullable=true)
var imageUrl: String //path to profile picture url
)

Объект беседы:

@Entity
data class Conversation (

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(nullable = false)
    val convoId: Long,

    @OneToMany
    @JoinColumn(name = "user_id")
    var particapants: List<User>,

    @OneToMany
    @JoinColumn(name = "message_id")
    var messages: List<Message>
)

Сообщение:

@Entity
data class Message (

        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        @Column(nullable = false)
        val messageId: Long,

        @ManyToOne
        @JoinColumn(name = "user_id")
        val user: User,

        var message: String,

        @LastModifiedDate
        @Column(name = "last_modified_date")
        var lastModifiedDate: Date
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...