Add MemberType enum and memberType field to Member entity for efficient database queries
Add avatarType field to Avatar entity for simple type checking
- Add TYPE column to store 'photo' or 'Avatar Creator' - Remove duplicate constructors that conflicted with Lombok @NoArgsConstructor - Set avatarType when crea...
Add avatarType field to Avatar entity for simple type checking
- Add TYPE column to store 'photo' or 'Avatar Creator' - Set in constructors automatically - Avoids need for instanceof checks and proxy issues
Add ThemeBackground entity and repository with User/Member relationships
Add fileHash field to Avatar entity for secure file storage
- Add fileHash column to store SHA-256 hash of avatar ID - Hash is used for MinIO file naming to prevent enumeration attacks - Format: {hash}.{fileExtension} in...
Correct MinIO client endpoint format for HTTPS theme domain
Extract hostname from custom endpoint URL for MinIO client
Add getPresignedUrlWithEndpoint method for custom endpoint presigned URLs
Add AvatarPhoto and AvatarAvatar Creator classes, refactor Avatar inheritance structure
Add Avatar and UserBackground repositories and presigned URL support
- Added AvatarRepository with methods to find avatars by user - Added UserBackgroundRepository with methods to find backgrounds by user/member - Added getPresig...
Simplify Avatar model - avatars belong only to User
- Removed member field from Avatar class - avatars now belong only to users - Removed OneToMany avatars from Member class - members don't own avatars - Members ...
Remove redundant isSet field from Avatar class
- Removed isSet field since User/Member classes already have ManyToOne avatar relationship - The active avatar is determined by the avatar field in User/Member,...
Replace UserPhoto with Avatar inheritance hierarchy and update UserBackground
- Renamed UserPhoto to Avatar (base class) using JPA JOINED inheritance - Created AvatarPhoto subclass for uploaded photos (stores file extension only) - Create...
Add UserPhoto and UserBackground entities with User/Member relationships
- Created UserPhoto entity for storing user and member profile photos - Created UserBackground entity for storing user and member background images - Both entit...
Search for existing chat sessions by participant membership, not just session owner
- Changed findOrCreateChatSession to search MediaSessionMember records instead of MediaSession.member - Now searches sessions where creator is a participant (me...
Add JOIN FETCH to eagerly load member in message queries
- Added JOIN FETCH m.member to both findBySessionAndIsRemovedFalse queries - Ensures member entity is eagerly loaded to avoid lazy loading issues - Fixes issue ...
Automatically create NATS JetStream stream if it doesn't exist
- Added createStreamIfNotExists method to check and create the CHAT_MESSAGES stream - Stream is created with subjects from configuration (chat.>) - Fixes 'No ma...
Make NatsMessageService work with Optional JetStream injection
- Changed JetStream injection to Optional with @Autowired(required=false) to handle bean ordering issues - Removed @ConditionalOnBean to allow service creation ...
Reorder annotations in NatsMessageService to check property first, then bean
Correct import for ConditionalOnProperty in NatsMessageService
Add ConditionalOnProperty to NatsMessageService to ensure it only loads when NATS is enabled
Remove incorrect code in createChatSession - cascade handles chat saving
Clarify that messages are always saved to database, even if recipient is offline
Add pagination support for message history and findOrCreateChatSession for two-member chats
Add @PrePersist to MediaObj to automatically set dateCreated
Add @PrePersist to MediaSessionMember to automatically set dateCreated
Use @PrePersist to automatically set dateCreated instead of manual assignment
Set dateCreated when creating MediaSession to fix database constraint violation
Add JOIN FETCH to eagerly load organization and user relationships
Change department join column from dept_id to department_id to match database schema
Add @DiscriminatorValue and @PrimaryKeyJoinColumn to Employee entity for JOINED inheritance. Change table name to lowercase for CockroachDB compatibility
Add explicit @Query for findByOrganizationId to ensure proper query generation
Remove JetStreamApiException from catch block (not thrown)
Add connection timeout to NATS connection to prevent startup hang
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
