Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions src/main/java/de/slimecloud/slimeball/features/ticket/Ticket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package de.slimecloud.slimeball.features.ticket;

import de.mineking.databaseutils.Column;
import de.mineking.databaseutils.DataClass;
import de.mineking.databaseutils.Table;
import de.mineking.databaseutils.exception.ConflictException;
import de.slimecloud.slimeball.main.SlimeBot;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.UserSnowflake;
import org.jetbrains.annotations.NotNull;

@Getter
@AllArgsConstructor
public class Ticket implements DataClass<Ticket> {

private final transient SlimeBot bot;

@Column(key = true)
private final Guild guild;
@Column(key = true)
private final UserSnowflake user;
@Column(key = true)
private final long id;


@Column
private final UserSnowflake creator;
@Column
private final UserSnowflake closer;
@Column
private final UserSnowflake claimer;
@Column
private final long openTime;
@Column
private final long closeTime;
@Column
private final String closeReason;

public Ticket(SlimeBot bot) {
this(bot, null, null, 0, null, null, null, 0, 0, "");
}


/**
* true if staff opened a ticket with this user
*/
public boolean isStaffTicket() {
return user.getIdLong() != creator.getIdLong();
}
@NotNull
@Override
public Table<Ticket> getTable() {
return bot.getTicket();
}

@NotNull
@Override
public Ticket update() throws ConflictException {
return DataClass.super.update();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package de.slimecloud.slimeball.features.ticket;

import de.mineking.databaseutils.Table;
import de.mineking.databaseutils.Where;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.UserSnowflake;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.util.Optional;

public interface TicketTable extends Table<Ticket> {

default List<Ticket> getTickets(@NotNull Guild guild, @NotNull UserSnowflake user) {
return selectMany(Where.allOf(
Where.equals("user", user),
Where.equals("guild", guild)
));
}

default Optional<Ticket> getTicket(long id) {
return selectOne(Where.equals("id", id));
}

}
5 changes: 5 additions & 0 deletions src/main/java/de/slimecloud/slimeball/main/SlimeBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
import de.slimecloud.slimeball.features.staff.absence.AbsenceTable;
import de.slimecloud.slimeball.features.statistic.MemberCount;
import de.slimecloud.slimeball.features.statistic.RoleMemberCount;
import de.slimecloud.slimeball.features.ticket.Ticket;
import de.slimecloud.slimeball.features.ticket.TicketTable;
import de.slimecloud.slimeball.features.wrapped.DataListener;
import de.slimecloud.slimeball.features.wrapped.WrappedData;
import de.slimecloud.slimeball.features.wrapped.WrappedDataTable;
Expand Down Expand Up @@ -128,6 +130,7 @@ public class SlimeBot extends ListenerAdapter {
private final ReportTable reports;
private final ReportBlockTable reportBlocks;
private final FdmdsQueue fdmdsQueue;
private final TicketTable ticket;

private final LevelTable level;
private final CardDataTable profileData;
Expand Down Expand Up @@ -177,6 +180,7 @@ public SlimeBot(@NotNull Config config, @NotNull Dotenv credentials) throws IOEx
reports = database.getTable(Report.class, () -> new Report(this)).name("reports").table(ReportTable.class).create();
reportBlocks = database.getTable(ReportBlock.class, ReportBlock::new).name("report_blocks").table(ReportBlockTable.class).create();
fdmdsQueue = database.getTable(FdmdsQueueItem.class, () -> new FdmdsQueueItem(this)).name("fdmds_queue").table(FdmdsQueue.class).create();
ticket = database.getTable(Ticket.class, () -> new Ticket(this)).name("tickets").table(TicketTable.class).create();

level = database.getTable(Level.class, () -> new Level(this)).name("levels").table(LevelTable.class).create();
profileData = database.getTable(CardProfileData.class, () -> new CardProfileData(this)).name("card_data").table(CardDataTable.class).create();
Expand All @@ -196,6 +200,7 @@ public SlimeBot(@NotNull Config config, @NotNull Dotenv credentials) throws IOEx
reports = null;
reportBlocks = null;
fdmdsQueue = null;
ticket = null;
level = null;
profileData = null;
cardProfiles = null;
Expand Down
Loading