78 lines
1.3 KiB
Go
78 lines
1.3 KiB
Go
package things
|
|
|
|
import (
|
|
"log"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Thing struct {
|
|
ID int
|
|
Name string
|
|
Subthings []SubThing
|
|
}
|
|
|
|
type SubThing struct {
|
|
ID int
|
|
ThingID int
|
|
Name string
|
|
}
|
|
|
|
type Service struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewThingsService() *Service {
|
|
db, err := gorm.Open(sqlite.Open("things.db"))
|
|
if err != nil {
|
|
log.Panic(err)
|
|
}
|
|
db.AutoMigrate(&Thing{}, &SubThing{})
|
|
return &Service{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func (s *Service) NewThing(name string) {
|
|
if err := s.db.Save(&Thing{Name: name}).Error; err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
print(name)
|
|
}
|
|
|
|
func (s *Service) GetThings() (things []Thing) {
|
|
if err := s.db.Find(&things).Error; err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return things
|
|
}
|
|
|
|
func (s *Service) DeleteThing(id int) {
|
|
if err := s.db.Delete(Thing{}, id).Error; err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|