from datetime import datetime, timedelta from typing import List, Dict def filter_accounts_next_30_days(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: """Filter accounts whose expiry date falls within the next 30 days. Args: accounts (List[Dict[str, int]]): A list of account dictionaries, each containing an 'expiaryDate' key with an epoch timestamp as its value. Returns: List[Dict[str, int]]: A list of accounts expiring within the next 30 days. """ now = datetime.now() thirty_days_later = now + timedelta(days=30) # Convert current time and 30 days later to epoch timestamps now_timestamp = int(now.timestamp()) thirty_days_later_timestamp = int(thirty_days_later.timestamp()) # Filter accounts with expiryDate within the next 30 days return [ account for account in accounts if now_timestamp <= account['expiaryDate'] < thirty_days_later_timestamp ] def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: """Filter accounts whose expiry date has passed. Args: accounts (List[Dict[str, int]]): A list of account dictionaries, each containing an 'expiaryDate' key with an epoch timestamp as its value. Returns: List[Dict[str, int]]: A list of accounts that have expired. """ # Get the current epoch timestamp current_timestamp = int(datetime.now().timestamp()) # Filter accounts where the current date is greater than the expiryDate expired_accounts = [ account for account in accounts if account['expiaryDate'] < current_timestamp ] return expired_accounts