1.2. fejezet, GORM

Telepítendő függőségek

go get -u gorm.io/gorm
go get -u gorm.io/driver/postgres
 
go get -u github.com/magiconair/properties

Egyszerű lekérdezés

app-main.go

package main
 
import (
	"encoding/json"
	"fmt"
	"github.com/magiconair/properties"
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
	"log"
	"os"
)
 
type Doctor struct {
	id   uint
	name string
}
 
var p = properties.MustLoadFile("config.properties", properties.UTF8)
var (
	dsn = fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
		p.MustGetString("host"),
		p.MustGetInt("port"),
		p.MustGetString("user"),
		p.MustGetString("password"),
		p.MustGetString("dbname"),
	)
)
 
func main() {
	db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
	checkErr(err)
 
	var results []map[string]interface{}
	db.Table("doctor").Model(&Doctor{}).Find(&results)
 
	// print as JSON string and write to doctors.json file
	jsons, _ := json.MarshalIndent(results, "", "  ")
	fmt.Println(string(jsons))
	err = os.WriteFile("doctors.json", jsons, 0644)
	checkErr(err)
 
	// read doctors.json and unmarshal
	dat, err := os.ReadFile("doctors.json")
	err = json.Unmarshal(dat, &results)
	checkErr(err)
 
	for result := range results {
		log.Printf("%+v\n", results[result]["name"])
	}
}
 
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}