# EasyPersistence **Repository Path**: zouanzu/easy-persistence ## Basic Information - **Project Name**: EasyPersistence - **Description**: 传统 API 构建 VS 这款配置型框架,谁能称霸开发江湖? 基于配置快速构建增删改查API框架:灵活、快捷、易维护的开发利器 - **Primary Language**: NodeJS - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-02-25 - **Last Updated**: 2025-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs, 数据库, API, 多数据库支持, 动态SQL生成 ## README # EasyPersistence #### 介绍 传统 API 构建 VS 这款配置型框架,谁能称霸开发江湖? 基于配置快速构建增删改查API框架:灵活、快捷、易维护的开发利器 项目概述 基于Express框架构建的高性能API服务,采用多进程架构充分利用CPU资源,提供动态路由挂载、数据库操作封装、全链路日志追踪等功能。核心模块包含SQL语句构建器、多数据库驱动适配层和参数验证体系。主要用于便捷动态构建增删改查API,包括信息查询、分页查询、更新和插入等功能。支持 MySQL 和 MSSQL及sqlite数据库。 项目结构 主要文件及功能 1. `index.js`:Express 应用的入口文件,负责路由和中间件的配置,接收处理 HTTP的api 请求。 2. `sqlconfig.js`:配置不同 API 的数据库查询和操作信息,如表名、字段、查询条件等。 3. `./src/sql/stmtbuild.js`:提供构建 SQL 语句的函数,包括列表查询、分页查询、更新和插入语句。 4. `./src/sql/config.js`:配置不同类型数据库的连接参数。 5. `./src/sql/respository.js`:封装数据库操作,通过动态加载不同数据库驱动模块执行查询、分页查询和执行 SQL 语句。 6. `./src/sql/mysql/index.js`:与 MySQL 数据库进行交互的模块。 7. `./src/sql/mssql/index.js`:与 MSSQL 数据库进行交互的模块。 功能特性 1. 多进程架构 - 通过Cluster模块实现CPU核数级别的并行处理 2. 动态路由系统 - 支持通过`/api/v3/auth/:apikey`路径动态挂载业务端点 3. 数据库操作封装 - 支持MySQL/MSSQL/SQLite三种数据库的CRUD操作 4. 声明式SQL构建 - 通过`QueryBuilder`类实现条件查询/分页/更新语句自动生成 5. 全链路追踪 - 集成log4js日志系统,包含请求耗时统计和traceId追踪 安装与运行 ```bash 克隆仓库 git clone https://gitee.com/zouanzu/easy-persistence.git 安装依赖 npm install express log4js @hapi/joi mysql mssql sqlite3 配置数据库(示例MySQL) cp config/db.example.js config/db.js 启动服务(自动启用多进程) node index.js ``` 核心配置 数据库配置 (`sqlconfig.js`) ```javascript { user_info: { apiName: '用户信息', dbDrive: 'mysql', tableName: 'user', paramsMapping: [{ field: 'id', source: 'query', schema: Joi.number().min(1) // 参数验证规则 }] } } ``` 路由配置 (`src/router.js`) ```javascript const routeMapping = { '/api/v3/auth': authRouter, // 鉴权路由 '/api/v3/test': testRouter // 测试路由 }; ``` API文档 鉴权机制 通过URL参数或请求头携带`apiKey`进行身份验证: ``` GET /api/v3/auth/list/user_info?apiKey=YOUR_KEY ``` 标准接口格式 | 端点类型 | 路径模式 | 功能说明 | |----------|----------------------------|----------------------| | 列表查询 | `/list/:apikey` | 基础数据查询 | | 分页查询 | `/page/:apikey` | 带分页的数据查询 | | 数据操作 | `/modi/:apikey` | 更新/插入操作 | 响应示例 成功响应: ```json { "code": 200, "data": [...], "traceId": "xxxx-xxxx-xxxx" } ``` 错误响应: ```json { "code": 400, "message": "参数id的值0不符合规则", "timestamp": "2025-03-06T10:46:00Z" } ``` 架构设计 多进程模型 ```mermaid graph TD Master[主进程] -->|fork()| Worker1(子进程1) Master -->|fork()| Worker2(子进程2) Master -->|负载均衡| WorkerN(子进程N) Worker1 --> Express[Express实例] Worker2 --> Express ``` 日志系统 采用log4js分级别记录日志: - `DEBUG`: SQL语句详情 - `INFO`: 进程生命周期事件 - `WARN`: 异常终止信号 - `ERROR`: 子进程崩溃事件 日志文件保存在`logs/`目录,按日进行滚动归档。 贡献指南 1. 提交Issue说明问题场景 2. 遵循ESLint代码规范 3. 新增API需在`sqlconfig.js`添加配置 4. 数据库操作需通过QueryBuilder生成语句 5. 包含完整的Joi参数验证规则 注意事项 1. 需要预先配置数据库连接参数 2. 确保8082端口未被占用 3. Windows系统需以管理员权限运行 4. 生产环境建议配置PM2进程管理 --- License: MIT | Author: ZouAnZu | Version: 1.0.0 ``` 总结 本项目通过 Express 框架实现了一个简单的基于配置的 Web 应用,结合 MySQL 和 MSSQL 数据库,提供了用户信息的管理和操作功能。代码结构清晰,模块化程度高,便于维护和扩展。