Norm-GoGo 语言 ORM 工具

联合创作 · 2023-09-30 01:32

Norm 是一款 Golang 编写的 ORM 工具,对分布式图数据库 Nebula Graph 的查询语言 nGQL 进行映射封装,只用实例对象即可进行图数据查询。


主要特性



  • 通过 struct / map(支持顶点、边)构建插入 nGQL

  • 将 Nebula 执行结果解析为 struct / map

  • 方便易用

  • 提供用于单元测试的模拟数据



package main

import (
"log"
"time"

"github.com/zhihu/norm"
"github.com/zhihu/norm/dialectors"
"github.com/zhihu/norm/examples/querys"
)

func main() {
db := newGdb()
// prepare()

// // 插入示例
// inserts.InsertEdge(db)
// inserts.InsertVertex(db)

// // 查询 示例
// querys.MatchSingle(db)
// querys.MatchMulti(db)
// querys.Count(db)
querys.Chainable(db)
// querys.ChainableCount(db)
}

func newGdb() *norm.DB {
dalector := dialectors.MustNewNebulaDialector(dialectors.DialectorConfig{
Addresses: []string{"127.0.0.1:9669"},
Timeout: time.Second * 5,
Space: "test",
Username: "test",
Password: "test",
})
db := norm.MustOpen(dalector, norm.Config{})
return db
}

func prepare(db *norm.DB) {
// 创建 tag
createSchema := "" +
"CREATE TAG IF NOT EXISTS user(id int, name string);" +
"CREATE TAG IF NOT EXISTS answer(id int, vote_up_cnt int);" +
"CREATE EDGE IF NOT EXISTS answer_vote_up(vote_up_cnt int, created timestamp);"
_, err := db.Execute(createSchema)
if err != nil {
log.Fatalf("exec %s error: %v", createSchema, err)
panic(err)
}
}
浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报