2022 36 Open source weekly report

工作

新的挑战

本周开了一个新的项目 databend-go-driver,是一套类似于 gosnowflake 的数据库 SDK,主要是基于 Go 的 database/sql package,实现相应的 interface 并注册 databend 到 database/sql,可以使用下面的代码像操作 mysql 一样操作 databend :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func main() {
dsn, cfg, err := getDSN()
if err != nil {
log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err)
}

db, err := sql.Open("databend", dsn)
if err != nil {
log.Fatalf("failed to connect. %v, err: %v", dsn, err)
}
defer db.Close()
query := "SELECT 1"
rows, err := db.Exec(query) // no cancel is allowed
if err != nil {
log.Fatalf("failed to run a query. %v, err: %v", query, err)
}
fmt.Println(rows.RowsAffected())
fmt.Printf("Congrats! You have successfully run %v with databend DB!\n", query)
}

目前项目的架子搭了一下,已经完成基本的注册和简单的 exec 功能,但距离真正生产可用比较遥远。。。还要实现 query, rows, async rows 等功能,完成这些工作就需要对 databend 的工作原理、结构有一定了解,可能是一个小挑战QUQ。

开源

最近由于项目需要又用了一下 fuckdb,这是一个能够一键将 mysql schema 转成带各种 tag 的 golang struct 的大大提高开发效率的工具,感兴趣的可以研究一下这里不多作介绍了。主要是在打开 github 项目页面的时候发现一个陈年老 issue,竟然是去年 7 月份用户提出来的,回想起去年 7 月,确实是忙得焦头烂额(懂的都懂),但没想到这个问题一搁置就是一年。
这个需求是将 struct 的 json tag 从 snake case 转成 camel case,改动之前生成的代码是这样的:

1
2
3
4
5
6
7
type structName struct {
Age string `gorm:"column:slug" json:"age"`
Name string `gorm:"column:name" json:"name"`
CreatorID int64 `gorm:"column:creator_id" json:"creator_id"`
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
}

snake case 本身也不符合 golang 的代码风格,所以就鲁了一个 PR 解决了这个问题,输出的 struct 就是:

1
2
3
4
5
6
7
type structName struct {
Age string `gorm:"column:slug" json:"age"`
Name string `gorm:"column:name" json:"name"`
CreatorID int64 `gorm:"column:creator_id" json:"creatorId"`
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"`
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"`
}

嗯,优雅了 =.=。

其他

记录一些随手拍:


-------------The End-------------

本文标题:2022 36 Open source weekly report

文章作者:cloud sjhan

发布时间:2022年09月02日 - 17:09

最后更新:2022年09月02日 - 20:09

原始链接:https://cloudsjhan.github.io/2022/09/02/2022-36-Open-source-weekly-report/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

cloud sjhan wechat
subscribe to my blog by scanning my public wechat account
坚持原创技术分享,您的支持将鼓励我继续创作!
0%
;