experiments

All kinds of coding experiments
Log | Files | Refs | Submodules

dbtest.go (1047B)


      1 package main
      2 
      3 import (
      4 	"database/sql"
      5 	"github.com/google/uuid"
      6 	_ "github.com/mattn/go-sqlite3"
      7 	"log"
      8 )
      9 
     10 var migrateDevices = []string{`CREATE TABLE devices (
     11 	"address" TEXT NOT NULL PRIMARY KEY,
     12 	"class" TEXT NOT NULL,
     13 	"name" TEXT NOT NULL
     14 );`}
     15 
     16 var queryInsertDevices = "INSERT INTO devices VALUES (?, ?, ?)"
     17 var queryGetDevices = "SELECT * FROM devices"
     18 
     19 func main() {
     20 	db, err := sql.Open("sqlite3", "file::memory:?cache=shared")
     21 	if err != nil {
     22 		log.Panic(err)
     23 	}
     24 	for _, migration := range migrateDevices {
     25 		stmt, err := db.Prepare(migration)
     26 		if err != nil {
     27 			log.Panic(err)
     28 		}
     29 		stmt.Exec()
     30 	}
     31 	stmt, err := db.Prepare(queryInsertDevices)
     32 	if err != nil {
     33 		log.Panic(err)
     34 	}
     35 	_, err = stmt.Exec(uuid.NewString(), "uncap", "My device")
     36 	if err != nil {
     37 		log.Panic(err)
     38 	}
     39 	row, err := db.Query(queryGetDevices)
     40 	if err != nil {
     41 		log.Panic(err)
     42 	}
     43 	defer row.Close()
     44 	for row.Next() {
     45 		var address, class, name string
     46 		row.Scan(&address, &class, &name)
     47 		log.Printf("Loaded device: %s, %s, %s\n", address, class, name)
     48 	}
     49 }