Queryx ORM 新增 TypeScript 支持

2023-08-11 10:32:34 +08:00
 adjusted

上次发帖发布 queryx 之后,我们收到了不少反馈和意见,这次我们带来了一个 v0.2 新版,新版最大的改动就是支持生成 TypeScript 的 ORM 代码。

schema.hcl 中添加 generator typescript-client 来生成 TypeScript 代码。

database "db" {
  generator "typescript-client" {}
}

在使用生成的方法之前,需要先安装一些外部依赖。Queryx 使用 date-fns 来处理时间类型:

npm install date-fns

对于 PostgreSQL:

npm install pg @types/pg

对于 MySQL:

npm install mysql2 @types/node

对于 SQLite:

npm install better-sqlite3

与生成的 Golang 代码不同,TypeScript 版本不需要创建 Change 对象来修改数据库记录。

import { newClient } from "./db";

let c = newClient();
let user = await c.queryUser().create({ name: "用户名" });
await user.update({ name: "新用户名" });

目前 TypeScript 的版本通过了我们的集成测试:

在接下来的版本中我们会继续优化生成的代码,包括修复类型检查,欢迎大家 star ,提交 issue 和代码,更多信息可以访问代码主页,也欢迎在评论给我们反馈。

4472 次点击
所在节点    分享创造
10 条回复
maocat
2023-08-11 10:52:13 +08:00
对比 prisma 如何?
adjusted
2023-08-11 11:25:11 +08:00
@maocat 主要区别是我们的接口设计借鉴了 Rails ActiveRecord 的模式,代码生成比较简单,使用原生 driver 。
sub166
2023-08-11 11:31:13 +08:00
prisma sequelize kysely drizzle...
竞品有点多
adjusted
2023-08-11 11:48:09 +08:00
@sub166 typescript 确实生态比较大
cosmain
2023-08-11 15:12:34 +08:00
支持!百花齐放才是春。 个人而言有拿得出手的项目也很厉害。
adjusted
2023-08-11 15:49:00 +08:00
@cosmain 感谢,我们还是有一些差异性的,之后会多介绍一下。目前支持了 go 和 typescript ,如果有想支持更多语言也可以一起交流。
kingwrcy
2023-08-14 10:51:42 +08:00
prisma 的恶心 utc 问题还没解决,好奇你们是如何使用的?
adjusted
2023-08-14 13:16:54 +08:00
xieren58
2023-08-14 14:25:51 +08:00
对比 prisma 如何?
adjusted
2023-08-14 15:08:48 +08:00
@xieren58 主要区别是我们的接口设计借鉴了 Rails ActiveRecord 的模式,代码生成比较简单,使用原生 driver 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/964349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX