Start translation to brazilian portuguese
This commit is contained in:
170
pt-br/code/src/apps/ch.5.5/main.go
Normal file
170
pt-br/code/src/apps/ch.5.5/main.go
Normal file
@@ -0,0 +1,170 @@
|
||||
// Example code for Chapter 5.5
|
||||
// Purpose is to show to use BeeDB ORM for basic CRUD operations for sqlite3
|
||||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/astaxie/beedb"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
"time"
|
||||
)
|
||||
|
||||
var orm beedb.Model
|
||||
|
||||
type Userinfo struct {
|
||||
Uid int `beedb:"PK"`
|
||||
Username string
|
||||
Department string
|
||||
Created string
|
||||
}
|
||||
|
||||
const DB_PATH = "./foo.db"
|
||||
|
||||
func checkError(err error) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
func getTimeStamp() string {
|
||||
return time.Now().Format("2006-01-02 15:04:05")
|
||||
}
|
||||
func insertUsingStruct() int64 {
|
||||
fmt.Println("insertUsingStruct()")
|
||||
var obj Userinfo
|
||||
obj.Username = "Test Add User"
|
||||
obj.Department = "Test Add Department"
|
||||
obj.Created = getTimeStamp()
|
||||
checkError(orm.Save(&obj))
|
||||
fmt.Printf("%+v\n", obj)
|
||||
return int64(obj.Uid)
|
||||
}
|
||||
func insertUsingMap() int64 {
|
||||
fmt.Println("insertUsingMap()")
|
||||
add := make(map[string]interface{})
|
||||
add["username"] = "astaxie"
|
||||
add["department"] = "cloud develop"
|
||||
add["created"] = getTimeStamp()
|
||||
id, err := orm.SetTable("userinfo").Insert(add)
|
||||
checkError(err)
|
||||
fmt.Println("Last row inserted id =", id)
|
||||
return id
|
||||
}
|
||||
|
||||
func getOneUserInfo(id int64) Userinfo {
|
||||
fmt.Println("getOneUserInfo()")
|
||||
var obj Userinfo
|
||||
checkError(orm.Where("uid=?", id).Find(&obj))
|
||||
return obj
|
||||
}
|
||||
|
||||
func getAllUserInfo(id int64) []Userinfo {
|
||||
fmt.Println("getAllUserInfo()")
|
||||
var alluser []Userinfo
|
||||
checkError(orm.Limit(10).Where("uid>?", id).FindAll(&alluser))
|
||||
return alluser
|
||||
}
|
||||
|
||||
func updateUserinfo(id int64) {
|
||||
fmt.Println("updateUserinfo()")
|
||||
var obj Userinfo
|
||||
obj.Uid = int(id)
|
||||
obj.Username = "Update Username"
|
||||
obj.Department = "Update Department"
|
||||
obj.Created = getTimeStamp()
|
||||
checkError(orm.Save(&obj))
|
||||
fmt.Printf("%+v\n", obj)
|
||||
}
|
||||
|
||||
func updateUsingMap(id int64) {
|
||||
fmt.Println("updateUsingMap()")
|
||||
t := make(map[string]interface{})
|
||||
t["username"] = "updateastaxie"
|
||||
//update one
|
||||
// id, err := orm.SetTable("userinfo").SetPK("uid").Where(2).Update(t)
|
||||
//update batch
|
||||
lastId, err := orm.SetTable("userinfo").Where("uid>?", id).Update(t)
|
||||
checkError(err)
|
||||
fmt.Println("Last row updated id =", lastId)
|
||||
}
|
||||
|
||||
func getMapsFromSelect(id int64) []map[string][]byte {
|
||||
fmt.Println("getMapsFromSelect()")
|
||||
//Original SQL Backinfo resultsSlice []map[string][]byte
|
||||
//default PrimaryKey id
|
||||
c, err := orm.SetTable("userinfo").SetPK("uid").Where(id).Select("uid,username").FindMap()
|
||||
checkError(err)
|
||||
fmt.Printf("%+v\n", c)
|
||||
return c
|
||||
}
|
||||
|
||||
func groupby() {
|
||||
fmt.Println("groupby()")
|
||||
//Original SQL Group By
|
||||
b, err := orm.SetTable("userinfo").GroupBy("username").Having("username='updateastaxie'").FindMap()
|
||||
checkError(err)
|
||||
fmt.Printf("%+v\n", b)
|
||||
}
|
||||
|
||||
func joinTables(id int64) {
|
||||
fmt.Println("joinTables()")
|
||||
//Original SQL Join Table
|
||||
a, err := orm.SetTable("userinfo").Join("LEFT", "userdetail", "userinfo.uid=userdetail.uid").Where("userinfo.uid=?", id).Select("userinfo.uid,userinfo.username,userdetail.profile").FindMap()
|
||||
checkError(err)
|
||||
fmt.Printf("%+v\n", a)
|
||||
}
|
||||
|
||||
func deleteWithUserinfo(id int64) {
|
||||
fmt.Println("deleteWithUserinfo()")
|
||||
obj := getOneUserInfo(id)
|
||||
id, err := orm.Delete(&obj)
|
||||
checkError(err)
|
||||
fmt.Println("Last row deleted id =", id)
|
||||
}
|
||||
|
||||
func deleteRows() {
|
||||
fmt.Println("deleteRows()")
|
||||
//original SQL delete
|
||||
id, err := orm.SetTable("userinfo").Where("uid>?", 2).DeleteRow()
|
||||
checkError(err)
|
||||
fmt.Println("Last row updated id =", id)
|
||||
}
|
||||
|
||||
func deleteAllUserinfo(id int64) {
|
||||
fmt.Println("deleteAllUserinfo()")
|
||||
//delete all data
|
||||
alluser := getAllUserInfo(id)
|
||||
id, err := orm.DeleteAll(&alluser)
|
||||
checkError(err)
|
||||
fmt.Println("Last row updated id =", id)
|
||||
}
|
||||
func main() {
|
||||
db, err := sql.Open("sqlite3", DB_PATH)
|
||||
checkError(err)
|
||||
orm = beedb.New(db)
|
||||
var lastIdInserted int64
|
||||
|
||||
fmt.Println("Inserting")
|
||||
lastIdInserted = insertUsingStruct()
|
||||
insertUsingMap()
|
||||
|
||||
a := getOneUserInfo(lastIdInserted)
|
||||
fmt.Println(a)
|
||||
|
||||
b := getAllUserInfo(lastIdInserted)
|
||||
fmt.Println(b)
|
||||
|
||||
fmt.Println("Updating")
|
||||
updateUserinfo(lastIdInserted)
|
||||
updateUsingMap(lastIdInserted)
|
||||
|
||||
fmt.Println("Querying")
|
||||
getMapsFromSelect(lastIdInserted)
|
||||
groupby()
|
||||
joinTables(lastIdInserted)
|
||||
|
||||
fmt.Println("Deleting")
|
||||
deleteWithUserinfo(lastIdInserted)
|
||||
deleteRows()
|
||||
deleteAllUserinfo(lastIdInserted)
|
||||
}
|
||||
Reference in New Issue
Block a user