cloudwego / volo

Rust RPC framework with high-performance and strong-extensibility for building micro-services.
https://crates.io/crates/volo
Apache License 2.0
2.26k stars 185 forks source link

the trait `diesel::Expression` is not implemented for `FastStr`, which is required by `&'insert FastStr: AsExpression<diesel::sql_types::Text>` #485

Open jqiris opened 3 months ago

jqiris commented 3 months ago

Feature Request

Crates

Motivation

Proposal

希望生成的结构体字符串可以支持diesel数据库插入和更新

Alternatives

GreenAppleOne commented 3 months ago

特别同意,现在一个痛点 是 是 proto 生成的 entity 结构体 与 数据库查询出的 结构体本质上是一样的,但 按这个框架就得搞两个,赋值 转换类型 超级麻烦,不知道字节内部怎么解决这个问题的

GreenAppleOne commented 3 months ago

@PureWhiteWu 辛苦看看

PureWhiteWu commented 3 months ago

你好,针对这个场景,感觉可以在 faststr 库中实现一下 diesel 的这个 trait,作为 feature 开启,就像目前 serde/redis 的做法一样? 这样是否可以解决你们的问题?

GreenAppleOne commented 3 months ago

我的问题 不仅仅是字符串类型的问题,volo 里面实现增删改查,都需 先到 volo 自动生成的 结构体里面承载 数据,然后 转到 数据库对应的结构体 里面,真正执行 数据库本身的操作,同样道理 查询 反过来,数据先到 数据库结构体 再转到 volo 自动生成的 结构里面,这个转换很麻烦,有没有好的方式解决这个问题

PureWhiteWu commented 3 months ago

你好,如果统一使用 volo 生成的结构体,现在遇到的问题是什么?

GreenAppleOne commented 3 months ago

感谢回复,目前是封装 的 sqlx,自动映射到 我定义的结构体,会有一些特殊的定义及扩展,另外 volo 生成的 结构体 在编译 volo_gen.rs 里,也不方便改里面的内容,特别是一些字段类型,这块有什么好的建议吗?特别想知道其它项目 怎么处理类似的问题的,谢谢

PureWhiteWu commented 3 months ago

生成代码中的类型是无法满足你这边的需求么?必须要更改字段类型么?