他のGolangでSQL文を使って作成したテーブルにGORMを使ってアクセスします。ポイントはテーブル名がデフォルトでは使えないので、Tabler interfaceのメソッドであるTableName()を実装してテーブル名を与えているところになるかと思います。
https://isehara-3lv.sakura.ne.jp/blog/2023/04/01/goのormであるgormを見てみる/
の再構成に過ぎませんが、最低限やりたいことはGORMで実現できそうです。
package main
import (
"fmt"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"time"
"strconv"
)
type Product struct {
Uid string `gorm:"primaryKey"`
Name string
Time int
Stat int
}
var products []Product
//
// implements TableName of the Tabler interface
//
func (Product) TableName() string {
t := time.Now()
tableName := "tbl" + strconv.Itoa(t.Year()) + strconv.Itoa(t.YearDay())
return tableName
}
func main() {
db, err := gorm.Open(sqlite.Open("~~~path to the db~~~ /myfare.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// Migrate the schema
db.AutoMigrate(&Product{}) // if you use Automigrate and change struct, it won't be reflected automatically
db.Debug().Find(&products) // SELECT * FROM tbl*****;
for i, p := range products{
//db.Model(&p).Update("Qty", 20)
fmt.Println(i, p)
}
}
admin