Skip to content

Commit e9e142f

Browse files
committed
refactored in the Routes__Info used in other projects
1 parent 65afc45 commit e9e142f

File tree

12 files changed

+155
-22
lines changed

12 files changed

+155
-22
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
package_name = 'osbot_fast_api_serverless'
12
path=__path__[0]
Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,38 @@
1-
from osbot_fast_api.api.routes.Fast_API__Routes import Fast_API__Routes
2-
from osbot_fast_api_serverless.utils.Version import version__osbot_fast_api_serverless
1+
from osbot_fast_api.api.routes.Fast_API__Routes import Fast_API__Routes
2+
from osbot_fast_api_serverless.services.info.Service_Info import Service_Info
3+
from osbot_fast_api_serverless.utils.Version import version__osbot_fast_api_serverless
34

4-
ROUTES_PATHS__INFO = ['/info/version']
5+
TAG__ROUTES_INFO = 'info'
6+
ROUTES_PATHS__INFO = [ f'/{TAG__ROUTES_INFO}/health' ,
7+
f'/{TAG__ROUTES_INFO}/server' ,
8+
f'/{TAG__ROUTES_INFO}/status' ,
9+
f'/{TAG__ROUTES_INFO}/version' ,
10+
f'/{TAG__ROUTES_INFO}/versions']
11+
ROUTES_INFO__HEALTH__RETURN_VALUE = {'status': 'ok'}
512

613
class Routes__Info(Fast_API__Routes):
7-
tag :str = 'info'
14+
tag : str = 'info'
15+
service_info: Service_Info
816

17+
def health(self):
18+
return ROUTES_INFO__HEALTH__RETURN_VALUE
19+
20+
def server(self): # Get service versions
21+
return self.service_info.server_info()
22+
23+
def status(self): # Get service status information
24+
return self.service_info.service_info()
25+
26+
def versions(self): # Get service versions
27+
return self.service_info.versions() # todo: this should also include the version from Fast_API
28+
# and see if this should not be inside the /server endpoint
929

1030
def version(self):
11-
return {'version': version__osbot_fast_api_serverless}
31+
return dict(version=version__osbot_fast_api_serverless ) # todo: fix this to get this value from FastAPI app object
1232

13-
1433
def setup_routes(self):
15-
self.add_route_get(self.version)
16-
34+
self.add_route_get(self.health )
35+
self.add_route_get(self.server )
36+
self.add_route_get(self.status )
37+
self.add_route_get(self.version )
38+
self.add_route_get(self.versions)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from osbot_fast_api.utils.Fast_API__Server_Info import fast_api__server_info, Fast_API__Server_Info
2+
from osbot_fast_api_serverless.services.info.schemas.Enum__Service_Environment import Enum__Service_Environment
3+
from osbot_fast_api_serverless.services.info.schemas.Schema__Server__Versions import Schema__Server__Versions
4+
from osbot_fast_api_serverless.services.info.schemas.Schema__Service__Status import Schema__Service__Status
5+
from osbot_utils.type_safe.Type_Safe import Type_Safe
6+
7+
8+
class Service_Info(Type_Safe):
9+
10+
def environment(self): # Determine current environment
11+
import os
12+
if os.getenv('AWS_REGION'):
13+
return Enum__Service_Environment.aws_lambda
14+
else:
15+
return Enum__Service_Environment.local
16+
17+
def service_info(self) -> Schema__Service__Status: # Get current service status
18+
return Schema__Service__Status(environment = self.environment())
19+
20+
def versions(self):
21+
return Schema__Server__Versions()
22+
23+
def server_info(self) -> Fast_API__Server_Info:
24+
return fast_api__server_info

osbot_fast_api_serverless/services/info/__init__.py

Whitespace-only changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from enum import Enum
2+
3+
4+
class Enum__Service_Environment(str, Enum):
5+
aws_lambda = 'aws-lambda'
6+
local = 'local'
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from enum import Enum
2+
3+
class Enum__Service_Status(str, Enum):
4+
operational = 'operational'
5+
degraded = 'degraded'
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from osbot_utils.type_safe.Type_Safe import Type_Safe
2+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Version import Safe_Str__Version
3+
from osbot_utils.utils.Version import Version as Version__OSBot_Utils
4+
from osbot_aws.utils.Version import Version as Version__OSBot_AWS
5+
from osbot_fast_api.utils.Version import version__osbot_fast_api
6+
from osbot_fast_api_serverless.utils.Version import version__osbot_fast_api_serverless
7+
8+
9+
class Schema__Server__Versions(Type_Safe):
10+
osbot_utils : Safe_Str__Version = Safe_Str__Version(Version__OSBot_Utils().value() )
11+
osbot_aws : Safe_Str__Version = Safe_Str__Version(Version__OSBot_AWS ().value() )
12+
osbot_fast_api : Safe_Str__Version = Safe_Str__Version(version__osbot_fast_api )
13+
osbot_fast_api_serverless : Safe_Str__Version = Safe_Str__Version(version__osbot_fast_api_serverless)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from osbot_fast_api_serverless import package_name
2+
from osbot_fast_api_serverless.services.info.schemas.Enum__Service_Environment import Enum__Service_Environment
3+
from osbot_fast_api_serverless.services.info.schemas.Enum__Service_Status import Enum__Service_Status
4+
from osbot_fast_api_serverless.utils.Version import version__osbot_fast_api_serverless
5+
from osbot_utils.type_safe.Type_Safe import Type_Safe
6+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Version import Safe_Str__Version
7+
from osbot_utils.type_safe.primitives.domains.identifiers.Safe_Id import Safe_Id
8+
9+
class Schema__Service__Status(Type_Safe):
10+
name : Safe_Id = Safe_Id(package_name)
11+
version : Safe_Str__Version = version__osbot_fast_api_serverless
12+
status : Enum__Service_Status = Enum__Service_Status.operational
13+
environment : Enum__Service_Environment = Enum__Service_Environment.local

osbot_fast_api_serverless/services/info/schemas/__init__.py

Whitespace-only changes.

poetry.lock

Lines changed: 26 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)