diff --git a/src/main/java/org/to/telegramfinalproject/Models/ChannelAdmin.java b/src/main/java/org/to/telegramfinalproject/Models/ChannelAdmin.java new file mode 100644 index 0000000..ebe32fd --- /dev/null +++ b/src/main/java/org/to/telegramfinalproject/Models/ChannelAdmin.java @@ -0,0 +1,136 @@ +package org.to.telegramfinalproject.Models; + +import java.time.LocalDateTime; +import java.util.UUID; + +public class ChannelAdmin { + private String channelId; + private UUID userId; + private LocalDateTime addedAt; + private UUID addedBy; + private String role; // e.g., "owner", "admin" + private boolean canPostMessage; + private boolean canEditSetting; + private boolean canDeleteMessages; + private boolean canDeleteMembers; + private boolean canAddMembers; + + public ChannelAdmin(String channelId, UUID userId, LocalDateTime addedAt, UUID addedBy, + String role, boolean canPostMessage, boolean canEditSetting, boolean canDeleteMessages, + boolean canDeleteMembers, boolean canAddMembers) { + this.channelId = channelId; + this.userId = userId; + this.addedAt = addedAt; + this.addedBy = addedBy; + this.role = role; + this.canPostMessage = canPostMessage; + this.canEditSetting = canEditSetting; + this.canDeleteMessages = canDeleteMessages; + this.canDeleteMembers = canDeleteMembers; + this.canAddMembers = canAddMembers; + } + + // Overloaded constructor with default values from SQL + public ChannelAdmin(String channelId, UUID userId, UUID addedBy) { + this.channelId = channelId; + this.userId = userId; + this.addedBy = addedBy; + } + + // Getters and setters + public String getChannelId() { + return channelId; + } + + public void setChannelId(String channelId) { + this.channelId = channelId; + } + + public UUID getUserId() { + return userId; + } + + public void setUserId(UUID userId) { + this.userId = userId; + } + + public LocalDateTime getAddedAt() { + return addedAt; + } + + public void setAddedAt(LocalDateTime addedAt) { + this.addedAt = addedAt; + } + + public UUID getAddedBy() { + return addedBy; + } + + public void setAddedBy(UUID addedBy) { + this.addedBy = addedBy; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public boolean getCanPostMessage() { + return canPostMessage; + } + + public void setCanPostMessage(boolean canPostMessage) { + this.canPostMessage = canPostMessage; + } + + public boolean getCanEditSetting() { + return canEditSetting; + } + + public void setCanEditSetting(boolean canEditSetting) { + this.canEditSetting = canEditSetting; + } + + public boolean getCanDeleteMessages() { + return canDeleteMessages; + } + + public void setCanDeleteMessages(boolean canDeleteMessages) { + this.canDeleteMessages = canDeleteMessages; + } + + public boolean getCanDeleteMembers() { + return canDeleteMembers; + } + + public void setCanDeleteMembers(boolean canDeleteMembers) { + this.canDeleteMembers = canDeleteMembers; + } + + public boolean getCanAddMembers() { + return canAddMembers; + } + + public void setCanAddMembers(boolean canAddMembers) { + this.canAddMembers = canAddMembers; + } + + @Override + public String toString() { + return "ChannelAdmin{" + + "channelId='" + channelId + '\'' + + ", userId=" + userId + + ", addedAt=" + addedAt + + ", addedBy=" + addedBy + + ", role='" + role + '\'' + + ", canPost=" + canPostMessage + + ", canEdit=" + canEditSetting + + ", canDeleteMessages=" + canDeleteMessages + + ", canDeleteMembers=" + canDeleteMembers + + ", canAddMembers=" + canAddMembers + + '}'; + } +} diff --git a/src/main/java/org/to/telegramfinalproject/Models/MessageReceipt.java b/src/main/java/org/to/telegramfinalproject/Models/MessageReceipt.java new file mode 100644 index 0000000..7247f76 --- /dev/null +++ b/src/main/java/org/to/telegramfinalproject/Models/MessageReceipt.java @@ -0,0 +1,58 @@ +package org.to.telegramfinalproject.Models; + +import java.time.LocalDateTime; +import java.util.UUID; + +public class MessageReceipt { + private UUID messageId; + private UUID userId; + private LocalDateTime readAt; + + public MessageReceipt(UUID messageId, UUID userId, LocalDateTime readAt) { + this.messageId = messageId; + this.userId = userId; + this.readAt = readAt; + } + + // Overloaded constructor if readAt is not provided (use current timestamp) + public MessageReceipt(UUID messageId, UUID userId) { + this.messageId = messageId; + this.userId = userId; + this.readAt = LocalDateTime.now(); + } + + // Getters + public UUID getMessageId() { + return messageId; + } + + public UUID getUserId() { + return userId; + } + + public LocalDateTime getReadAt() { + return readAt; + } + + // Setters + public void setMessageId(UUID messageId) { + this.messageId = messageId; + } + + public void setUserId(UUID userId) { + this.userId = userId; + } + + public void setReadAt(LocalDateTime readAt) { + this.readAt = readAt; + } + + @Override + public String toString() { + return "MessageReceipt{" + + "messageId=" + messageId + + ", userId=" + userId + + ", readAt=" + readAt + + '}'; + } +} diff --git a/src/main/resources/init.sql b/src/main/resources/init.sql index b4730fa..47eb518 100644 --- a/src/main/resources/init.sql +++ b/src/main/resources/init.sql @@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS users( internal_uuid UUID PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password TEXT NOT NULL, - profile_name VARCHAR(100), + profile_name VARCHAR(100) NOT NULL, bio TEXT, --(Bonus) image_url TEXT, status VARCHAR(20) DEFAULT 'offline', @@ -87,8 +87,8 @@ CREATE TABLE IF NOT EXISTS channel_admins ( added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, added_by UUID REFERENCES users(internal_uuid), role VARCHAR(20) DEFAULT 'admin', --owner, admin - can_post BOOLEAN DEFAULT TRUE, - can_edit BOOLEAN DEFAULT FALSE, + can_post_messages BOOLEAN DEFAULT TRUE, + can_edit_setting BOOLEAN DEFAULT FALSE, -- profile, bio, name, etc. can_delete_messages BOOLEAN DEFAULT FALSE, can_delete_members BOOLEAN DEFAULT FALSE, can_add_members BOOLEAN DEFAULT TRUE,