Skip to content

CLI 工具

Sleet CLI 为 FiveM Sleet ORM 提供代码生成和数据库工具。

安装

通过 npm 安装 (Windows - 推荐)

bash
npm install -g sleet-orm-cli

从源码编译 (Go 1.21+)

bash
git clone https://github.com/SleetCo/sleet-orm-cli.git
cd sleet-orm-cli
go build -o sleet .

将二进制文件添加到 PATH,或直接运行 ./sleet

命令

Sleet CLI 提供三个主要命令来处理您的 Schema:

sleet generate

从 Schema 文件生成 LuaLS 类型注解。

在嵌入式 Lua VM 中执行您的 schema.lua,拦截所有 sl.table() 调用,并生成包含完整 LuaLS 类型推断的 ---@meta 文件。

bash
sleet generate schema.lua
sleet generate schema.lua -o .sleet/types.lua
sleet generate schema.lua --stdout

默认输出: 当前目录下的 .sleet/types.lua

生成内容:

  • 表记录的类型定义
  • 列类型定义
  • Schema 对象类型
  • 完整的 LuaLS 集成,支持自动完成和类型检查

sleet sql

从 Schema 生成 MySQL CREATE TABLE 语句。

bash
sleet sql server/schema.lua
sleet sql server/schema.lua -o database/init.sql
sleet sql server/schema.lua --stdout

生成 CREATE TABLE IF NOT EXISTS 语句,可直接在 MySQL/MariaDB 数据库中执行。

sleet pull

从现有 MySQL/MariaDB 数据库逆向工程生成 schema.lua 文件。

bash
sleet pull --db myserver
sleet pull --host 127.0.0.1 -u root -p s3cr3t --db myserver -o server/schema.lua
sleet pull --db myserver --stdout

连接选项:

选项简写默认值描述
--host127.0.0.1数据库主机
--port3306数据库端口
--user-uroot数据库用户
--pass-p数据库密码
--db-d数据库名称(必需)
--out-oschema.lua输出文件路径
--stdout输出到标准输出而非文件

使用示例

基本开发工作流

  1. 编写您的 Schema:
lua
-- server/schema.lua
local sl = Sleet

return {
    players = sl.table('players', {
        id = sl.serial().primaryKey(),
        identifier = sl.varchar(64).notNull().unique(),
        name = sl.varchar(255).notNull(),
        money = sl.int().default(5000),
        created_at = sl.timestamp().default(sl.sql('CURRENT_TIMESTAMP'))
    })
}
  1. 为数据库生成 SQL:
bash
sleet sql server/schema.lua -o database/init.sql
  1. 生成类型注解:
bash
sleet generate server/schema.lua
  1. 应用到数据库:
bash
mysql -u root -p gamemode < database/init.sql

IDE 集成

使用 sleet generate 生成类型后,LuaLS 会自动检测并加载生成的类型注解,用于自动完成和类型检查。

可选配置 (仅在没有 sleet 的工作区中需要):

VS Code (.vscode/settings.json):

json
{
    "Lua.workspace.library": [".sleet"]
}

LuaLS (.luarc.json):

json
{
    "workspace": {
        "library": [".sleet"]
    }
}

构建脚本集成

将 Sleet 命令添加到您的 npm 脚本:

json
{
  "scripts": {
    "schema:types": "sleet generate server/schema.lua",
    "schema:sql": "sleet sql server/schema.lua -o database/schema.sql",
    "schema:pull": "sleet pull --db gamemode -o server/schema-backup.lua"
  }
}

数据库迁移工作流

  1. 备份当前 Schema:
bash
sleet pull --db gamemode -o schema-backup.lua
  1. 生成新的 SQL:
bash
sleet sql server/schema.lua -o migration.sql
  1. 检查并应用:
bash
# 首先检查生成的 SQL
cat migration.sql
# 然后应用到数据库
mysql -u root -p gamemode < migration.sql

获取帮助

bash
sleet --help           # 常规帮助
sleet generate --help  # generate 命令帮助
sleet sql --help      # sql 命令帮助
sleet pull --help     # pull 命令帮助

项目结构

CLI 的组织结构如下:

cli/
├── cmd/           # Cobra 命令(root, generate, sql, pull)
├── internal/      # 核心逻辑、生成器、数据库连接
├── main.go        # 入口点
├── go.mod         # Go 模块定义
└── sleet.exe      # Windows 二进制文件

CLI 让您能够轻松维护类型安全的数据库 schema,并为您的 FiveM Lua 开发获得完整的 IDE 支持!

下一步

查看 API 参考 了解 ORM 的详细功能,或浏览 示例 学习实际应用场景。

Released under the MIT License.