V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
chaleaochexist
V2EX  ›  Go 编程语言

请教一个关于 sqlc 的问题, 当我修改 query 之后造成 go 结构体字段的变化. 如何自定义?

  •  
  •   chaleaochexist · 2022-09-21 16:11:10 +08:00 · 1014 次点击
    这是一个创建于 790 天前的主题,其中的信息可能已经有所发展或是发生改变。

    表 1 有两个字段挪到 表 2 上了. 之前的 query.sql 是这样的:

    select * from t1
    

    sqlc 生成的结构体是这样的:

    type Haha struct {
    	...
    	Username       string `json:"username"`
    	Password       string `json:"password"`
        ...
    }
    

    现在的 query.sql 长这样:

    select t1.*, t2.*
    from t1
    left join t2
    on t1.id=t2.pid
    

    生成的结构体变这样了:

    type Haha struct {
    	Username       sql.NullString `json:"username"`
    	Password       sql.NullString `json:"password"`
    }
    

    sql.NullString 这是个结构体, 导致我所有的业务代码都要改. 请问有没有什么办法能让他变回 string?

    t2 join t1 这种方法不行. 因为我还有一些其他字段依赖 t1 相当于没解决问题.

    sqlc 是否有针对这种情况进行考虑? config 中的 rename 感觉是全局修改, 自定义性不强.

    第二个问题是各位大佬在使用 sqlc 的过程中, 针对表结构和 query.sql 的修改是如何设计的?

    谢谢

    chaleaochexist
        1
    chaleaochexist  
    OP
       2022-09-21 16:14:47 +08:00
    临时是这样解决的. 但是总感觉怪怪的.
    ```sql
    select t1.*, t2.*,
    t2.username::varchar(255) AS username,
    t2."password"::varchar(255) AS "password",
    from t1
    left join t2
    on t1.id=t2.pid

    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1924 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.