Add custom forms support to markets - Add MarketCustomForm entity for many-to-many relationship with ordering - Update LeadMarket to include customForms relationship - Add MarketCustomFormRepository - Update LeadMarketDTO to include custom forms - Update request DTOs to support custom form associations - Add service methods for managing custom form associations
Add null checks and validation in CustomFormService createForm/updateForm
- Add null/empty checks for fieldId before calling trim().toLowerCase() to prevent NullPointerException - Add comprehensive validation for required fields (fiel...
Add custom forms feature with form builder support
- Add FormFieldType enum with 12 field types (TEXT, TEXT_AREA, MONEY, DATE, DATE_TIME, DROPDOWN, RADIO, LIST, CHECKBOX, ADDRESS, US_SSN, US_STATE) - Add entity ...
Add null safety checks in LeadVendorDTO to prevent null title errors
Change name to title and add description field to LeadVendor and LeadVendorProduct
Add full CRUD support for LeadVendor and LeadVendorProduct with String IDs
Change LeadMarketDTO IDs to String to prevent JavaScript precision loss
Add explicit @Query annotations to LeadMarketRepository methods for proper organization.id resolution
Change salesType to String in LeadMarketDTO to match frontend expectations
Change salesType from SaleType enum to String in request DTOs to match frontend
Add LeadMarket entity, repository, service, and DTOs for CRM markets management
Add streamGuid field to Organization for organization-wide media feed
Add LIKE enum value to MediaBlockReasonType for social media likes
Add streamGuid to Lead and support lead-specific media streams
- Added streamGuid field to Lead.java to reference MediaSession stream - Updated MediaSessionPost to support optional lead association - Updated ***************...
Add MediaObjReportRepository and update media services for social feed
- Add MediaObjReportRepository for like/reaction system - Update MediaService with createPostSession and NATS event publishing - Update MediaSessionRepository w...
Update EmploymentStatusType to use STRING enum storage instead of ID
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
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
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.