Implement Service Refactoring
<UserStory> 1958: Service Refactoring </UserStory> UserStory #1958 <Changes> 1. Added DataStoreLockGuard.h include to project file and InventoryManagementService for thread-safe datastore operations. 2. Enhanced DataStore::getUsers to load SerializedUser records, refresh cache, and attach notifications with recipient validation. 3. Enhanced DataStore::getInventoryItems to load SerializedInventoryItem records and refresh cache for tracked inventory items. 4. Refactored InventoryManagementService::sendLowStockAlerts to use tracked inventory and user maps with DataStoreLockGuard, ensuring safe access. 5. Removed legacy observer management, load/save inventory items, and related persistence functions from InventoryManagementService. 6. Updated InventoryManagementService::addInventoryItem to insert new records into tracked inventory map and persist changes via saveInventoryItems. 7. Updated InventoryManagementService::addInventoryItemStock to validate item existence, update quantity, mark record as MODIFIED, and persist changes. 8. Refactored InventoryManagementService::getInventoryItems to return object map extracted from tracked records with DataStoreLockGuard. 9. Updated InventoryManagementService::removeInventoryItem to validate item ID, mark state as INACTIVE, set record state to MODIFIED, and persist changes. 10. Updated InventoryManagementService::getInventoryItem to safely retrieve inventory items from tracked records with error handling. </Changes> <Test> N/A </Test> <Review> Sreeja Reghukumar </Review>
This commit is contained in:
@@ -228,6 +228,22 @@ Returns:
|
||||
*/
|
||||
util::Map<std::string, TrackedRecord<User>>& DataStore::getUsers()
|
||||
{
|
||||
auto users = loadRecords<User, SerializedUser>(m_users);
|
||||
refreshCache(m_userCache, users);
|
||||
auto& notifications = getNotifications();
|
||||
int numberOfNotifications = m_notificationCache.getSize();
|
||||
for (int index = 0; index < numberOfNotifications; index++)
|
||||
{
|
||||
Notification* notification = notifications.getValueAt(index).data;
|
||||
const std::string& recipientUserId = notification->getRecipientUserId();
|
||||
int userIndex = m_userCache.find(recipientUserId);
|
||||
if (userIndex == -1)
|
||||
{
|
||||
throw std::runtime_error("Invalid recipient user ID");
|
||||
}
|
||||
User* user = m_userCache.getValueAt(userIndex).data;
|
||||
user->addNotification(notification);
|
||||
}
|
||||
return m_userCache;
|
||||
}
|
||||
|
||||
@@ -280,6 +296,8 @@ Returns:
|
||||
*/
|
||||
util::Map<std::string, TrackedRecord<InventoryItem>>& DataStore::getInventoryItems()
|
||||
{
|
||||
auto inventoryItems = loadRecords<InventoryItem, SerializedInventoryItem>(m_inventoryItems);
|
||||
refreshCache(m_inventoryItemCache, inventoryItems);
|
||||
return m_inventoryItemCache;
|
||||
}
|
||||
|
||||
@@ -419,6 +437,7 @@ Returns:
|
||||
*/
|
||||
void DataStore::saveInventoryItems()
|
||||
{
|
||||
saveRecords<InventoryItem, SerializedInventoryItem>(m_inventoryItems, m_inventoryItemCache);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user