wails-template/things/resource.go

78 lines
1.3 KiB
Go
Raw Normal View History

2025-02-03 19:07:21 +01:00
package things
2025-02-05 09:29:18 +01:00
import (
"log"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
2025-02-03 19:07:21 +01:00
type Thing struct {
2025-02-05 09:29:18 +01:00
ID int
Name string
Subthings []SubThing
}
type SubThing struct {
ID int
ThingID int
Name string
2025-02-03 19:07:21 +01:00
}
type Service struct {
2025-02-05 09:29:18 +01:00
db *gorm.DB
2025-02-03 19:07:21 +01:00
}
func NewThingsService() *Service {
2025-02-05 09:29:18 +01:00
db, err := gorm.Open(sqlite.Open("things.db"))
if err != nil {
log.Panic(err)
}
db.AutoMigrate(&Thing{}, &SubThing{})
2025-02-03 19:07:21 +01:00
return &Service{
2025-02-05 09:29:18 +01:00
db: db,
2025-02-03 19:07:21 +01:00
}
}
func (s *Service) NewThing(name string) {
2025-02-05 09:29:18 +01:00
if err := s.db.Save(&Thing{Name: name}).Error; err != nil {
log.Fatal(err)
2025-02-03 19:07:21 +01:00
}
print(name)
}
2025-02-05 09:29:18 +01:00
func (s *Service) GetThings() (things []Thing) {
if err := s.db.Find(&things).Error; err != nil {
log.Fatal(err)
2025-02-03 19:07:21 +01:00
}
return things
}
func (s *Service) DeleteThing(id int) {
2025-02-05 09:29:18 +01:00
if err := s.db.Delete(Thing{}, id).Error; err != nil {
log.Fatal(err)
}
}
2025-02-03 19:07:21 +01:00
2025-02-05 09:29:18 +01:00
func (s *Service) GetSubThings(thingID int) (subthings []SubThing) {
if err := s.db.Where("thing_id = ?", thingID).Find(&subthings).Error; err != nil {
log.Fatal(err)
}
return
}
func (s *Service) AddSubThing(thingID int, name string) {
if err := s.db.Save(&SubThing{
ThingID: thingID,
Name: name,
}).Error; err != nil {
log.Fatal(err)
}
}
func (s *Service) DeleteSubThing(id int) {
if err := s.db.Delete(SubThing{}, id).Error; err != nil {
log.Fatal(err)
}
2025-02-03 19:07:21 +01:00
}