Moved examples out of the main repository (#1550)
Moved examples out of the main repository Reviewed-on: https://gitea.com/xorm/xorm/pulls/1550
This commit is contained in:
parent
390effb8a4
commit
757db3b888
|
@ -1,5 +0,0 @@
|
||||||
# Xorm Examples
|
|
||||||
|
|
||||||
Notice: all the examples will ask you install extra package `github.com/mattn/go-sqlite3`, since it depends on cgo. You have to compile it after you install a c++ compile. Please see [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3).
|
|
||||||
|
|
||||||
And then, you can run the examples via `go run xxx.go`. Every go file is a standalone example.
|
|
|
@ -1,110 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
"xorm.io/xorm/caches"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
f := "caches.db"
|
|
||||||
os.Remove(f)
|
|
||||||
|
|
||||||
Orm, err := xorm.NewEngine("sqlite3", f)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Orm.ShowSQL(true)
|
|
||||||
cacher := caches.NewLRUCacher(caches.NewMemoryStore(), 1000)
|
|
||||||
Orm.SetDefaultCacher(cacher)
|
|
||||||
|
|
||||||
err = Orm.CreateTables(&User{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = Orm.Insert(&User{Name: "xlw"})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var users []User
|
|
||||||
err = Orm.Find(&users)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("users:", users)
|
|
||||||
|
|
||||||
var users2 []User
|
|
||||||
err = Orm.Find(&users2)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("users2:", users2)
|
|
||||||
|
|
||||||
var users3 []User
|
|
||||||
err = Orm.Find(&users3)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("users3:", users3)
|
|
||||||
|
|
||||||
user4 := new(User)
|
|
||||||
has, err := Orm.ID(1).Get(user4)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("user4:", has, user4)
|
|
||||||
|
|
||||||
user4.Name = "xiaolunwen"
|
|
||||||
_, err = Orm.ID(1).Update(user4)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println("user4:", user4)
|
|
||||||
|
|
||||||
user5 := new(User)
|
|
||||||
has, err = Orm.ID(1).Get(user5)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println("user5:", has, user5)
|
|
||||||
|
|
||||||
_, err = Orm.ID(1).Delete(new(User))
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for {
|
|
||||||
user6 := new(User)
|
|
||||||
has, err = Orm.ID(1).Get(user6)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println("user6:", has, user6)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,109 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
"xorm.io/xorm/caches"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func sqliteEngine() (*xorm.Engine, error) {
|
|
||||||
os.Remove("./test.db")
|
|
||||||
return xorm.NewEngine("sqlite3", "./goroutine.db")
|
|
||||||
}
|
|
||||||
|
|
||||||
func mysqlEngine() (*xorm.Engine, error) {
|
|
||||||
return xorm.NewEngine("mysql", "root:@/test?charset=utf8")
|
|
||||||
}
|
|
||||||
|
|
||||||
var u = &User{}
|
|
||||||
|
|
||||||
func test(engine *xorm.Engine) {
|
|
||||||
err := engine.CreateTables(u)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
size := 500
|
|
||||||
queue := make(chan int, size)
|
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
go func(x int) {
|
|
||||||
//x := i
|
|
||||||
err := engine.Ping()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
} else {
|
|
||||||
for j := 0; j < 10; j++ {
|
|
||||||
if x+j < 2 {
|
|
||||||
_, err = engine.Get(u)
|
|
||||||
} else if x+j < 4 {
|
|
||||||
users := make([]User, 0)
|
|
||||||
err = engine.Find(&users)
|
|
||||||
} else if x+j < 8 {
|
|
||||||
_, err = engine.Count(u)
|
|
||||||
} else if x+j < 16 {
|
|
||||||
_, err = engine.Insert(&User{Name: "xlw"})
|
|
||||||
} else if x+j < 32 {
|
|
||||||
//_, err = engine.ID(1).Delete(u)
|
|
||||||
_, err = engine.Delete(u)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
queue <- x
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Printf("%v success!\n", x)
|
|
||||||
}
|
|
||||||
queue <- x
|
|
||||||
}(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
<-queue
|
|
||||||
}
|
|
||||||
|
|
||||||
//conns := atomic.LoadInt32(&xorm.ConnectionNum)
|
|
||||||
//fmt.Println("connection number:", conns)
|
|
||||||
fmt.Println("end")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
fmt.Println("-----start sqlite go routines-----")
|
|
||||||
engine, err := sqliteEngine()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
engine.ShowSQL(true)
|
|
||||||
cacher := caches.NewLRUCacher2(caches.NewMemoryStore(), time.Hour, 1000)
|
|
||||||
engine.SetDefaultCacher(cacher)
|
|
||||||
fmt.Println(engine)
|
|
||||||
test(engine)
|
|
||||||
fmt.Println("test end")
|
|
||||||
engine.Close()
|
|
||||||
|
|
||||||
fmt.Println("-----start mysql go routines-----")
|
|
||||||
engine, err = mysqlEngine()
|
|
||||||
engine.ShowSQL(true)
|
|
||||||
cacher = caches.NewLRUCacher2(caches.NewMemoryStore(), time.Hour, 1000)
|
|
||||||
engine.SetDefaultCacher(cacher)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer engine.Close()
|
|
||||||
test(engine)
|
|
||||||
}
|
|
|
@ -1,81 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Status describes a status
|
|
||||||
type Status struct {
|
|
||||||
Name string
|
|
||||||
Color string
|
|
||||||
}
|
|
||||||
|
|
||||||
// defines some statuses
|
|
||||||
var (
|
|
||||||
Registered = Status{"Registered", "white"}
|
|
||||||
Approved = Status{"Approved", "green"}
|
|
||||||
Removed = Status{"Removed", "red"}
|
|
||||||
Statuses = map[string]Status{
|
|
||||||
Registered.Name: Registered,
|
|
||||||
Approved.Name: Approved,
|
|
||||||
Removed.Name: Removed,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// FromDB implemented xorm.Conversion convent database data to self
|
|
||||||
func (s *Status) FromDB(bytes []byte) error {
|
|
||||||
if r, ok := Statuses[string(bytes)]; ok {
|
|
||||||
*s = r
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return errors.New("no this data")
|
|
||||||
}
|
|
||||||
|
|
||||||
// ToDB implemented xorm.Conversion convent to database data
|
|
||||||
func (s *Status) ToDB() ([]byte, error) {
|
|
||||||
return []byte(s.Name), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
Status Status `xorm:"varchar(40)"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
f := "conversion.db"
|
|
||||||
os.Remove(f)
|
|
||||||
|
|
||||||
Orm, err := xorm.NewEngine("sqlite3", f)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Orm.ShowSQL(true)
|
|
||||||
err = Orm.CreateTables(&User{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = Orm.Insert(&User{1, "xlw", Registered})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
users := make([]User, 0)
|
|
||||||
err = Orm.Find(&users)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(users)
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoginInfo describes a login information
|
|
||||||
type LoginInfo struct {
|
|
||||||
Id int64
|
|
||||||
IP string
|
|
||||||
UserId int64
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoginInfo1 describes a login information
|
|
||||||
type LoginInfo1 struct {
|
|
||||||
LoginInfo `xorm:"extends"`
|
|
||||||
UserName string
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
f := "derive.db"
|
|
||||||
os.Remove(f)
|
|
||||||
|
|
||||||
orm, err := xorm.NewEngine("sqlite3", f)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer orm.Close()
|
|
||||||
orm.ShowSQL(true)
|
|
||||||
err = orm.CreateTables(&User{}, &LoginInfo{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
info := LoginInfo{}
|
|
||||||
_, err = orm.ID(1).Get(&info)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println(info)
|
|
||||||
|
|
||||||
infos := make([]LoginInfo1, 0)
|
|
||||||
err = orm.Sql(`select *, (select name from user where id = login_info.user_id) as user_name from
|
|
||||||
login_info limit 10`).Find(&infos)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(infos)
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
Created time.Time `xorm:"created"`
|
|
||||||
Updated time.Time `xorm:"updated"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
f := "conversion.db"
|
|
||||||
os.Remove(f)
|
|
||||||
|
|
||||||
orm, err := xorm.NewEngine("sqlite3", f)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
orm.ShowSQL(true)
|
|
||||||
|
|
||||||
err = orm.CreateTables(&User{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = orm.Insert(&User{Id: 1, Name: "xlw"})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
users := make([]User, 0)
|
|
||||||
err = orm.Find(&users)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(users)
|
|
||||||
}
|
|
|
@ -1,108 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func sqliteEngine() (*xorm.Engine, error) {
|
|
||||||
os.Remove("./test.db")
|
|
||||||
return xorm.NewEngine("sqlite3", "./goroutine.db")
|
|
||||||
}
|
|
||||||
|
|
||||||
func mysqlEngine() (*xorm.Engine, error) {
|
|
||||||
return xorm.NewEngine("mysql", "root:@/test?charset=utf8")
|
|
||||||
}
|
|
||||||
|
|
||||||
var u = &User{}
|
|
||||||
|
|
||||||
func test(engine *xorm.Engine) {
|
|
||||||
err := engine.CreateTables(u)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
size := 100
|
|
||||||
queue := make(chan int, size)
|
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
go func(x int) {
|
|
||||||
//x := i
|
|
||||||
err := engine.Ping()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
} else {
|
|
||||||
/*err = engine.(u)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Map user failed")
|
|
||||||
} else {*/
|
|
||||||
for j := 0; j < 10; j++ {
|
|
||||||
if x+j < 2 {
|
|
||||||
_, err = engine.Get(u)
|
|
||||||
} else if x+j < 4 {
|
|
||||||
users := make([]User, 0)
|
|
||||||
err = engine.Find(&users)
|
|
||||||
} else if x+j < 8 {
|
|
||||||
_, err = engine.Count(u)
|
|
||||||
} else if x+j < 16 {
|
|
||||||
_, err = engine.Insert(&User{Name: "xlw"})
|
|
||||||
} else if x+j < 32 {
|
|
||||||
_, err = engine.ID(1).Delete(u)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
queue <- x
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Printf("%v success!\n", x)
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
queue <- x
|
|
||||||
}(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
<-queue
|
|
||||||
}
|
|
||||||
|
|
||||||
//conns := atomic.LoadInt32(&xorm.ConnectionNum)
|
|
||||||
//fmt.Println("connection number:", conns)
|
|
||||||
fmt.Println("end")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
runtime.GOMAXPROCS(2)
|
|
||||||
fmt.Println("-----start sqlite go routines-----")
|
|
||||||
engine, err := sqliteEngine()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
engine.ShowSQL(true)
|
|
||||||
fmt.Println(engine)
|
|
||||||
test(engine)
|
|
||||||
fmt.Println("test end")
|
|
||||||
engine.Close()
|
|
||||||
|
|
||||||
fmt.Println("-----start mysql go routines-----")
|
|
||||||
engine, err = mysqlEngine()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer engine.Close()
|
|
||||||
test(engine)
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoginInfo describes a login information
|
|
||||||
type LoginInfo struct {
|
|
||||||
Id int64
|
|
||||||
IP string
|
|
||||||
UserId int64
|
|
||||||
// timestamp should be updated by database, so only allow get from db
|
|
||||||
TimeStamp string `xorm:"<-"`
|
|
||||||
// assume
|
|
||||||
Nonuse int `xorm:"->"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
f := "singleMapping.db"
|
|
||||||
os.Remove(f)
|
|
||||||
|
|
||||||
orm, err := xorm.NewEngine("sqlite3", f)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
orm.ShowSQL(true)
|
|
||||||
err = orm.CreateTables(&User{}, &LoginInfo{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1, "", 23})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
info := LoginInfo{}
|
|
||||||
_, err = orm.ID(1).Get(&info)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println(info)
|
|
||||||
}
|
|
|
@ -1,108 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// User describes a user
|
|
||||||
type User struct {
|
|
||||||
Id int64
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func sqliteEngine() (*xorm.Engine, error) {
|
|
||||||
os.Remove("./test.db")
|
|
||||||
return xorm.NewEngine("sqlite3", "./goroutine.db")
|
|
||||||
}
|
|
||||||
|
|
||||||
func mysqlEngine() (*xorm.Engine, error) {
|
|
||||||
return xorm.NewEngine("mysql", "root:@/test?charset=utf8")
|
|
||||||
}
|
|
||||||
|
|
||||||
var u = &User{}
|
|
||||||
|
|
||||||
func test(engine *xorm.Engine) {
|
|
||||||
err := engine.CreateTables(u)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
engine.ShowSQL(true)
|
|
||||||
engine.SetMaxOpenConns(5)
|
|
||||||
|
|
||||||
size := 1000
|
|
||||||
queue := make(chan int, size)
|
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
go func(x int) {
|
|
||||||
//x := i
|
|
||||||
err := engine.Ping()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
} else {
|
|
||||||
/*err = engine.Map(u)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Map user failed")
|
|
||||||
} else {*/
|
|
||||||
for j := 0; j < 10; j++ {
|
|
||||||
if x+j < 2 {
|
|
||||||
_, err = engine.Get(u)
|
|
||||||
} else if x+j < 4 {
|
|
||||||
users := make([]User, 0)
|
|
||||||
err = engine.Find(&users)
|
|
||||||
} else if x+j < 8 {
|
|
||||||
_, err = engine.Count(u)
|
|
||||||
} else if x+j < 16 {
|
|
||||||
_, err = engine.Insert(&User{Name: "xlw"})
|
|
||||||
} else if x+j < 32 {
|
|
||||||
_, err = engine.ID(1).Delete(u)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
queue <- x
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Printf("%v success!\n", x)
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
queue <- x
|
|
||||||
}(i)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < size; i++ {
|
|
||||||
<-queue
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("end")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
runtime.GOMAXPROCS(2)
|
|
||||||
fmt.Println("create engine")
|
|
||||||
engine, err := sqliteEngine()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
engine.ShowSQL(true)
|
|
||||||
fmt.Println(engine)
|
|
||||||
test(engine)
|
|
||||||
fmt.Println("------------------------")
|
|
||||||
engine.Close()
|
|
||||||
|
|
||||||
engine, err = mysqlEngine()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer engine.Close()
|
|
||||||
test(engine)
|
|
||||||
}
|
|
|
@ -1,106 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
|
||||||
_ "github.com/lib/pq"
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SyncUser2 describes a user
|
|
||||||
type SyncUser2 struct {
|
|
||||||
Id int64
|
|
||||||
Name string `xorm:"unique"`
|
|
||||||
Age int `xorm:"index"`
|
|
||||||
Title string
|
|
||||||
Address string
|
|
||||||
Genre string
|
|
||||||
Area string
|
|
||||||
Date int
|
|
||||||
}
|
|
||||||
|
|
||||||
// SyncLoginInfo2 describes a login information
|
|
||||||
type SyncLoginInfo2 struct {
|
|
||||||
Id int64
|
|
||||||
IP string `xorm:"index"`
|
|
||||||
UserId int64
|
|
||||||
AddedCol int
|
|
||||||
// timestamp should be updated by database, so only allow get from db
|
|
||||||
TimeStamp string
|
|
||||||
// assume
|
|
||||||
Nonuse int `xorm:"unique"`
|
|
||||||
Newa string `xorm:"index"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func sync(engine *xorm.Engine) error {
|
|
||||||
return engine.Sync(&SyncLoginInfo2{}, &SyncUser2{})
|
|
||||||
}
|
|
||||||
|
|
||||||
func sqliteEngine() (*xorm.Engine, error) {
|
|
||||||
f := "sync.db"
|
|
||||||
//os.Remove(f)
|
|
||||||
|
|
||||||
return xorm.NewEngine("sqlite3", f)
|
|
||||||
}
|
|
||||||
|
|
||||||
func mysqlEngine() (*xorm.Engine, error) {
|
|
||||||
return xorm.NewEngine("mysql", "root:@/test?charset=utf8")
|
|
||||||
}
|
|
||||||
|
|
||||||
func postgresEngine() (*xorm.Engine, error) {
|
|
||||||
return xorm.NewEngine("postgres", "dbname=xorm_test sslmode=disable")
|
|
||||||
}
|
|
||||||
|
|
||||||
type engineFunc func() (*xorm.Engine, error)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
//engines := []engineFunc{sqliteEngine, mysqlEngine, postgresEngine}
|
|
||||||
//engines := []engineFunc{sqliteEngine}
|
|
||||||
//engines := []engineFunc{mysqlEngine}
|
|
||||||
engines := []engineFunc{postgresEngine}
|
|
||||||
for _, enginefunc := range engines {
|
|
||||||
Orm, err := enginefunc()
|
|
||||||
fmt.Println("--------", Orm.DriverName(), "----------")
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Orm.ShowSQL(true)
|
|
||||||
err = sync(Orm)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = Orm.Where("id > 0").Delete(&SyncUser2{})
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
user := &SyncUser2{
|
|
||||||
Name: "testsdf",
|
|
||||||
Age: 15,
|
|
||||||
Title: "newsfds",
|
|
||||||
Address: "fasfdsafdsaf",
|
|
||||||
Genre: "fsafd",
|
|
||||||
Area: "fafdsafd",
|
|
||||||
Date: 1000,
|
|
||||||
}
|
|
||||||
_, err = Orm.Insert(user)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
isexist, err := Orm.IsTableExist("sync_user2")
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !isexist {
|
|
||||||
fmt.Println("sync_user2 is not exist")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
|
||||||
"xorm.io/xorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
if len(os.Args) < 2 {
|
|
||||||
fmt.Println("need db path")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
orm, err := xorm.NewEngine("sqlite3", os.Args[1])
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer orm.Close()
|
|
||||||
orm.ShowSQL(true)
|
|
||||||
|
|
||||||
tables, err := orm.DBMetas()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, table := range tables {
|
|
||||||
fmt.Println(table.Name)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue