Service Postgres added

This commit is contained in:
2025-01-13 22:17:09 +03:00
parent 3bc0146767
commit 5d8b37179d
26 changed files with 1569 additions and 308 deletions

View File

@@ -0,0 +1,10 @@
from ErrorHandlers.ApiErrorHandlers.api_exc_handler import (
HTTPExceptionApiHandler,
HTTPExceptionApi,
)
__all__ = [
"HTTPExceptionApiHandler",
"HTTPExceptionApi",
]

View File

@@ -0,0 +1,45 @@
from typing import Any, Dict, List, Optional
class HTTPExceptionApi(Exception):
def __init__(self, error_code: str, lang: str):
self.error_code = error_code
self.lang = lang
class HTTPExceptionApiHandler:
def __init__(
self,
**kwargs,
):
self.EXCEPTIONS = kwargs.get(
"exceptions"
) # from fastapi.exceptions import HTTPException
self.STATUSES = kwargs.get("statuses") # from fastapi import status
self.EXCEPTION_DICTS: Dict = kwargs.get("exceptions_dict")
self.ERRORS_DICT: Dict = kwargs.get("errors_dict")
self.ERRORS_LANG: Dict = kwargs.get("error_language_dict")
self.RESPONSE_MODEL: Any = kwargs.get("response_model")
def retrieve_error_status_code(self, exc: HTTPExceptionApi):
grab_status = self.ERRORS_DICT.get(str(exc.error_code).upper(), "")
grab_status_code = self.EXCEPTION_DICTS.get(str(grab_status).upper(), "500")
return getattr(
self.STATUSES,
str(grab_status_code),
getattr(self.STATUSES, "HTTP_500_INTERNAL_SERVER_ERROR"),
)
def retrieve_error_message(self, exc: HTTPExceptionApi):
message_by_lang = self.ERRORS_LANG.get(str(exc.lang).lower(), {})
return message_by_lang.get(str(exc.error_code).upper(), "Unknown error")
def handle_exception(self, request, exc: HTTPExceptionApi):
status_code = self.retrieve_error_status_code(exc)
error_message = self.retrieve_error_message(exc)
return self.RESPONSE_MODEL(
status_code=int(status_code),
content={"message": error_message, "lang": exc.lang, "request": request},
)

View File

@@ -0,0 +1,4 @@
from ErrorHandlers.LanguageModels.base_languages import BaseErrorLanguageModels
__all__ = ["BaseErrorLanguageModels"]

View File

@@ -0,0 +1,38 @@
from ErrorHandlers.bases import ErrorLanguageModelClass, LanguageModelClass
class BaseErrorLanguageModelTurkish(ErrorLanguageModelClass):
NOT_CREATED: str = "Kayıt oluşturulamadı."
NOT_DELETED: str = "Kayıt silinemedi."
NOT_UPDATED: str = "Kayıt güncellenemedi."
NOT_LISTED: str = "Kayıt listelenemedi."
NOT_FOUND: str = "Kayıt bulunamadı."
ALREADY_EXISTS: str = "Kayıt zaten mevcut."
IS_NOT_CONFIRMED: str = "Kayıt onaylanmadı."
NOT_AUTHORIZED: str = "Yetkisiz kullanıcı."
NOT_VALID: str = "Gecersiz veri."
NOT_ACCEPTABLE: str = "Gecersiz veri."
INVALID_DATA: str = "Gecersiz veri."
UNKNOWN_ERROR: str = "Bilinmeyen bir hata oluştu."
class BaseErrorLanguageModelEnglish(ErrorLanguageModelClass):
NOT_CREATED: str = "Not Created."
NOT_DELETED: str = "Not Deleted."
NOT_UPDATED: str = "Not Updated."
NOT_LISTED: str = "Not Listed."
NOT_FOUND: str = "Not Found."
ALREADY_EXISTS: str = "Already Exists."
IS_NOT_CONFIRMED: str = "Not Confirmed."
NOT_AUTHORIZED: str = "Not Authorized."
NOT_VALID: str = "Not Valid."
NOT_ACCEPTABLE: str = "Not Acceptable."
INVALID_DATA: str = "Invalid Data."
UNKNOWN_ERROR: str = "Unknown Error occured."
class BaseErrorLanguageModels(LanguageModelClass):
tr: BaseErrorLanguageModelTurkish = BaseErrorLanguageModelTurkish
en: BaseErrorLanguageModelEnglish = BaseErrorLanguageModelEnglish

