Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions src/connectors/example/enum.py
Original file line number Diff line number Diff line change
@@ -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
3 changes: 0 additions & 3 deletions src/connectors/example/resources/resource/organisations.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@
"name": "Name of this file."
}
],
"member": [
0
],
"note": [
{
"value": "A brief record of points or ideas about this AI resource."
Expand Down
9 changes: 8 additions & 1 deletion src/routers/enum_routers/enum_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down