Package config schema¶
This example uses code from the aioli_rdbms extension Package.
Create¶
Define a custom Package configuration schema.
File: aioli_rdbms/config.py
from aioli.config import PackageConfigSchema, fields, validate
class ConfigSchema(PackageConfigSchema):
type = fields.String(
validate=validate.OneOf(["mysql", "postgres"]),
required=True
)
username = fields.String(required=True)
password = fields.String(required=True)
host = fields.String(missing="127.0.0.1")
port = fields.Integer(missing=3306)
database = fields.String(missing="aioli")
Associate¶
Associate the configuration schema with a Package.
File: aioli_rdbms/__init__.py
from aioli import Package
from .service import DatabaseService
from .config import ConfigSchema
export = Package(
auto_meta=True,
controllers=[],
services=[DatabaseService],
config=ConfigSchema,
)
Configure¶
Create the configuration using the format of choice.
File: aioli.cfg
[aioli_core]
dev_port = 5555
path = "/api"
pretty_json = false
allow_origins = ["*"]
debug = true
[aioli_guestbook]
path = "/guestbook"
# Maximum number of visits per IP
visits_max = 14
[aioli_rdbms]
type = "(mysql|postgres)"
username = "user"
password = "pass"
host = "127.0.0.1"
port = 3306
database = "aioli"
Register¶
Parse the configuration file and pass it as a Dictionary to the Application
constructor.
File: my_application/main.py
import aioli_guestbook
import aioli_rdbms
import toml
from aioli import Application
app = Application(
config=toml.load("aioli.cfg"),
packages=[
aioli_guestbook,
aioli_rdbms,
]
)