feat: seeddb script
This commit is contained in:
parent
552505fa53
commit
1c8276188c
2 changed files with 131 additions and 0 deletions
4
Makefile
4
Makefile
|
@ -2,6 +2,10 @@
|
||||||
migrate:
|
migrate:
|
||||||
go run -v ./scripts/migrate
|
go run -v ./scripts/migrate
|
||||||
|
|
||||||
|
.PHONY: seeddb
|
||||||
|
seeddb:
|
||||||
|
go run -v ./scripts/seeddb
|
||||||
|
|
||||||
.PHONY: backend
|
.PHONY: backend
|
||||||
backend:
|
backend:
|
||||||
CGO_ENABLED=0 go build -v -o pronouns -ldflags="-buildid= -X codeberg.org/u1f320/pronouns.cc/backend/server.Revision=`git rev-parse --short HEAD`" ./backend
|
CGO_ENABLED=0 go build -v -o pronouns -ldflags="-buildid= -X codeberg.org/u1f320/pronouns.cc/backend/server.Revision=`git rev-parse --short HEAD`" ./backend
|
||||||
|
|
127
scripts/seeddb/main.go
Normal file
127
scripts/seeddb/main.go
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"codeberg.org/u1f320/pronouns.cc/backend/db"
|
||||||
|
"github.com/jackc/pgx/v4/pgxpool"
|
||||||
|
"github.com/joho/godotenv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
err := godotenv.Load()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error loading .env file:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
pool, err := pgxpool.Connect(ctx, os.Getenv("DATABASE_URL"))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error opening database:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer pool.Close()
|
||||||
|
|
||||||
|
fmt.Println("opened database")
|
||||||
|
|
||||||
|
pg := &db.DB{Pool: pool}
|
||||||
|
|
||||||
|
tx, err := pg.Begin(ctx)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error beginning transaction:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
u, err := pg.CreateUser(ctx, tx, "test")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error creating user:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = pg.UpdateUser(ctx, tx, u.ID, ptr("testing"), ptr("This is a bio!"), &[]string{"https://pronouns.cc"}, nil)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error setting user info:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = pg.SetUserNames(ctx, tx, u.ID, []db.Name{
|
||||||
|
{Name: "testing 1", Status: db.StatusFavourite},
|
||||||
|
{Name: "testing 2", Status: db.StatusOkay},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error setting names:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = pg.SetUserPronouns(ctx, tx, u.ID, []db.Pronoun{
|
||||||
|
{Pronouns: "it/it/its/its/itself", DisplayText: ptr("it/its"), Status: db.StatusFavourite},
|
||||||
|
{Pronouns: "they/them/their/theirs/themself", Status: db.StatusOkay},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error setting pronouns:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = pg.SetUserFields(ctx, tx, u.ID, []db.Field{
|
||||||
|
{
|
||||||
|
Name: "Field 1",
|
||||||
|
Favourite: []string{"Favourite 1"},
|
||||||
|
Okay: []string{"Okay 1"},
|
||||||
|
Jokingly: []string{"Jokingly 1"},
|
||||||
|
FriendsOnly: []string{"Friends only 1"},
|
||||||
|
Avoid: []string{"Avoid 1"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Field 2",
|
||||||
|
Favourite: []string{"Favourite 2"},
|
||||||
|
Okay: []string{"Okay 2"},
|
||||||
|
Jokingly: []string{"Jokingly 2"},
|
||||||
|
FriendsOnly: []string{"Friends only 2"},
|
||||||
|
Avoid: []string{"Avoid 2"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Field 3",
|
||||||
|
Favourite: []string{"Favourite 3"},
|
||||||
|
Okay: []string{"Okay 3"},
|
||||||
|
Jokingly: []string{"Jokingly 3"},
|
||||||
|
FriendsOnly: []string{"Friends only 3"},
|
||||||
|
Avoid: []string{"Avoid 3"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Field 4",
|
||||||
|
Favourite: []string{"Favourite 4"},
|
||||||
|
Okay: []string{"Okay 4"},
|
||||||
|
Jokingly: []string{"Jokingly 4"},
|
||||||
|
FriendsOnly: []string{"Friends only 4"},
|
||||||
|
Avoid: []string{"Avoid 4"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Field 5",
|
||||||
|
Favourite: []string{"Favourite 5"},
|
||||||
|
Okay: []string{"Okay 5"},
|
||||||
|
Jokingly: []string{"Jokingly 5"},
|
||||||
|
FriendsOnly: []string{"Friends only 5"},
|
||||||
|
Avoid: []string{"Avoid 5"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error setting fields:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = tx.Commit(ctx)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("error committing transaction:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Created testing user with ID", u.ID, "and name", u.Username)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ptr[T any](v T) *T {
|
||||||
|
return &v
|
||||||
|
}
|
Loading…
Reference in a new issue