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(
    name="aioli_rdbms",
    version="0.1.0",
    description="ORM and CRUD Service for Aioli with support for MySQL and PostgreSQL",
    controllers=[],
    services=[DatabaseService],
    config=ConfigSchema,
)

Configure

Create the configuration using the format of choice.

File: config.toml

[aioli_core]
dev_port = 5555
path = "/api"
debug = true

[aioli_rdbms]
type = "mysql"
host = "127.0.0.1"
port = 3306
database = "aioli"
username = "aioli01"
password = "super_secret"

[aioli_guestbook]
visits_max = 10

Load

Parse the file and pass it as a Dictionary to the Application constructor.

File: my_application/main.py

import toml
import aioli

import aioli_rdbms
import aioli_guestbook

app = aioli.Application(
    config=toml.loads(["/path/to/config.toml"]),
    packages=[
        (None, aioli.rdbms),
        ("/guestbook", aioli_guestbook)
    ]
)