Metadata-Version: 2.1
Name: fastapi_config
Version: 0.0.4
Summary: FastAPI-Config is a visual dynamic configuration management extension based on FastAPI-Amis-Admin.
Keywords: FastAPI-Amis-Admin,FastAPI-Config,Python-Config
Author-email: Atomi <1456417373@qq.com>
Requires-Python: >=3.7
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: System :: Systems Administration
Requires-Dist: asyncer>=0.0.1
Requires-Dist: fastapi-amis-admin>=0.2.5,<0.4.0
Requires-Dist: sqlalchemy-database>=0.0.10
Provides-Extra: demo
Requires-Dist: pydantic[email]>=1.10.1; extra == "demo"
Requires-Dist: uvicorn>=0.18.3; extra == "demo"
Provides-Extra: test
Requires-Dist: pytest>=7.1.3; extra == "test"
Requires-Dist: aiosqlite>=0.17.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.19.0; extra == "test"
Project-URL: -Source, https://github.com/amisadmin/fastapi_config
Project-URL: FastAPI-Amis-Admin, https://github.com/amisadmin/fastapi_amis_admin
Description-Content-Type: text/markdown

<h2 align="center">
  FastAPI-Config
</h2>

## 项目介绍

`FastAPI-Config`是一个基于`FastAPI-Amis-Admin`的可视化动态配置管理拓展包.

## 安装

```bash
pip install fastapi-config
```

## 简单示例

**main.py**:

```python
from fastapi import FastAPI
from fastapi_amis_admin import amis
from fastapi_amis_admin.admin import Settings, AdminSite
from fastapi_amis_admin.models import Field
from fastapi_config import ConfigModelAdmin, DbConfigStore, ConfigAdmin
from sqlmodel import SQLModel
from pydantic import BaseModel
from typing import List

# 创建`FastAPI`应用
app = FastAPI()

# 创建`AdminSite`实例
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))

# 创建配置存储库
dbconfig = DbConfigStore(site.db)

# 注册管理页面(可选)
site.register_admin(ConfigModelAdmin)


class ContactCfg(BaseModel):
    name: str = Field("", title="联系人")
    qq: List[str] = Field("", title="QQ")

class SiteCfg(BaseModel):
    name: str = Field(..., title="网站名称")
    logo: str = Field("", title="网站LOGO", amis_form_item=amis.InputImage())
    contacts: List[ContactCfg] = Field([], title="客服列表")
    domains: List[str] = Field([], title='域名列表')



class SiteCfgAdmin(ConfigAdmin):
    page_schema = amis.PageSchema(label='站点信息')
    schema = SiteCfg


site.register_admin(SiteCfgAdmin)


@app.get('/config')
async def read_config():
    return await dbconfig.get(SiteCfg)


@app.on_event("startup")
async def startup():
    # 挂载后台管理系统
    site.mount_app(app)
    # 创建数据库表(第一次运行时需要)
    await site.db.async_run_sync(SQLModel.metadata.create_all, is_session=False)




if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, debug=True)
```

## 界面预览

- Open `http://127.0.0.1:8000/admin/` in your browser:

![SchedulerAdmin](https://s2.loli.net/2022/05/10/QEtCLsWi1389BKH.png)

## 依赖项目

- [FastAPI-Amis-Admin](https://docs.amis.work/)

## 许可协议

该项目遵循 Apache2.0 许可协议。

