Metadata-Version: 2.4
Name: curdezgen
Version: 0.1.2
Summary: A CRUD generator following Vertical Slice Architecture (VSA)
Author-email: zeke <645360569@qq.com>
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: sqlalchemy>=2.0.0
Requires-Dist: jinja2>=3.0.0
Requires-Dist: typer>=0.9.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: inflect>=7.0.0
Requires-Dist: psycopg2-binary>=2.9.0
Requires-Dist: fastapi>=0.100.0
Requires-Dist: uvicorn>=0.20.0
Requires-Dist: build>=1.4.0
Requires-Dist: twine>=6.2.0

# curdezgen

`curdezgen` 是一个基于垂直切片架构 (Vertical Slice Architecture, VSA) 的 FastAPI CRUD 代码生成工具。它可以根据您的数据库表结构，自动生成符合最佳实践的后端代码。

## 核心特性

- **垂直切片架构**: 每个业务功能（如创建用户、获取商品列表）都是独立的切片，包含路由、逻辑和 DTO。
- **自动数据库扫描**: 使用 SQLAlchemy 自动识别数据库表、列、主键和类型。
- **高度可定制**: 通过简单的 YAML 配置文件控制生成行为。
- **FastAPI 最佳实践**: 生成的代码包含 Pydantic 数据验证、依赖注入 (DI) 和自动文档支持。
- **Docker 一键部署**: 自动生成 Dockerfile、docker-compose.yml 以及跨平台的启动/停止/重启脚本。
- **中文本地化**: 生成的代码注释、提示信息及 Docker 脚本均已本地化为中文。

## 安装

```bash
pip install curdezgen
```

## 快速开始

### 1. 创建配置文件

在项目根目录下创建一个名为 `curdezgen.yaml` 的文件，并填入以下内容：

```yaml
db:
  type: postgresql  # 支持 postgresql, mysql
  host: localhost
  port: 5432
  user: postgres
  password: your_password
  name: your_db_name
  schema_name: public

gen:
  output_dir: output
  base_package: app

docker:
  enabled: true
  python_version: "3.10"
```

### 2. 初始化项目结构

根据配置文件创建项目骨架（包括 `core`, `shared`, `features` 目录）：

```bash
python -m curdezgen.cli init
```

### 3. 生成 CRUD 代码

连接数据库并根据表结构生成具体的业务代码：

```bash
python -m curdezgen.cli crud
```

生成的业务代码将存放在 `app/features/{db_name}_{ip}/{schema}_{table}/` 目录下。

### 4. 生成 Docker 部署文件

生成容器化部署所需的配置文件和一键管理脚本：

```bash
python -m curdezgen.cli docker
```

文件将生成在 `output/docker_file/` 目录下。

### 5. 运行项目

#### 本地运行

```bash
uvicorn app.main:app --reload
```

#### Docker 运行

进入 `docker_file` 目录并运行启动脚本：

**Windows (PowerShell):**
```powershell
.\docker_file\start_docker.ps1
```

**Linux / macOS:**
```bash
./docker_file/start_docker.sh
```

脚本会自动构建镜像、启动服务（后台运行），并输出访问地址。

## 常用命令

- `init`: 初始化项目骨架。
- `crud` (或 `gen`): 逆向工程，生成 CRUD 代码。
- `slice`: 正向工程，生成空白业务切片。
- `docker`: 生成 Docker 部署文件。

详细命令说明请参考 [COMMANDS.md](COMMANDS.md)。

## 架构指南

生成的代码遵循垂直切片架构，详情请参考 [ARCHITECTURE.md](ARCHITECTURE.md)。

## 数据库支持

- **PostgreSQL**: 需安装 `psycopg2-binary`
- **MySQL**: 需安装 `pymysql`
