Skip to content

Instantly share code, notes, and snippets.

@devig
Last active January 15, 2022 11:45
Show Gist options
  • Save devig/fdec1d5db1a8318abbb386080e4addcd to your computer and use it in GitHub Desktop.
Save devig/fdec1d5db1a8318abbb386080e4addcd to your computer and use it in GitHub Desktop.
Gorose ORM
package main
import (
"fmt"
"os"
"github.com/gohouse/gorose/v2"
_ "github.com/go-sql-driver/mysql"
)
var err error
var engin *gorose.Engin
type Users struct {
Id int64 `gorose:"id"`
Name string `gorose:"name"`
Sex int `gorose:"sex"`
Age int `gorose:"age"`
}
func (u Users) TableName() string {
return "users"
}
func init() {
engin, err = gorose.Open(&gorose.Config{Driver: "mysql", Dsn: "root:mysql@tcp(localhost:3306)/parts?charset=utf8mb4&parseTime=true"})
}
func DB() gorose.IOrm {
return engin.NewOrm()
}
func goroseQuery() {
//res, _ := DB().Table("users").Pluck("name", "id")
//res, _ := DB().Table("users").Sum("age") //.Value("age")
res,err := DB().Query("select * from users where id>? limit 2", 1)
//affected_rows,err := DB().Execute("delete from users where uid=?", 1)
//res,err := DB().Table("users").Limit(5).Get()
/*
var u []Users
var count int64
count,err = db.Table(&u).Fields("uid").AddFields("name,age").
Where("age",">",0).OrderBy("uid desc").GroupBy("age").
Having("age>15").Limit(10).Offset(1).Count()
db.Select()
*/
fmt.Println(res[0]["name"])
fmt.Println(err)
/*
var u Users
err := DB().Table(&u).Select()
fmt.Println(u.Name)
*/
/*
res2, _ := DB().Table("users"). //Table("users u").
//Join("chats","user.id","=","chats.user_id").
LeftJoin("chats on users.id = chats.user_id").
WhereIn("users.id", []interface{}{28, 2}).
Get()
*/
}
func goroseFirst() {
res,err := DB().Table("users").Fields("id,name,age").Where("age",">",0).OrderBy("id desc").First()
fmt.Println(res["name"])
fmt.Println(res["age"])
fmt.Println(err)
}
func goroseInsert() {
db:= DB()
db.Begin()
db.Table("users").Data(gorose.Data{"name":"Ivan", "sex":1, "age":29}).Insert()
db.Table("users").Insert(&Users{Name:"fizz",Age:18})
/* err :=myfunc()
if err!=nil {
db.Rollback()
}*/
db.Commit()
//session := engin.NewSession()
//session.Execute("insert into users(name,age) values(?,?)(?,?)", "gorose",18,"fizzday",19)
//session.LastSql()
/* var multi_data = []map[string]interface{}{ {"age":17, "name":"it3"},{"age":17, "name":"it4"} }
res2, _ := DB().Table("users").Data(multi_data).InsertGetId()
fmt.Println(res2)*/
}
func goroseDelete() error {
_,err := DB().Table("users").Where("id",1).Delete()
return err
}
func goroseUpdate() {
DB().Table("users").Where("id",28).Update(&Users{Name:"LastGorose",Age:18})
//DB().Table("calls").Data(gorose.Data{"stream1_at":p.Timestamp, "connection_id":p.Connection.ID}).Where("id", call["id"]).Update()
}
//https://www.kancloud.cn/fizz/gorose-2/1135836
type User gorose.Data
var u []User
DB().Table(&u).Limit(5).Select()
for k, v := range u {
fmt.Println(k)
fmt.Println(v["name"])
}
fmt.Println(u[0]["name"].String(), u[0]["id"].Int64(), u[0]["created_at"].String())
userListData, _ := DB().Table("users").Pluck("name","id")
m:=t.New(userListData).MapStringInterface()
for k, v := range m {
fmt.Println(k)
fmt.Println(v)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment