diff --git a/src/config.py b/src/config.py index b1874d3..120354e 100644 --- a/src/config.py +++ b/src/config.py @@ -1,8 +1,10 @@ """ -Global configurations: import settings, app_configs +Global configurations -Classes: +Exports: - CustomBaseSettings - Base class to be used by all modules for loading configs + - settings: Global configurations object + - app_configs: Dict generated from configs, used in app initialisation """ from typing import Any diff --git a/src/schemas.py b/src/schemas.py index 52b0f94..812b574 100644 --- a/src/schemas.py +++ b/src/schemas.py @@ -1,3 +1,10 @@ +""" +Global Pydantic schemas + +Exports: + - CustomBaseModel: Schema used for all other Pydantic models + - ResourceName +""" from pydantic import BaseModel from typing import Optional diff --git a/src/service/config.py b/src/service/config.py index 4be170e..5d4fd3b 100644 --- a/src/service/config.py +++ b/src/service/config.py @@ -1,7 +1,3 @@ """ -Configurations for - -Configurations: - - List: Description - - Configs: Description +Configurations for the services module """ \ No newline at end of file diff --git a/src/service/constants.py b/src/service/constants.py index e1df957..52a8701 100644 --- a/src/service/constants.py +++ b/src/service/constants.py @@ -1,7 +1,3 @@ """ -Constants and error codes for - -Constants: - - List: Description - - Consts: Description +Constants for the services module """ \ No newline at end of file diff --git a/src/service/dependencies.py b/src/service/dependencies.py index d649b06..cda625a 100644 --- a/src/service/dependencies.py +++ b/src/service/dependencies.py @@ -1,13 +1,9 @@ """ -Router dependencies for +Dependencies related to the services module -Classes: - - List: Description - - Classes: Description - -Functions: - - List: Description - - Functions: Description +Exports: + - service_model_query_dependency: service_model: Gets service model from db, if it exists. Uses service_id from query param. + - service_model_body_dependency: service_model: Gets service model from db, if it exists. Uses service_id from request body. """ from typing import Annotated from fastapi import Depends, Query diff --git a/src/service/exceptions.py b/src/service/exceptions.py index e2b5232..8a1a2e3 100644 --- a/src/service/exceptions.py +++ b/src/service/exceptions.py @@ -1,9 +1,8 @@ """ -Module specific exceptions for +Exceptions related to the services module Exceptions: - - List: Description - - Exceptions: Description + - ServiceNotFoundException: Takes an optional service_id int """ from typing import Optional diff --git a/src/service/models.py b/src/service/models.py index 3f05e1d..68fd020 100644 --- a/src/service/models.py +++ b/src/service/models.py @@ -2,8 +2,8 @@ Database models for the services module Models: - - List: Description - - Models: Description + - Service: + - id[PK], name[U], api_key[U] """ from sqlalchemy import Column, Integer, String diff --git a/src/service/router.py b/src/service/router.py index f53d666..bf01a87 100644 --- a/src/service/router.py +++ b/src/service/router.py @@ -1,9 +1,11 @@ """ -Router endpoints for +Router endpoints for the services module Endpoints: - - List: Description - - Endpoints: Description + - [GET](/): [root user]: Get a list of all services(id, name) + - [POST](/): [super admin]: Register a new service(name) on the hub, returns the API key for the service to access the hub. + - [PATCH](/key): [super_admin]: Refreshes the API key for a service(id), returning a new one. + - [DELETE](/): [super_admin]: Removes a service(id) from the hub. """ from fastapi import APIRouter, status from psycopg.errors import UniqueViolation diff --git a/src/service/schemas.py b/src/service/schemas.py index d6f2882..2d89400 100644 --- a/src/service/schemas.py +++ b/src/service/schemas.py @@ -1,9 +1,10 @@ """ -Pydantic models for the service module +Pydantic models for service module -Models: - - List: Description - - Models: Description +Models follow the nomenclature of: +- Sub-models: "Schema" +- Mixins: "Mixin" +- Models: "" ie "ServiceGetServiceResponse" """ from pydantic import ConfigDict diff --git a/src/service/service.py b/src/service/service.py index 7365fa9..2609565 100644 --- a/src/service/service.py +++ b/src/service/service.py @@ -1,11 +1,3 @@ """ -Module specific business logic for - -Classes: - - List: Description - - Classes: Description - -Functions: - - List: Description - - Functions: Description +Business logic for the services module """ \ No newline at end of file diff --git a/src/service/utils.py b/src/service/utils.py index ecd41b0..8920a5f 100644 --- a/src/service/utils.py +++ b/src/service/utils.py @@ -1,13 +1,8 @@ """ -Non-business logic reusable functions and classes for +Non-business logic reusable functions and classes for the services module -Classes: - - List: Description - - Classes: Description - -Functions: - - List: Description - - Functions: Description +Exports: + - generate_api_key(): returns a new UUID """ import uuid diff --git a/src/user/config.py b/src/user/config.py index 1b9a778..9bbcbc4 100644 --- a/src/user/config.py +++ b/src/user/config.py @@ -1,7 +1,3 @@ """ -Configurations for user module - -Configurations: - - List: Description - - Configs: Description +Configurations for the user module """ \ No newline at end of file diff --git a/src/user/constants.py b/src/user/constants.py index 940b259..fc6a780 100644 --- a/src/user/constants.py +++ b/src/user/constants.py @@ -1,7 +1,3 @@ """ -Constants and error codes for user module - -Constants: - - List: Description - - Consts: Description +Constants for the user module """ \ No newline at end of file diff --git a/src/user/dependencies.py b/src/user/dependencies.py index c5314d0..dc22429 100644 --- a/src/user/dependencies.py +++ b/src/user/dependencies.py @@ -1,13 +1,10 @@ """ -Router dependencies for user module +Dependencies related to the user module -Classes: - - List: Description - - Classes: Description - -Functions: - - List: Description - - Functions: Description +Exports: + - user_model_claims_dependency: user_model: Gets user model from db, if it exists. Uses db_id from user claims. + - user_model_query_dependency: user_model: Gets user model from db, if it exists. Uses user_id from query param + - user_model_body_dependency: user_model: Gets user model from db, if it exists. Uses user_id from request body. """ from typing import Annotated from fastapi import Depends, Query diff --git a/src/user/exceptions.py b/src/user/exceptions.py index 6f2a669..2e03b05 100644 --- a/src/user/exceptions.py +++ b/src/user/exceptions.py @@ -1,9 +1,8 @@ """ -Module specific exceptions for user module +Exceptions related to the user module Exceptions: - - List: Description - - Exceptions: Description + - UserNotFoundException: Takes an optional user_id int """ from typing import Optional diff --git a/src/user/models.py b/src/user/models.py index 964bed6..92350ed 100644 --- a/src/user/models.py +++ b/src/user/models.py @@ -2,7 +2,12 @@ Database models for user module Models: - - User - id[pk], email, first_name, last_name, oidc_id + - User: + - id[PK], email, first_name, last_name, oidc_id + - organisation_rel: ORM relationship to Organisation via OrgUsers table + - group_rel: ORM relationship to Group via UserGroups table + - organisations: Calc property list of organisation_rel.name + - groups: Calc property dict of {group_rel.org_rel.name: group_rel.name} """ from collections import defaultdict diff --git a/src/user/router.py b/src/user/router.py index c7dbb12..90c133f 100644 --- a/src/user/router.py +++ b/src/user/router.py @@ -1,15 +1,11 @@ """ -Router endpoints for user module +Router endpoints for the user module Endpoints: - - [get]/self/claims - Retrieves user's OIDC claims - - [get]/self/db - Retrieves the user data from the db that corresponds to the current OIDC user - - [get]/self/orgs - Retrieves all organisations associated with the current user - - [get]/self/orgs/admin - Retrieves only admin organisations for the current user - - [get]/{user_id} - Retrieves a specific user by their ID - - [get]/{user_id}/orgs - Retrieves all organisations associated with a specific user - - [get]/{user_id}/orgs/admin - Retrieves only admin organisations for a specific user - - [delete]/{user_id} - Deletes a user from the db by their db ID + - [GET](/user/self/claims): [OIDC claims]: Returns all OIDC claims associated with the currently logged-in user. + - [GET](/user/self/db): [OIDC claims]: Returns details about the currently logged-in user from the hub db. + - [GET](/user/): [super admin]: Returns user(id) details. + - [DELETE](/user/): [super admin]: Removes a User(id) from the hub database. """ from fastapi import APIRouter from starlette import status diff --git a/src/user/schemas.py b/src/user/schemas.py index 285f510..27d455e 100644 --- a/src/user/schemas.py +++ b/src/user/schemas.py @@ -1,9 +1,5 @@ """ -Pydantic models for user module - -Models: - - List: Description - - Models: Description +Pydantic models for the user module """ from typing import Optional from src.schemas import CustomBaseModel diff --git a/src/user/service.py b/src/user/service.py index 378d837..f65e045 100644 --- a/src/user/service.py +++ b/src/user/service.py @@ -1,11 +1,8 @@ """ Module specific business logic for user module -Functions: - - add_user_to_db - Exports: - - add_user_to_db + - add_user_to_db: Creates a User record from OIDC claims, or updates user details """ from typing import Any diff --git a/src/user/utils.py b/src/user/utils.py index 658daa1..35fcc1a 100644 --- a/src/user/utils.py +++ b/src/user/utils.py @@ -1,11 +1,3 @@ """ -Non-business logic reusable functions and classes for user module - -Classes: - - List: Description - - Classes: Description - -Functions: - - List: Description - - Functions: Description +Non-business logic reusable functions and classes for the user module """ \ No newline at end of file