Skip to content

loveuer/ngorm

Repository files navigation

Features

  • 更好的数据绑定
  • 更好的连接处理和重连机制
  • 兼容 3.0,3.3 版本(已测试)

Installation

go get github.com/loveuer/ngorm/v2

Usage

  • new client
import (
    "github.com/loveuer/ngorm/v2"
)

client, err := ngorm.NewClient(gctx, &ngorm.Config{
    Endpoints:    []string{},
    Username:     "root",
    Password:     "****",
    DefaultSpace: "xxxx",
    Logger:       nil,
})

if err != nil {
    logrus.Panic("init ngorm client err:", err)
}
  • fetch
type Result struct {
    Id      string   `json:"id" nebula:"VertexID"`
    Names   []string `json:"names" nebula:"NAMES"`
    Address []string `json:"address" nebula:"ADDRESS"`
}

var (
    result = new(Result)
)

if err := client.Fetch(uuid).
	Model(&Result{}).
	Tags("NAMES", "ADDRESS").
	Key("v").
	Scan(result); err != nil {
		
	panic(err)
}
  • fetch path
type Result struct {
    Value []string `nebula:"value" json:"value"`
}

var result = make([]*Result, 0)

if err := client.Session().FetchPath().
    Path("src_v1", "dst_v1").
    Path("srv_v2", "dst_v2").
    Edge("some_edge").
    Yield("properties(edge)", "value").Scan(&result); err != nil {
    panic(err)
}

for idx, item := range result {
    fmt.Printf("%d: %+v\n", idx, item.Value)
}
  • go
type Result struct {
    Id      string   `json:"id" nebula:"VertexID"`
    Names   []string `json:"names" nebula:"NAMES"`
    Address []string `json:"address" nebula:"ADDRESS"`
}

var (
    results = make([]*Result, 0)
)

if err := client.GoFrom(uuid).
    Model(&Result{}).
    Over("contact", EdgeTypeReverse).
    Tags("NAMES", "ADDRESS").
    Scan(&results); err != nil {
		
    panic(err)		
}
  • raw
type Result struct {
    Id      string   `json:"id" nebula:"VertexID"`
    Names   []string `json:"names" nebula:"names"`
    Address []string `json:"address" nebula:"address"`
}

var (
    ngql = "fetch prop on NAMES,ADDRESS 'uuid-1', 'uuid-2' yield id(vertex) as id, NAMES.v as names, ADDRESS.v as address"
    results = make([]*Result, 0)
    result_any any
    result_map = make(map[string]any)
    result_map_slice = make([]map[string]any)
)

if err := client.Raw(ngql).Scan(&result); err != nil {
	panic(err)
}

if err := client.Raw(ngql).Scan(&result_any); err != nil {
    panic(err)
}

if err := client.Raw(ngql).Scan(&result_map); err != nil {
    panic(err)
}

if err := client.Raw(ngql).Scan(&result_slice); err != nil {
    panic(err)
}

About

nebula simple golang orm

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages