mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-01 00:17:55 +03:00 
			
		
		
		
	* Refactor services mini app with single container * Make few little fixes to single container app * Update requirements.txt for single container example * Refactor multiple containers example * Add single container docs page * Create multiple containers page
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Services module."""
 | |
| 
 | |
| import logging
 | |
| import sqlite3
 | |
| from typing import Dict
 | |
| 
 | |
| from mypy_boto3_s3 import S3Client
 | |
| 
 | |
| 
 | |
| class BaseService:
 | |
| 
 | |
|     def __init__(self) -> None:
 | |
|         self.logger = logging.getLogger(
 | |
|             f'{__name__}.{self.__class__.__name__}',
 | |
|         )
 | |
| 
 | |
| 
 | |
| class UserService(BaseService):
 | |
| 
 | |
|     def __init__(self, db: sqlite3.Connection) -> None:
 | |
|         self.db = db
 | |
|         super().__init__()
 | |
| 
 | |
|     def get_user(self, email: str) -> Dict[str, str]:
 | |
|         self.logger.debug('User %s has been found in database', email)
 | |
|         return {'email': email, 'password_hash': '...'}
 | |
| 
 | |
| 
 | |
| class AuthService(BaseService):
 | |
| 
 | |
|     def __init__(self, db: sqlite3.Connection, token_ttl: int) -> None:
 | |
|         self.db = db
 | |
|         self.token_ttl = token_ttl
 | |
|         super().__init__()
 | |
| 
 | |
|     def authenticate(self, user: Dict[str, str], password: str) -> None:
 | |
|         assert password is not None
 | |
|         self.logger.debug(
 | |
|             'User %s has been successfully authenticated',
 | |
|             user['email'],
 | |
|         )
 | |
| 
 | |
| 
 | |
| class PhotoService(BaseService):
 | |
| 
 | |
|     def __init__(self, db: sqlite3.Connection, s3: S3Client) -> None:
 | |
|         self.db = db
 | |
|         self.s3 = s3
 | |
|         super().__init__()
 | |
| 
 | |
|     def upload_photo(self, user: Dict[str, str], photo_path: str) -> None:
 | |
|         self.logger.debug(
 | |
|             'Photo %s has been successfully uploaded by user %s',
 | |
|             photo_path,
 | |
|             user['email'],
 | |
|         )
 |