Added gql base #181
This commit is contained in:
@@ -3,7 +3,7 @@ from starlette.responses import JSONResponse
|
||||
from cpl.api.api_module import ApiModule
|
||||
from cpl.api.application.web_app import WebApp
|
||||
from cpl.application.application_builder import ApplicationBuilder
|
||||
from cpl.auth import AuthModule
|
||||
from cpl.graphql.application.graphql_app import GraphQLApp
|
||||
from cpl.auth.permission.permissions import Permissions
|
||||
from cpl.auth.schema import AuthUser, Role
|
||||
from cpl.core.configuration import Configuration
|
||||
@@ -11,12 +11,15 @@ from cpl.core.console import Console
|
||||
from cpl.core.environment import Environment
|
||||
from cpl.core.utils.cache import Cache
|
||||
from cpl.database.mysql.mysql_module import MySQLModule
|
||||
from cpl.graphql.graphql_module import GraphQLModule
|
||||
from cpl.graphql.schema.root_query import RootQuery
|
||||
from queries.hello import HelloQuery
|
||||
from scoped_service import ScopedService
|
||||
from service import PingService
|
||||
|
||||
|
||||
def main():
|
||||
builder = ApplicationBuilder[WebApp](WebApp)
|
||||
builder = ApplicationBuilder[GraphQLApp](GraphQLApp)
|
||||
|
||||
Configuration.add_json_file(f"appsettings.json")
|
||||
Configuration.add_json_file(f"appsettings.{Environment.get_environment()}.json")
|
||||
@@ -27,12 +30,15 @@ def main():
|
||||
builder.services.add_transient(PingService)
|
||||
builder.services.add_module(MySQLModule)
|
||||
builder.services.add_module(ApiModule)
|
||||
builder.services.add_module(GraphQLModule)
|
||||
|
||||
builder.services.add_scoped(ScopedService)
|
||||
|
||||
builder.services.add_cache(AuthUser)
|
||||
builder.services.add_cache(Role)
|
||||
|
||||
builder.services.add_transient(HelloQuery)
|
||||
|
||||
app = builder.build()
|
||||
app.with_logging()
|
||||
|
||||
@@ -48,6 +54,13 @@ def main():
|
||||
)
|
||||
app.with_routes_directory("routes")
|
||||
|
||||
schema = app.with_graphql()
|
||||
schema.query.string_field("ping", resolver=lambda *_: "pong")
|
||||
schema.query.with_query("hello", HelloQuery)
|
||||
|
||||
app.with_playground()
|
||||
app.with_graphiql()
|
||||
|
||||
provider = builder.service_provider
|
||||
user_cache = provider.get_service(Cache[AuthUser])
|
||||
role_cache = provider.get_service(Cache[Role])
|
||||
|
||||
0
example/api/src/queries/__init__.py
Normal file
0
example/api/src/queries/__init__.py
Normal file
13
example/api/src/queries/hello.py
Normal file
13
example/api/src/queries/hello.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import graphene
|
||||
|
||||
from cpl.graphql.schema.query import Query
|
||||
|
||||
|
||||
class HelloQuery(Query):
|
||||
def __init__(self):
|
||||
Query.__init__(self)
|
||||
self.string_field(
|
||||
"message",
|
||||
args={"name": graphene.String(default_value="world")},
|
||||
resolver=lambda *_, name: f"Hello {name}",
|
||||
)
|
||||
Reference in New Issue
Block a user