Introduces RawAppleAppCommand and RawGoogleAppCommand to allow admins to fetch and download raw JSON responses from the Apple App Store and Google Play Store scrapers. Refactors AppStoreScraper and GooglePlayScraper to expose rawApp methods and improves method naming for clarity. Updates StoreScrapeBot to register the new commands and adjusts .env.example for better configuration clarity.
Refactored sendMessage calls in DeleteAppleAppCommand and InfoCommand to split long lines for improved code readability. No functional changes were made.
Introduced AbstractCollectionRepository and AbstractSingletonRepository to clarify repository types and encapsulate logic for single-key and collection-based repositories. Updated AdminRepository, AppleAppRepository, GoogleAppRepository, and GroupRepository to extend the appropriate abstract classes. Removed COMMON_COLLECTION_NAME from Constant.java and enforced collection name restrictions in AbstractRepository.
Introduces a scheduled task that checks for apps not updated within a warning threshold and sends notifications to groups. Adds scheduling utilities, constants for scheduling, and logic to format and send update reports for both Apple and Google apps. Also includes a new NonUpdatedApp record and improvements to the Table class for better formatting.
Replaces Config with Environment throughout the codebase for environment variable management. Introduces a Table utility class for formatting tabular data in bot commands, refactoring commands to use this for improved output formatting. Removes unused AppType enum. Updates test cases and build configuration for better IDE integration.
Renamed the SOURCE_VERSION constant to SOURCE_COMMIT in Config.java and updated its usage in Main.java. The environment variable and related references now consistently use SOURCE_COMMIT to better reflect the tracked value.
Added a startup notification to the creator with the current bot version. Refactored ADMIN_IDS to a List, introduced CREATOR_ID and SOURCE_VERSION constants in Config, and improved environment variable handling.
Refactored Apple app-related commands and data structures to include country information, allowing users to specify a country when adding or querying Apple apps. Updated method signatures, command help texts, and output formatting to reflect this change. This improves accuracy for apps that require country-specific data.
Introduces a new method getAppRatings in AppStoreScraper to fetch app ratings. Updates CheckAppScoreCommand to display ratings instead of reviews, and refactors AppleAppRequest for improved parameter handling.
Replaces string-based app tracking in Group with AppleAppInfo and GoogleAppInfo records, enabling storage of additional metadata (e.g., country for Google apps). Updates all related commands and logic to use the new records, improves command argument handling, and enhances output formatting for app lists and checks.
Introduces CheckAppScoreCommand to display app scores and reviews/ratings for Apple and Google apps. Refactors AppStoreScraper and GooglePlayScraper to provide methods for retrieving app scores, reviews, and updated dates, and improves AddAppleAppCommand and AddGoogleAppCommand to validate and fetch app info before adding. Updates AdminRepository to use a common collection and single-key logic, and modifies Constant to use a common collection name.
Replaces Redis with Couchbase as the primary data store. Updates environment variables, dependencies, and Docker Compose configuration to use Couchbase. Refactors repository and model classes to use Couchbase APIs, removes Redis utility and related code, and adds Couchbase utility for collection management. Updates AdminRepository to use 'admin' as the key instead of an empty string.
Introduces commands for adding, deleting, listing, and checking Apple and Google apps per group, as well as group management commands. Refactors models for app and group storage, adds caching for app data, and updates repositories to support cache expiration. Improves bot initialization and command registration logic.
Replaces Couchbase with Redis for data persistence, updating environment variables, Docker Compose files, and repository logic. Removes Couchbase and Jackson dependencies, introduces Gson for JSON serialization, and refactors models and repositories to support Redis. Adds utility classes for Redis and Gson, and updates tests and scrapers to use Gson.