diff --git a/README.md b/README.md index c4762f5..2f2545e 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,11 @@ ## Links - [gorm](https://gorm.io/docs/) + - [SQLite ERD](https://www.convertcsv.com/sqlite-online.htm) + - [Svelte5](https://svelte.dev/docs/svelte/what-are-runes) + - [SvelteRouting](https://github.com/EmilTholin/svelte-routing) - [Flowbyte UI lib](https://flowbite-svelte.com/docs/pages/introduction) - [Tailwind](https://tailwindcss.com/docs/flex-basis) - - [Svelte5](https://svelte.dev/docs/svelte/what-are-runes) - - [SQLite ERD](https://www.convertcsv.com/sqlite-online.htm) ## Fixes diff --git a/go.mod b/go.mod index 291463c..b41c145 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,12 @@ -module wails-svelte-tailwind-ts +module wails-template go 1.23 -require github.com/wailsapp/wails/v2 v2.9.2 +require ( + github.com/wailsapp/wails/v2 v2.9.2 + gorm.io/driver/sqlite v1.5.7 + gorm.io/gorm v1.25.12 +) require ( github.com/bep/debounce v1.2.1 // indirect @@ -10,6 +14,8 @@ require ( github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/google/uuid v1.3.0 // indirect github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect github.com/labstack/echo/v4 v4.10.2 // indirect github.com/labstack/gommon v0.4.0 // indirect github.com/leaanthony/go-ansi-parser v1.6.0 // indirect @@ -18,6 +24,7 @@ require ( github.com/leaanthony/u v1.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-sqlite3 v1.14.22 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/rivo/uniseg v0.4.4 // indirect diff --git a/go.sum b/go.sum index 6ed0576..d46117f 100644 --- a/go.sum +++ b/go.sum @@ -11,6 +11,10 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M= github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k= github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= @@ -35,6 +39,8 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -92,3 +98,7 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/sqlite v1.5.7 h1:8NvsrhP0ifM7LX9G4zPB97NwovUakUxc+2V2uuf3Z1I= +gorm.io/driver/sqlite v1.5.7/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= diff --git a/main.go b/main.go index b744f26..17171fd 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,8 @@ package main import ( "embed" - "wails-svelte-tailwind-ts/things" + "wails-template/model" + "wails-template/things" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/options" @@ -15,7 +16,8 @@ var assets embed.FS func main() { // Create an instance of the app structure app := NewApp() - things := things.NewThingsService() + db := model.InitDB() + things := &things.Service{DB: db} // Create application with options err := wails.Run(&options.App{ diff --git a/model/model.go b/model/model.go new file mode 100644 index 0000000..cf10ea4 --- /dev/null +++ b/model/model.go @@ -0,0 +1,29 @@ +package model + +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 +} + +func InitDB() *gorm.DB { + db, err := gorm.Open(sqlite.Open("things.db")) + if err != nil { + log.Panic(err) + } + db.AutoMigrate(&Thing{}, &SubThing{}) + return db +} diff --git a/things/resource.go b/things/resource.go index 6bd18ba..8afaece 100644 --- a/things/resource.go +++ b/things/resource.go @@ -1,43 +1,54 @@ package things -import "slices" +import ( + "log" + "wails-template/model" -type Thing struct { - ID int - Name string -} + "gorm.io/gorm" +) type Service struct { - things map[int]Thing - maxID int -} - -func NewThingsService() *Service { - return &Service{ - things: make(map[int]Thing), - } + DB *gorm.DB } func (s *Service) NewThing(name string) { - s.maxID++ - s.things[s.maxID] = Thing{ - Name: name, - ID: s.maxID, + if err := s.DB.Save(&model.Thing{Name: name}).Error; err != nil { + log.Fatal(err) } print(name) } -func (s *Service) GetThings() []Thing { - things := make([]Thing, 0, len(s.things)) - for _, t := range s.things { - things = append(things, t) +func (s *Service) GetThings() (things []model.Thing) { + if err := s.DB.Find(&things).Error; err != nil { + log.Fatal(err) } - slices.SortFunc(things, func(a, b Thing) int { return a.ID - b.ID }) return things } func (s *Service) DeleteThing(id int) { - delete(s.things, id) - + if err := s.DB.Delete(model.Thing{}, id).Error; err != nil { + log.Fatal(err) + } +} + +func (s *Service) GetSubThings(thingID int) (subthings []model.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(&model.SubThing{ + ThingID: thingID, + Name: name, + }).Error; err != nil { + log.Fatal(err) + } +} + +func (s *Service) DeleteSubThing(id int) { + if err := s.DB.Delete(model.SubThing{}, id).Error; err != nil { + log.Fatal(err) + } } diff --git a/wails.json b/wails.json index f876376..ce57698 100644 --- a/wails.json +++ b/wails.json @@ -1,13 +1,13 @@ { "$schema": "https://wails.io/schemas/config.v2.json", - "name": "wails-svelte-tailwind-ts", - "outputfilename": "wails-svelte-tailwind-ts", + "name": "wails-template", + "outputfilename": "wails-template", "frontend:install": "pnpm install", "frontend:build": "pnpm run build", "frontend:dev:watcher": "pnpm run dev", "frontend:dev:serverUrl": "auto", "author": { - "name": "u80864958", - "email": "niklas.breitenstein@bit.admin.ch" + "name": "schreifuchs", + "email": "kontakt@schreifuchs.ch" } }