16
ErrorHandlers/base.py Normal file
View File

@@ -0,0 +1,16 @@
from ErrorHandlers.bases import BaseErrorModelClass
class BaseError(BaseErrorModelClass):
NOT_CREATED: int = 405
NOT_DELETED: int = 405
NOT_UPDATED: int = 405
NOT_LISTED: int = 404
NOT_FOUND: int = 404
ALREADY_EXISTS: int = 400
IS_NOT_CONFIRMED: int = 405
NOT_AUTHORIZED: int = 401
NOT_VALID: int = 406
NOT_ACCEPTABLE: int = 406
INVALID_DATA: int = 422
UNKNOWN_ERROR: int = 502

30
ErrorHandlers/bases.py Normal file
View File

@@ -0,0 +1,30 @@
from typing import Optional
class BaseErrorModelClass:
@classmethod
def retrieve_error_by_code(cls, error_code: str):
return getattr(cls, error_code, 502)
class StatusesModelClass:
@classmethod
def retrieve_error_by_code(cls, error_code: str):
return getattr(cls, error_code, 502)
class ErrorLanguageModelClass:
@classmethod
def retrieve_error_header(cls, error_code: str):
return getattr(cls, error_code, "Unknown Error occured.")
class LanguageModelClass:
@classmethod
def retrieve_error_by_code(cls, error_code: str, language: Optional[str] = "tr"):
language_model: ErrorLanguageModelClass = getattr(cls, language, "tr")
return language_model.retrieve_error_header(error_code)

61
ErrorHandlers/statuses.py Normal file
View File

@@ -0,0 +1,61 @@
from ErrorHandlers.bases import StatusesModelClass
class Statuses(StatusesModelClass):
HTTP_100_CONTINUE = 100
HTTP_101_SWITCHING_PROTOCOLS = 101
HTTP_102_PROCESSING = 102
HTTP_103_EARLY_HINTS = 103
HTTP_200_OK = 200
HTTP_201_CREATED = 201
HTTP_202_ACCEPTED = 202
HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203
HTTP_204_NO_CONTENT = 204
HTTP_205_RESET_CONTENT = 205
HTTP_206_PARTIAL_CONTENT = 206
HTTP_207_MULTI_STATUS = 207
HTTP_208_ALREADY_REPORTED = 208
HTTP_226_IM_USED = 226
HTTP_300_MULTIPLE_CHOICES = 300
HTTP_301_MOVED_PERMANENTLY = 301
HTTP_302_FOUND = 302
HTTP_303_SEE_OTHER = 303
HTTP_304_NOT_MODIFIED = 304
HTTP_305_USE_PROXY = 305
HTTP_306_RESERVED = 306
HTTP_307_TEMPORARY_REDIRECT = 307
HTTP_308_PERMANENT_REDIRECT = 308
HTTP_400_BAD_REQUEST = 400
HTTP_401_UNAUTHORIZED = 401
HTTP_402_PAYMENT_REQUIRED = 402
HTTP_403_FORBIDDEN = 403
HTTP_404_NOT_FOUND = 404
HTTP_405_METHOD_NOT_ALLOWED = 405
HTTP_406_NOT_ACCEPTABLE = 406
HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407
HTTP_408_REQUEST_TIMEOUT = 408
HTTP_409_CONFLICT = 409
HTTP_410_GONE = 410
HTTP_411_LENGTH_REQUIRED = 411
HTTP_412_PRECONDITION_FAILED = 412
HTTP_413_REQUEST_ENTITY_TOO_LARGE = 413
HTTP_414_REQUEST_URI_TOO_LONG = 414
HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE = 416
HTTP_417_EXPECTATION_FAILED = 417
HTTP_418_IM_A_TEAPOT = 418
HTTP_421_MISDIRECTED_REQUEST = 421
HTTP_422_UNPROCESSABLE_ENTITY = 422
HTTP_423_LOCKED = 423
HTTP_424_FAILED_DEPENDENCY = 424
HTTP_426_UPGRADE_REQUIRED = 426
HTTP_428_PRECONDITION_REQUIRED = 428
HTTP_429_TOO_MANY_REQUESTS = 429
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451
HTTP_500_INTERNAL_SERVER_ERROR = 500
HTTP_502_BAD_GATEWAY = 502
@classmethod
def retrieve_error_by_code(cls, error_code: str):
return getattr(cls, error_code, 502)