mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-27 14:42:23 +00:00
[AB-65] adding ability to join a reminder via button
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package dev.sheldan.abstracto.remind.model.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.remind.model.database.embed.ReminderUserId;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.Instant;
|
||||
|
||||
@Entity
|
||||
@Table(name="reminder_participant")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode
|
||||
public class ReminderParticipant {
|
||||
|
||||
@EmbeddedId
|
||||
private ReminderUserId reminderParticipantId;
|
||||
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@MapsId("reminderId")
|
||||
@JoinColumn(name = "reminder_id", nullable = false)
|
||||
private Reminder reminder;
|
||||
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@MapsId("participantUserInServerId")
|
||||
@JoinColumn(name = "reminder_participant_user_in_server_id", nullable = false)
|
||||
private AUserInAServer participator;
|
||||
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "server_id", nullable = false)
|
||||
private AServer server;
|
||||
|
||||
@Column(name = "created", nullable = false, insertable = false, updatable = false)
|
||||
private Instant created;
|
||||
|
||||
@Column(name = "updated", insertable = false, updatable = false)
|
||||
private Instant updated;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package dev.sheldan.abstracto.remind.model.database.embed;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
@Embeddable
|
||||
public class ReminderUserId implements Serializable {
|
||||
@Column(name = "reminder_id")
|
||||
private Long reminderId;
|
||||
@Column(name = "reminder_participant_user_in_server_id")
|
||||
private Long participantUserInServerId;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
ReminderUserId counterId = (ReminderUserId) o;
|
||||
return Objects.equals(reminderId, counterId.reminderId) &&
|
||||
Objects.equals(participantUserInServerId, counterId.participantUserInServerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(reminderId, participantUserInServerId);
|
||||
}
|
||||
|
||||
public ReminderUserId(Long reminderId, Long participantUserInServerId) {
|
||||
this.reminderId = reminderId;
|
||||
this.participantUserInServerId = participantUserInServerId;
|
||||
}
|
||||
|
||||
public ReminderUserId() {
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,24 @@
|
||||
package dev.sheldan.abstracto.remind.model.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.ServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.display.MemberDisplay;
|
||||
import dev.sheldan.abstracto.core.models.template.display.MemberNameDisplay;
|
||||
import dev.sheldan.abstracto.core.utils.MessageUtils;
|
||||
import dev.sheldan.abstracto.remind.model.database.Reminder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class ExecutedReminderModel extends ServerContext {
|
||||
private Reminder reminder;
|
||||
private Member member;
|
||||
private MemberNameDisplay memberNameDisplay;
|
||||
private List<MemberDisplay> reminderParticipants;
|
||||
private Duration duration;
|
||||
|
||||
public String getMessageUrl() {
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
package dev.sheldan.abstracto.remind.model.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
|
||||
import dev.sheldan.abstracto.core.models.template.display.MemberNameDisplay;
|
||||
import dev.sheldan.abstracto.remind.model.database.Reminder;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ReminderModel {
|
||||
private String remindText;
|
||||
private Member member;
|
||||
private MemberNameDisplay memberDisplay;
|
||||
private Reminder reminder;
|
||||
private ServerChannelMessage message;
|
||||
private String joinButtonId;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.sheldan.abstracto.remind.model.template.listener;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ReminderJoiningModel {
|
||||
private Instant reminderDate;
|
||||
private boolean failedToJoin;
|
||||
private boolean selfJoin;
|
||||
private boolean joined;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package dev.sheldan.abstracto.remind.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.remind.model.database.Reminder;
|
||||
import dev.sheldan.abstracto.remind.model.database.ReminderParticipant;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ReminderParticipantManagementService {
|
||||
|
||||
ReminderParticipant addMemberToReminder(Reminder reminder, AUserInAServer aUserInAServer);
|
||||
void removeMemberFromReminder(Reminder reminder, AUserInAServer aUserInAServer);
|
||||
void removeMemberFromReminder(ReminderParticipant reminderParticipant);
|
||||
Optional<ReminderParticipant> getReminderParticipant(Reminder reminder, AUserInAServer aUserInAServer);
|
||||
boolean isReminderParticipator(Reminder reminder, AUserInAServer aUserInAServer);
|
||||
List<ReminderParticipant> getReminderParticipants(Reminder reminder);
|
||||
}
|
||||
Reference in New Issue
Block a user