Files
go-htmx-tailwind-example/db/seed.go

114 lines
1.9 KiB
Go

package db
import (
"database/sql"
"os"
)
func GetSeedData() (items []Item, boxes []Box, boxitems []BoxItem) {
items = []Item{
{
ID: 1,
Name: "Toothbrush",
Stage: Essentials,
Category: Bathroom,
},
{
ID: 2,
Name: "Toothpaste",
Stage: Essentials,
Category: Bathroom,
},
{
ID: 3,
Name: "TV",
Stage: StageTwo,
Category: Bedroom,
},
{
ID: 4,
Name: "Micro USB Bundle",
Stage: StageOne,
Category: Office,
},
}
plasticTubDescription := "Plastic tub with blue lid"
boxes = []Box{
{
ID: 1,
Name: "Cable Box",
Description: &plasticTubDescription,
Stage: StageOne,
},
}
boxitems = []BoxItem{
{
ID: 1,
BoxID: 1,
ItemID: 4,
},
}
return
}
func CreateTables(client *sql.DB) (int64, error) {
script, err := os.ReadFile("/home/mikayla/go/go-htmx-tailwind-example/db/seed.sql")
if err != nil {
return -1, err
}
result, err := client.Exec(string(script))
if err != nil {
return -1, err
}
return result.RowsAffected()
}
func SeedDB() (int64, error) {
client, err := CreateClient()
if err != nil {
return -1, err
}
defer client.Close()
CreateTables(client)
items, boxes, _ := GetSeedData()
insertCount := 0
// loop through initial items and run post request for each
for i := range(items) {
_, err := PostItem(items[i])
if err != nil {
// ignore unique constraint violations and continue
if err.Error() == "UNIQUE constraint failed: items.Name" {
continue
}
return -1, err
}
insertCount++
}
for i := range(boxes) {
_, err := PostBox(boxes[i])
if err != nil {
// ignore unique constraint violations and continue
if err.Error() == "UNIQUE constraint failed: boxes.Name" {
continue
}
return -1, err
}
insertCount++
}
return int64(insertCount), nil
}