diff --git a/src/connectors/example/enum.py b/src/connectors/example/enum.py new file mode 100644 index 00000000..12901b84 --- /dev/null +++ b/src/connectors/example/enum.py @@ -0,0 +1,78 @@ +from typing import Iterator, TypeVar + +from sqlmodel import SQLModel + +from connectors.abstract.resource_connector_on_start_up import ResourceConnectorOnStartUp +from connectors.record_error import RecordError +from connectors.resource_with_relations import ResourceWithRelations +from database.model.ai_resource.application_area import ApplicationArea +from database.model.educational_resource.educational_resource_type import ( + EducationalResourceType, +) +from database.model.event.event import EventMode, EventStatus +from database.model.agent.language import Language +from database.model.ai_asset.license import License +from database.model.agent.organisation import OrganisationType +from database.model.news.news_category import NewsCategory +from database.model.platform.platform_names import PlatformName + +RESOURCE = TypeVar("RESOURCE", bound=SQLModel) + + +class BaseEnum(ResourceConnectorOnStartUp[RESOURCE]): + @property + def platform_name(self) -> PlatformName: + return PlatformName.example + + def fetch( + self, limit: int | None = None + ) -> Iterator[RESOURCE | ResourceWithRelations[RESOURCE] | RecordError]: + return iter([]) + + +class EnumConnectorApplicationArea(BaseEnum): + @property + def resource_class(self) -> type[ApplicationArea]: + return ApplicationArea + + +class EnumConnectorEducationalResourceType(BaseEnum): + @property + def resource_class(self) -> type[EducationalResourceType]: + return EducationalResourceType + + +class EnumConnectorEventMode(BaseEnum): + @property + def resource_class(self): + return EventMode + + +class EnumConnectorEventStatus(BaseEnum): + @property + def resource_class(self): + return EventStatus + + +class EnumConnectorLanguage(BaseEnum): + @property + def resource_class(self): + return Language + + +class EnumConnectorLicense(BaseEnum): + @property + def resource_class(self): + return License + + +class EnumConnectorOrganisationType(BaseEnum): + @property + def resource_class(self): + return OrganisationType + + +class EnumConnectorNewsCategory(BaseEnum): + @property + def resource_class(self): + return NewsCategory diff --git a/src/connectors/example/resources/resource/organisations.json b/src/connectors/example/resources/resource/organisations.json index 9f360b4e..0571a566 100644 --- a/src/connectors/example/resources/resource/organisations.json +++ b/src/connectors/example/resources/resource/organisations.json @@ -47,9 +47,6 @@ "name": "Name of this file." } ], - "member": [ - 0 - ], "note": [ { "value": "A brief record of points or ideas about this AI resource." diff --git a/src/routers/enum_routers/enum_router.py b/src/routers/enum_routers/enum_router.py index c8715d6c..79bb788f 100644 --- a/src/routers/enum_routers/enum_router.py +++ b/src/routers/enum_routers/enum_router.py @@ -4,6 +4,7 @@ from fastapi import APIRouter from sqlmodel import select, Session +from authentication import KeycloakUser from database.model.named_relation import NamedRelation from database.session import DbSession from versioning import Version @@ -47,8 +48,14 @@ def get_resources(): return get_resources - def create_resource(self, session: Session, resource_create_instance: str): + def create_resource( + self, + session: Session, + resource_create_instance: str, + user: KeycloakUser | None = None, + ): # Used by synchronization.py: router.create_resource + # user parameter is ignored for enum/taxonomy types resource = self.resource_class(name=resource_create_instance) session.add(resource) session.commit()