created a type model for the config file
This commit is contained in:
parent
3f8323d297
commit
3063bc0167
@ -10,7 +10,7 @@
|
||||
"log": "-",
|
||||
"buffer-size": "4KiB",
|
||||
"max-size": "2GB",
|
||||
"keys": [
|
||||
"api-keys": [
|
||||
"TESTKEY"
|
||||
],
|
||||
"max-data": "10GB",
|
||||
|
33
testdata/custom_types.py
vendored
33
testdata/custom_types.py
vendored
@ -1,27 +1,24 @@
|
||||
from pydantic import BaseModel, ConfigDict, field_validator
|
||||
from pydantic import BaseModel, Field, ConfigDict, field_validator
|
||||
|
||||
from .utils import convert_to_bytes
|
||||
|
||||
# class Config(BaseModel):
|
||||
# host: str
|
||||
# port: int
|
||||
# buffer_size: int = 4 * 1024 # 4KB
|
||||
# max_size: int = 2 * 1024 * 1024 * 1024 # 2GB
|
||||
# max_data: int = 0 # unlimited
|
||||
# api_keys = set[str]
|
||||
# database = str
|
||||
|
||||
# model_config = ConfigDict(extra='allow')
|
||||
class Config(BaseModel):
|
||||
host: str
|
||||
port: int
|
||||
buffer_size: int = Field(alias='buffer-size', default=4 * 1024) # 4KB
|
||||
max_size: int = Field(alias='max-size', default=2 * 1024 ** 3) # 2GB
|
||||
max_data: int = Field(alias='max-data', default=0) # unlimited
|
||||
api_keys: set[str] = Field(alias='api-keys')
|
||||
database: str
|
||||
log: str = '-'
|
||||
|
||||
# @field_validator('buffer_size', 'max_size', 'max_data')
|
||||
# @classmethod
|
||||
# def convert_size(cls, value: int | str) -> int:
|
||||
# return convert_to_bytes(value)
|
||||
model_config = ConfigDict(extra='forbid')
|
||||
|
||||
|
||||
# TODO
|
||||
# class DataBase(BaseModel):
|
||||
# model_config = ConfigDict(extra='forbid')
|
||||
@field_validator('buffer_size', 'max_size', 'max_data', mode='before')
|
||||
@classmethod
|
||||
def convert_size(cls, value: int | str) -> int:
|
||||
return convert_to_bytes(value)
|
||||
|
||||
|
||||
class TestDataBody(BaseModel):
|
||||
|
14
testdata/main.py
vendored
14
testdata/main.py
vendored
@ -8,6 +8,7 @@ import uvicorn
|
||||
|
||||
from .utils import convert_to_bytes, save_database
|
||||
from .api import create_api
|
||||
from .custom_types import Config
|
||||
|
||||
|
||||
# Setup Parser
|
||||
@ -35,14 +36,5 @@ def run(host: str, port: int, api_keys: set[str], max_size: int, max_data: int,
|
||||
|
||||
def main():
|
||||
args = parse_cli_arguments(sys.argv[1:])
|
||||
config = json.load(args.config)
|
||||
|
||||
host = config['host']
|
||||
port = config['port']
|
||||
buffer_size = convert_to_bytes(config['buffer-size'])
|
||||
max_size = convert_to_bytes(config['max-size'])
|
||||
max_data = convert_to_bytes(config['max-data'])
|
||||
api_keys = config['keys']
|
||||
database = config['database']
|
||||
|
||||
run(host, port, api_keys, max_size, max_data, database, buffer_size)
|
||||
config = Config.model_validate_json(args.config.read())
|
||||
run(**config.model_dump(exclude={'log'}))
|
||||
|
Loading…
Reference in New Issue
Block a user