schemas updated
This commit is contained in:
parent
50ae911d4e
commit
ab76e972e3
|
|
@ -0,0 +1,71 @@
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
|
class ApiStatic:
|
||||||
|
PLACEHOLDER = "https://s.tmimgcdn.com/scr/800x500/276800/building-home-nature-logo-vector-template-3_276851-original.jpg"
|
||||||
|
FORGOT_LINK = "https://www.evyos.com.tr/password/create?tokenUrl="
|
||||||
|
BLACKLIST_LINK = "https://www.evyos.com.tr/support/unknown-login-notice/"
|
||||||
|
APP_DIR = "/home/berkay/git-evyos/api-managment-backend/"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def forgot_link(cls, forgot_key):
|
||||||
|
return cls.FORGOT_LINK + forgot_key
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def blacklist_login(cls, record_id):
|
||||||
|
return cls.BLACKLIST_LINK + record_id
|
||||||
|
|
||||||
|
|
||||||
|
class Auth:
|
||||||
|
ACCESS_EMAIL_EXT = "evyos.com.tr"
|
||||||
|
ACCESS_TOKEN_TAG = "evyos-session-key"
|
||||||
|
REFRESHER_TOKEN_TAG = "eys_token_refresher"
|
||||||
|
SECRET_KEY_72 = (
|
||||||
|
"t3sUAmjTGeTgDc6dAUrB41u2SNg0ZHzj4HTjem95y3fRH1nZXOHIBj163kib6iLybT0gLaxq"
|
||||||
|
)
|
||||||
|
SECRET_KEY_96 = "7ct8VpiwaP1hR2bVSet4dEEAgepuTZUOnO1QxOgKyDqBR2PkqNhcubSrbUUigQKoQA1PBoeeQn5ZCo24pESmVtKs76nA4EKq"
|
||||||
|
SECRET_KEY_144 = (
|
||||||
|
"R2p5Rq6KCr6PCfjFYUeH1keF2VWHFEuqINVjBGGnvRA2m10pYUKqfOtIGBcaj2v5wZmElDndzSHGOS7roQsoTelPSok0"
|
||||||
|
+ "qqMucurMWE0FGexGpFuJkfPEm9tH2OjMOqegvEetpSVywH0W4Kh4"
|
||||||
|
)
|
||||||
|
|
||||||
|
ALGORITHM = "HS256"
|
||||||
|
ACCESS_TOKEN_LENGTH: int = 90
|
||||||
|
REFRESHER_TOKEN_LENGTH: int = 144
|
||||||
|
PASSWORD_EXPIRE_DAY = datetime.timedelta(days=30)
|
||||||
|
TOKEN_EXPIRE_MINUTES_1 = datetime.timedelta(minutes=1)
|
||||||
|
TOKEN_EXPIRE_MINUTES_15 = datetime.timedelta(minutes=15)
|
||||||
|
TOKEN_EXPIRE_MINUTES_30 = datetime.timedelta(minutes=30)
|
||||||
|
TOKEN_EXPIRE_DAY_1 = datetime.timedelta(days=1)
|
||||||
|
TOKEN_EXPIRE_DAY_5 = datetime.timedelta(days=5)
|
||||||
|
TOKEN_EXPIRE_DAY_15 = datetime.timedelta(days=15)
|
||||||
|
TOKEN_EXPIRE_DAY_30 = datetime.timedelta(days=30)
|
||||||
|
|
||||||
|
|
||||||
|
class Routers:
|
||||||
|
NO_TOKEN_REQUIRES = [
|
||||||
|
"/",
|
||||||
|
"/metrics",
|
||||||
|
"/openapi.json",
|
||||||
|
"/docs",
|
||||||
|
"/redoc",
|
||||||
|
"/auth/login",
|
||||||
|
"/favicon.ico",
|
||||||
|
"/docs/oauth2-redirect",
|
||||||
|
"/authentication/select",
|
||||||
|
"/authentication/login",
|
||||||
|
"/authentication/logout",
|
||||||
|
"/authentication/refresher",
|
||||||
|
"/authentication/refresh",
|
||||||
|
"/authentication/disconnect",
|
||||||
|
"/authentication/create_password",
|
||||||
|
"/authentication/reset_password",
|
||||||
|
"/authentication/forgot",
|
||||||
|
"/authentication/valid",
|
||||||
|
]
|
||||||
|
NO_EVENT_REQUIRES = [
|
||||||
|
"/access/endpoints/available",
|
||||||
|
"/access/endpoint/available",
|
||||||
|
"/validations/endpoint",
|
||||||
|
"/authentication/avatar",
|
||||||
|
]
|
||||||
|
|
@ -1,9 +1,16 @@
|
||||||
|
|
||||||
class HostConfig:
|
class HostConfig:
|
||||||
MAIN_HOST = "10.10.2.36" # http://10.10.2.36
|
MAIN_HOST = "10.10.2.36" # http://10.10.2.36
|
||||||
EMAIL_HOST = "10.10.2.34" # http://10.10.2.34
|
EMAIL_HOST = "10.10.2.34" # http://10.10.2.34
|
||||||
|
|
||||||
|
|
||||||
class MainConfig:
|
class MainConfig:
|
||||||
|
|
||||||
|
APP_NAME = "evyos-web-api-gateway"
|
||||||
|
TITLE = "WAG API Web Api Gateway"
|
||||||
|
DESCRIPTION = "This api is serves as web api gateway only to evyos web services."
|
||||||
|
APP_URL = "https://www.wag.eys.gen.tr"
|
||||||
|
|
||||||
DATETIME_FORMAT = "YYYY-MM-DD HH:mm:ss Z"
|
DATETIME_FORMAT = "YYYY-MM-DD HH:mm:ss Z"
|
||||||
DATETIME_FORMAT_JS = "YYYY-MM-DD HH:mm:ss +0"
|
DATETIME_FORMAT_JS = "YYYY-MM-DD HH:mm:ss +0"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ from sqlalchemy import String
|
||||||
from sqlalchemy.orm import mapped_column, Mapped
|
from sqlalchemy.orm import mapped_column, Mapped
|
||||||
|
|
||||||
from cryptography.fernet import Fernet, MultiFernet
|
from cryptography.fernet import Fernet, MultiFernet
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
|
|
||||||
|
|
||||||
class CrypterEngine(CrudCollection):
|
class CrypterEngine(CrudCollection):
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from datetime import datetime, timedelta
|
from datetime import timedelta
|
||||||
from typing import List, Optional, Union
|
from typing import List, Union
|
||||||
|
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from sqlalchemy.orm import mapped_column, relationship, Mapped
|
from sqlalchemy.orm import mapped_column, relationship, Mapped
|
||||||
|
|
@ -16,17 +16,17 @@ from sqlalchemy import (
|
||||||
or_,
|
or_,
|
||||||
)
|
)
|
||||||
|
|
||||||
from api_library.date_time_actions.date_functions import system_arrow
|
from ApiLibrary.date_time_actions.date_functions import system_arrow
|
||||||
from Services.PostgresDb import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
from databases.extensions.selector_classes import SelectActionWithEmployee
|
from ApiValidations.Request import (
|
||||||
from api_validations.validations_request import (
|
|
||||||
InsertBuild,
|
InsertBuild,
|
||||||
InsertBuildParts,
|
InsertBuildParts,
|
||||||
InsertBuildLivingSpace,
|
InsertBuildLivingSpace,
|
||||||
UpdateBuild,
|
UpdateBuild,
|
||||||
)
|
)
|
||||||
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
|
# from databases.extensions.selector_classes import SelectActionWithEmployee
|
||||||
from databases.language_models.building.build import (
|
# from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
|
||||||
|
from LanguageModels.Database.building.build import (
|
||||||
BuildTypesLanguageModel,
|
BuildTypesLanguageModel,
|
||||||
Part2EmployeeLanguageModel,
|
Part2EmployeeLanguageModel,
|
||||||
BuildPartsLanguageModel,
|
BuildPartsLanguageModel,
|
||||||
|
|
@ -246,7 +246,7 @@ class Build(CrudCollection, SelectActionWithEmployee):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_action(cls, data: InsertBuild, token):
|
def create_action(cls, data: InsertBuild, token):
|
||||||
from databases import Addresses
|
from Schemas import Addresses
|
||||||
|
|
||||||
data_dict = data.excluded_dump()
|
data_dict = data.excluded_dump()
|
||||||
data_dict["address_id"] = None
|
data_dict["address_id"] = None
|
||||||
|
|
@ -280,7 +280,7 @@ class Build(CrudCollection, SelectActionWithEmployee):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_action(cls, data: UpdateBuild, build_uu_id: str, token):
|
def update_action(cls, data: UpdateBuild, build_uu_id: str, token):
|
||||||
from databases import Addresses
|
from Schemas import Addresses
|
||||||
|
|
||||||
print("data_dict", data.dump())
|
print("data_dict", data.dump())
|
||||||
data_dict = data.excluded_dump()
|
data_dict = data.excluded_dump()
|
||||||
|
|
@ -427,7 +427,7 @@ class BuildParts(CrudCollection):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_action(cls, data: InsertBuildParts, token):
|
def create_action(cls, data: InsertBuildParts, token):
|
||||||
from databases import ApiEnumDropdown
|
from Schemas import ApiEnumDropdown
|
||||||
|
|
||||||
data_dict = data.dump()
|
data_dict = data.dump()
|
||||||
build_from_duty = Build.select_action(
|
build_from_duty = Build.select_action(
|
||||||
|
|
@ -565,7 +565,7 @@ class BuildLivingSpace(CrudCollection):
|
||||||
data: dict,
|
data: dict,
|
||||||
token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
|
token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
|
||||||
):
|
):
|
||||||
from databases import Services, OccupantTypes
|
from Schemas import Services, OccupantTypes
|
||||||
from api_events.events.events.events_bind_modules import (
|
from api_events.events.events.events_bind_modules import (
|
||||||
ModulesBindOccupantEventMethods,
|
ModulesBindOccupantEventMethods,
|
||||||
)
|
)
|
||||||
|
|
@ -596,7 +596,7 @@ class BuildLivingSpace(CrudCollection):
|
||||||
def find_living_from_customer_id(
|
def find_living_from_customer_id(
|
||||||
cls, customer_id, process_date, add_days: int = 32
|
cls, customer_id, process_date, add_days: int = 32
|
||||||
):
|
):
|
||||||
from api_library.date_time_actions.date_functions import system_arrow
|
from ApiLibrary.date_time_actions.date_functions import system_arrow
|
||||||
|
|
||||||
formatted_date = system_arrow.get(str(process_date))
|
formatted_date = system_arrow.get(str(process_date))
|
||||||
living_spaces = cls.filter_all(
|
living_spaces = cls.filter_all(
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from fastapi.exceptions import HTTPException
|
from fastapi.exceptions import HTTPException
|
||||||
|
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
|
||||||
|
|
||||||
from sqlalchemy import (
|
from sqlalchemy import (
|
||||||
String,
|
String,
|
||||||
|
|
@ -14,19 +13,19 @@ from sqlalchemy import (
|
||||||
)
|
)
|
||||||
from sqlalchemy.orm import mapped_column, relationship, Mapped
|
from sqlalchemy.orm import mapped_column, relationship, Mapped
|
||||||
|
|
||||||
from api_configs import RelationAccess
|
# from databases.extensions import SelectAction
|
||||||
from databases.extensions import SelectAction
|
from ApiValidations.Request import (
|
||||||
from api_validations.validations_request import (
|
|
||||||
InsertCompany,
|
InsertCompany,
|
||||||
UpdateCompany,
|
UpdateCompany,
|
||||||
MatchCompany2Company,
|
MatchCompany2Company,
|
||||||
)
|
)
|
||||||
from api_objects.auth.token_objects import EmployeeTokenObject
|
from api_objects.auth.token_objects import EmployeeTokenObject
|
||||||
from databases.language_models.company.company import (
|
from LanguageModels.Database.company.company import (
|
||||||
RelationshipDutyCompanyLanguageModel,
|
RelationshipDutyCompanyLanguageModel,
|
||||||
CompaniesLanguageModel,
|
CompaniesLanguageModel,
|
||||||
# CompanyDutiesLanguageModel,
|
# CompanyDutiesLanguageModel,
|
||||||
)
|
)
|
||||||
|
from Services.PostgresDb import CrudCollection
|
||||||
|
|
||||||
|
|
||||||
class RelationshipDutyCompany(CrudCollection):
|
class RelationshipDutyCompany(CrudCollection):
|
||||||
|
|
@ -44,7 +43,6 @@ class RelationshipDutyCompany(CrudCollection):
|
||||||
|
|
||||||
__tablename__ = "relationship_duty_company"
|
__tablename__ = "relationship_duty_company"
|
||||||
__exclude__fields__ = []
|
__exclude__fields__ = []
|
||||||
__access_by__ = RelationAccess.SuperAccessList
|
|
||||||
__language_model__ = RelationshipDutyCompanyLanguageModel
|
__language_model__ = RelationshipDutyCompanyLanguageModel
|
||||||
|
|
||||||
owner_id: Mapped[int] = mapped_column(
|
owner_id: Mapped[int] = mapped_column(
|
||||||
|
|
@ -75,7 +73,7 @@ class RelationshipDutyCompany(CrudCollection):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def match_company_to_company_commercial(cls, data: MatchCompany2Company, token):
|
def match_company_to_company_commercial(cls, data: MatchCompany2Company, token):
|
||||||
from databases import (
|
from Schemas import (
|
||||||
Duties,
|
Duties,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -123,7 +121,7 @@ class RelationshipDutyCompany(CrudCollection):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def match_company_to_company_organization(cls, data: MatchCompany2Company, token):
|
def match_company_to_company_organization(cls, data: MatchCompany2Company, token):
|
||||||
from databases import (
|
from Schemas import (
|
||||||
Duties,
|
Duties,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -251,7 +249,7 @@ class Companies(CrudCollection, SelectAction):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_action(cls, data: InsertCompany, token: EmployeeTokenObject):
|
def create_action(cls, data: InsertCompany, token: EmployeeTokenObject):
|
||||||
from databases import Addresses, Duties
|
from Schemas import Addresses, Duties
|
||||||
|
|
||||||
data_dict = data.model_dump()
|
data_dict = data.model_dump()
|
||||||
if cls.filter_one(cls.tax_no == str(data.tax_no).strip(), system=True).data:
|
if cls.filter_one(cls.tax_no == str(data.tax_no).strip(), system=True).data:
|
||||||
|
|
@ -298,7 +296,7 @@ class Companies(CrudCollection, SelectAction):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_action(cls, data: UpdateCompany, token):
|
def update_action(cls, data: UpdateCompany, token):
|
||||||
from databases import (
|
from Schemas import (
|
||||||
Addresses,
|
Addresses,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
from sqlalchemy import String, Integer, ForeignKey, Index, Boolean, Identity
|
from sqlalchemy import String, Integer, ForeignKey, Index, Boolean, Identity
|
||||||
from sqlalchemy.orm import mapped_column, Mapped
|
from sqlalchemy.orm import mapped_column, Mapped
|
||||||
|
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
|
|
||||||
|
|
||||||
class Departments(CrudCollection):
|
class Departments(CrudCollection):
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,15 @@ from sqlalchemy import (
|
||||||
)
|
)
|
||||||
from sqlalchemy.orm import mapped_column, Mapped
|
from sqlalchemy.orm import mapped_column, Mapped
|
||||||
|
|
||||||
from databases.language_models.company.employee import (
|
from LanguageModels.Database.company.employee import (
|
||||||
StaffLanguageModel,
|
StaffLanguageModel,
|
||||||
EmployeesLanguageModel,
|
EmployeesLanguageModel,
|
||||||
EmployeeHistoryLanguageModel,
|
EmployeeHistoryLanguageModel,
|
||||||
EmployeesSalariesLanguageModel,
|
EmployeesSalariesLanguageModel,
|
||||||
)
|
)
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
|
|
||||||
from api_validations.validations_request import InsertCompanyEmployees
|
from ApiValidations.Request import InsertCompanyEmployees
|
||||||
|
|
||||||
|
|
||||||
class Staff(CrudCollection):
|
class Staff(CrudCollection):
|
||||||
|
|
@ -47,7 +47,7 @@ class Staff(CrudCollection):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_action(cls, data: InsertCompanyEmployees):
|
def create_action(cls, data: InsertCompanyEmployees):
|
||||||
from databases import Duties
|
from Schemas import Duties
|
||||||
|
|
||||||
data_dict = data.model_dump()
|
data_dict = data.model_dump()
|
||||||
if duty := Duties.find_one(uu_id=data.duty_uu_id):
|
if duty := Duties.find_one(uu_id=data.duty_uu_id):
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
from databases.language_models.event.event import (
|
from LanguageModels.Database.event.event import (
|
||||||
EventsLanguageModel,
|
EventsLanguageModel,
|
||||||
ModulesLanguageModel,
|
ModulesLanguageModel,
|
||||||
ServicesLanguageModel,
|
ServicesLanguageModel,
|
||||||
|
|
@ -122,7 +122,7 @@ class Services(CrudCollection):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def retrieve_service_via_occupant_code(cls, occupant_code):
|
def retrieve_service_via_occupant_code(cls, occupant_code):
|
||||||
from databases import OccupantTypes
|
from Schemas import OccupantTypes
|
||||||
|
|
||||||
occupant_type = OccupantTypes.filter_by_one(
|
occupant_type = OccupantTypes.filter_by_one(
|
||||||
system=True,
|
system=True,
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,14 @@ from sqlalchemy import (
|
||||||
)
|
)
|
||||||
from sqlalchemy.orm import mapped_column, relationship, Mapped
|
from sqlalchemy.orm import mapped_column, relationship, Mapped
|
||||||
|
|
||||||
from api_library.date_time_actions.date_functions import system_arrow
|
from ApiLibrary.date_time_actions.date_functions import system_arrow
|
||||||
from api_configs import Auth, ApiStatic, RelationAccess
|
from AllConfigs.Token.config import Auth, ApiStatic
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
|
||||||
from databases.extensions import SelectAction, SelectActionWithEmployee
|
from Services.PostgresDb import CrudCollection
|
||||||
from databases.extensions.auth import UserLoginModule
|
# from databases.extensions import SelectAction, SelectActionWithEmployee
|
||||||
from api_validations.validations_request import InsertUsers, InsertPerson
|
# from databases.extensions.auth import UserLoginModule
|
||||||
from databases.language_models.identity.identity import (
|
from ApiValidations.Request import InsertUsers, InsertPerson
|
||||||
|
from LanguageModels.Database.identity.identity import (
|
||||||
UsersTokensLanguageModel,
|
UsersTokensLanguageModel,
|
||||||
UsersLanguageModel,
|
UsersLanguageModel,
|
||||||
PeopleLanguageModel,
|
PeopleLanguageModel,
|
||||||
|
|
@ -197,7 +198,7 @@ class Users(CrudCollection, UserLoginModule, SelectAction):
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_employee_and_duty_details(self):
|
def get_employee_and_duty_details(self):
|
||||||
from databases import Employees, Duties
|
from Schemas import Employees, Duties
|
||||||
|
|
||||||
found_person = People.filter_one(
|
found_person = People.filter_one(
|
||||||
People.id == self.person_id,
|
People.id == self.person_id,
|
||||||
|
|
@ -234,7 +235,7 @@ class Users(CrudCollection, UserLoginModule, SelectAction):
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_main_domain_and_other_domains(self, get_main_domain: bool = True):
|
def get_main_domain_and_other_domains(self, get_main_domain: bool = True):
|
||||||
from databases import MongoQueryIdentity
|
from Schemas import MongoQueryIdentity
|
||||||
|
|
||||||
query_engine = MongoQueryIdentity(company_uuid=self.related_company)
|
query_engine = MongoQueryIdentity(company_uuid=self.related_company)
|
||||||
domain_via_user = query_engine.get_domain_via_user(user_uu_id=str(self.uu_id))
|
domain_via_user = query_engine.get_domain_via_user(user_uu_id=str(self.uu_id))
|
||||||
|
|
@ -253,7 +254,6 @@ class RelationshipDutyPeople(CrudCollection):
|
||||||
|
|
||||||
__tablename__ = "relationship_duty_people"
|
__tablename__ = "relationship_duty_people"
|
||||||
__exclude__fields__ = []
|
__exclude__fields__ = []
|
||||||
__access_by__ = RelationAccess.SuperAccessList
|
|
||||||
__language_model__ = RelationshipDutyPeopleLanguageModel
|
__language_model__ = RelationshipDutyPeopleLanguageModel
|
||||||
|
|
||||||
company_id: Mapped[int] = mapped_column(
|
company_id: Mapped[int] = mapped_column(
|
||||||
|
|
@ -374,7 +374,7 @@ class People(CrudCollection, SelectAction):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_action(cls, data: InsertPerson, token):
|
def create_action(cls, data: InsertPerson, token):
|
||||||
from databases import Duties
|
from Schemas import Duties
|
||||||
|
|
||||||
token_duties_id, token_company_id = (
|
token_duties_id, token_company_id = (
|
||||||
token.selected_company.duty_id,
|
token.selected_company.duty_id,
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from sqlalchemy.orm import (
|
||||||
Mapped,
|
Mapped,
|
||||||
mapped_column,
|
mapped_column,
|
||||||
)
|
)
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
|
|
||||||
|
|
||||||
class ApiEnumDropdown(CrudCollection):
|
class ApiEnumDropdown(CrudCollection):
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
from sqlalchemy import String
|
from sqlalchemy import String
|
||||||
from sqlalchemy.orm import mapped_column, Mapped
|
from sqlalchemy.orm import mapped_column, Mapped
|
||||||
|
|
||||||
from databases.language_models.rules.rules import EndpointRestrictionLanguageModel
|
from LanguageModels.Database.rules.rules import EndpointRestrictionLanguageModel
|
||||||
from databases.sql_models.core_mixin import CrudCollection
|
from Services.PostgresDb import CrudCollection
|
||||||
|
|
||||||
|
|
||||||
class EndpointRestriction(CrudCollection):
|
class EndpointRestriction(CrudCollection):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue