V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
adjusted
V2EX  ›  分享创造

Queryx ORM 新增 TypeScript 支持

  •  2
     
  •   adjusted ·
    wangzuo · 2023-08-11 10:32:34 +08:00 · 4476 次点击
    这是一个创建于 505 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上次发帖发布 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 和代码,更多信息可以访问代码主页,也欢迎在评论给我们反馈。

    10 条回复    2023-08-14 15:08:48 +08:00
    maocat
        1
    maocat  
       2023-08-11 10:52:13 +08:00
    对比 prisma 如何?
    adjusted
        2
    adjusted  
    OP
       2023-08-11 11:25:11 +08:00
    @maocat 主要区别是我们的接口设计借鉴了 Rails ActiveRecord 的模式,代码生成比较简单,使用原生 driver 。
    sub166
        3
    sub166  
       2023-08-11 11:31:13 +08:00   ❤️ 1
    prisma sequelize kysely drizzle...
    竞品有点多
    adjusted
        4
    adjusted  
    OP
       2023-08-11 11:48:09 +08:00
    @sub166 typescript 确实生态比较大
    cosmain
        5
    cosmain  
       2023-08-11 15:12:34 +08:00
    支持!百花齐放才是春。 个人而言有拿得出手的项目也很厉害。
    adjusted
        6
    adjusted  
    OP
       2023-08-11 15:49:00 +08:00
    @cosmain 感谢,我们还是有一些差异性的,之后会多介绍一下。目前支持了 go 和 typescript ,如果有想支持更多语言也可以一起交流。
    kingwrcy
        7
    kingwrcy  
       2023-08-14 10:51:42 +08:00
    prisma 的恶心 utc 问题还没解决,好奇你们是如何使用的?
    adjusted
        8
    adjusted  
    OP
       2023-08-14 13:16:54 +08:00
    xieren58
        9
    xieren58  
       2023-08-14 14:25:51 +08:00
    对比 prisma 如何?
    adjusted
        10
    adjusted  
    OP
       2023-08-14 15:08:48 +08:00
    @xieren58 主要区别是我们的接口设计借鉴了 Rails ActiveRecord 的模式,代码生成比较简单,使用原生 driver 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1835 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 16:20 · PVG 00:20 · LAX 08:20 · JFK 11:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.