ggm
golang generic orm, base on sqlx
install
go get github.com/daodao97/ggm
usage
Below is an example which shows some common use cases for ggm. Check model_test.go for more usage.
package main
import (
"encoding/json"
"fmt"
"log"
"github.com/daodao97/ggm"
)
func init() {
err := ggm.Init(map[string]*ggm.Config{
"default": {
DSN: "[email protected](127.0.0.1:3306)/ggm_test?&parseTime=true",
},
})
if err != nil {
panic(err)
}
}
func main() {
m := ggm.New[*User]()
user1 := &User{
Name: "Seiya",
Profile: ggm.NewJson(&Profile{
Skill: "Pegasus Ryuseiken",
}),
}
user2 := &User{
Name: "Shun",
Profile: ggm.NewJson(&Profile{
Skill: "Nebula Chain",
}),
}
_, err := m.Insert(user1, user2)
if err != nil {
log.Fatalln("Insert err", err)
return
}
list, err := m.Select(ggm.WhereEq("id", 1))
if err != nil {
log.Fatalln("Select err", err)
return
}
listJson, _ := json.Marshal(list)
fmt.Printf("user list: %+v", string(listJson))
user1.Id = 1
user1.Name = "Seiya!"
_, err = m.Update(user1)
if err != nil {
log.Fatalln("Update 1 err", err)
return
}
user2.Name = "Shun!"
_, err = m.Update(user2, ggm.WhereEq("name", "Shun"))
if err != nil {
log.Fatalln("Update2 err", err)
return
}
_, err = m.Delete(ggm.WhereEq("id", 1))
if err != nil {
log.Fatalln("Delete err", err)
return
}
}
type User struct {
Id int `db:"id,pk" json:"id"`
Name string `db:"name" json:"name"`
Profile *ggm.Json[*Profile] `db:"profile" json:"profile"`
}
func (u User) Table() string {
return "user"
}
func (u User) FakeDeleteKey() string {
return "is_deleted"
}
type Profile struct {
Skill string `json:"skill"`
}