go orm: xorm
Now that I come to a point to start with creating a rest-service I'm ready to go(lang).
I want to use an ORM to map go-structs to sqlite tables. For this I want to use xorm. Since I'm also new to golang there will be lots of things to wrap my head around.
type Song struct {
Id int64
Name string
Comments []string
Upvotes int64
}
Here to mention:
- field names should start with a capital letter
- Id with int64 maps create this as autoincremented
import (
"database/sql"
"fmt"
"os"
"strconv"
"github.com/go-xorm/xorm"
_ "github.com/mattn/go-sqlite3"
)
...
func dbcall() {
f := "singleMapping.db" // remove sqllite on startup
os.Remove(f)
orm, err := xorm.NewEngine("sqlite3", f) // create db with mapping
orm.ShowSQL(true) // show create sql
err = orm.CreateTables(&Song{}) // create table for this type
song := Song{}
song.Name = ""
song.Comments = []string{}
_, err = orm.Insert(song) // insert song (id:0)
song.Name = "aa"
_, err = orm.Insert(song) // change name and insert (id:1)
song.Name = "bb"
_, err = orm.Insert(song) // change name and insert (id:2)
var allSongs []Song
err = orm.Find(&allSongs) // retrieve all songs
fmt.Println("---- SONGS ---")
for _, song := range allSongs {
fmt.Println(song)
}
pSong := Song{}
_, err = orm.ID(1).Get(&pSong) // retrieve single song with Id:1
fmt.Println(song)}
}
Refs:
https://gobook.io/read/gitea.com/xorm/manual-en-US/
https://unknwon.io/posts/140616_xorm-go-orm-advanced-usage/
https://godoc.org/github.com/go-xorm/xorm
https://github.com/go-xorm/xorm/blob/master/examples