Exemple #1
0
    def _process_user(self, user_info: dict) -> int:
        """
        Creates an entry for the user in the database to establish data relationships.

        Parameters
        ----------
        user_info : dict
            The JSON containing the user info.

        Returns
        -------
        Account
            The user's Account ORM object.

        """
        username = user_info['username']

        print(f'Username: {username}')
        print(f"Level: {user_info['level']}\n")

        user = Account.query.filter_by(username=username).first()

        current_time = datetime.utcnow()

        if user:
            last_queried_time = user.last_queried
            time_since_last_query = self._calculate_time_delta(
                last_queried_time, current_time) or 0
            use_cached_values = time_since_last_query < (10 * 60)

            if not use_cached_values:
                user.last_queried = current_time
                database.session.commit()

            self._cache[
                user.
                id] = use_cached_values  # Use cached data for 10 minutes to prevent unnecessary load.

            return user

        user = Account()
        user.level = user_info['level']
        user.username = username
        user.start_date = user_info['started_at']
        database.session.add(user)
        database.session.commit()

        self._cache[user.id] = False

        return user