Project Icon

sqlx-ts

编译时 SQL 查询检查和类型生成工具包,支持 TypeScript 和 JavaScript

sqlx-ts 是一款 CLI 工具,为 TypeScript 和 JavaScript 项目提供编译时 SQL 查询检查和类型生成功能。支持 PostgreSQL 和 MySQL 数据库,无需 DSL 即可验证查询正确性,并生成对应类型定义,确保代码类型安全。作为一个灵活的工具而非 ORM,sqlx-ts 可与多种数据库驱动程序兼容使用。

sqlx-ts

🧰 TypeScript/Javascript SQL 工具包

SQLx-ts 是一个命令行应用程序,具有编译时检查查询的功能,无需使用 DSL,并根据 SQL 生成类型以保持代码类型安全

  • 编译时检查查询 - 永远不会将损坏的 SQL 查询发布到生产环境(并且 sqlx-ts 不是 ORM
  • TypeScript 类型生成 - 根据原始 SQL 生成类型定义,可与任何 MySQL 或 PostgreSQL 驱动程序一起使用
  • 数据库无关 - 支持 PostgreSQLMySQL(未来将支持更多数据库)
  • TypeScript 和 JavaScript - 同时支持 TypeScriptJavaScript

📔 官方文档 | 🤓 演示

安装

安装 sqlx-ts npm 模块(推荐)

如果使用 npm

$ npm install sqlx-ts

如果使用 yarn

$ yarn add sqlx-ts

你也可以全局安装 sqlx-ts

$ npm install -g sqlx-ts

通过 npm 安装 sqlx-ts 也会安装与 npm 模块版本相同的 sqlx-ts 二进制文件。 通过运行以下命令验证安装:

$ npx sqlx-ts --version

在代码中使用 sqlx-ts

在基于 TypeScript 的项目中:

import { sql } from 'sqlx-ts'

// ...
const query = sql`SELECT * FROM some_table;`
// ...

在基于 Babel 的项目中:

import { sql } from 'sqlx-ts'
const query = sql`SELECT * FROM some_table;`

// ... 或者

const { sql } = require('sqlx-ts')
const query = sql`SELECT * FROM some_table;`
单独安装二进制文件

你可以选择单独安装 sqlx-ts,而不是使用 npm i

使用 install.sh

sqlx-ts 的二进制文件名为 sqlx-ts

可以获取适用于 Windows、macOS 和 Linux 的预编译 sqlx-ts 二进制文件压缩包。Linux 和 Windows 二进制文件是静态可执行文件。建议未明确提及平台的用户下载这些压缩包之一。

如果你是 macOS 用户,可以通过 install.sh 安装 sqlx-ts:

# macOS & ARM CPU
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os darwin --cpu arm64
# macOS & X64 CPU
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os darwin --cpu x64

如果你是 Windows 用户,可以通过 install.sh 安装 sqlx-ts:

# Windows & x32
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os win32 --cpu x32
# Windows & x64
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os win32 --cpu x32

如果你是 Linux 用户,可以通过 install.sh 安装 sqlx-ts:

# Linux & x32
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os linux --cpu x32
# Linux & x64
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os linux --cpu x64
# Linux & arm
$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --os linux --cpu arm64

要安装特定的构建版本,请前往发布页面查找构建版本的确切名称

$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | sh -s -- --artifact sqlx-ts-v0.1.0-macos-arm.zip

升级到新版本可以通过获取下一个版本的 sqlx-ts 构建版本并使用 install.sh 的 --force 命令来完成

$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --artifact ssqlx-ts-v0.1.0-macos-arm.zip --force

对于更高级的用法,请查看 install.sh 的 --help 命令

$ curl -LSfs https://jasonshin.github.io/sqlx-ts/install.sh | \
    sh -s -- --help

路线图

请查看公开的 Notion 看板,了解当前和未来的工作项目

sqlx-ts 不是 ORM!

sqlx-ts 支持编译时检查查询根据 SQL 生成类型。然而,它并不通过提供用于构建查询的 DSL(领域特定语言)来实现这一点。相反,它提供了一个(几乎是)宏,该宏接受常规 SQL 作为输入,并确保它对目标数据库有效。它的工作原理是 sqlx-ts 在编译时连接到您的本地或开发数据库,并让数据库本身验证查询,同时根据 information_schema 生成类型。这可以提供许多典型 ORM 无法提供的好处

  • 由于 sqlx-ts 只是将查询发送回数据库,几乎任何 SQL 语法都可以在 sqlx-ts 中使用(包括数据库扩展添加的内容)
  • 您可以轻松优化查询,因为 SQL 不是使用查询构建器或 ORM 接口构建的
  • 生成的类型可以很好地与几乎任何数据库驱动程序甚至 ORM(如果它们有良好的 TypeScript 支持,允许您覆盖输入和输出类型)一起使用

但这也带来了一些影响

  • sqlx-ts 检索的信息量取决于数据库的类型(例如 MySQL 与 PostgreSQL)

如果您正在寻找 ORM,可以查看 SequelizePrisma

在原生 JavaScript 中使用 sqlx-ts

如果您尝试在原生 JS 中使用 sqlx-ts,TypeScript 类型生成功能将不会有帮助。您可以简单地使用 SQL 检查功能来确保 JS 代码中的 SQL 安全并在编译时进行检查。

动机

我希望将强大的编译时安全性理念引入 Node.js。sqlx 是一个很好的例子,它提供了 Rust 代码中 SQL 的编译时检查,而 Rust 本身为像 sqlx 这样的工具提供了很好的环境。sqlx-ts 受到 sqlx 的极大启发,但解决了基于代码中存在的 SQL 查询生成 TypeScript 接口的额外问题。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号