Implement parsing and persisting notes

This commit is contained in:
2024-10-27 21:43:46 +01:00
parent 09fe5a74d8
commit 4d21c77f99
5 changed files with 120 additions and 52 deletions

View File

@@ -2,6 +2,7 @@ package main
import (
"fmt"
"log"
)
type GuildService struct {
@@ -39,6 +40,7 @@ func (gs *GuildService) Query(query GuildServiceQuery) ([]Guild, error) {
}
func (gs *GuildService) Create(name string) (Guild, error) {
log.Printf("Creating guild %s", name)
guild := Guild{}
res, err := gs.db.writeConn.Exec("insert into guild (name) values (?)", name)
if err != nil {
@@ -49,6 +51,7 @@ func (gs *GuildService) Create(name string) (Guild, error) {
if err != nil {
return guild, fmt.Errorf("failed to get last insert id: %v", err)
}
log.Printf("Created guild %s with id %d", name, id)
qres, err := gs.Query(GuildServiceQuery{ID: &id})
if err != nil {
@@ -64,14 +67,17 @@ func (gs *GuildService) Create(name string) (Guild, error) {
func (gs *GuildService) GetOrCreate(name string) (Guild, error) {
guild := Guild{}
guilds, err := gs.Query(GuildServiceQuery{Name: &name})
if err != nil {
if len(guilds) > 1 {
return guild, fmt.Errorf("more than one guild found for name %s", name)
}
if len(guilds) > 1 {
return guild, fmt.Errorf("more than one guild found for name %s", name)
}
if err != nil || len(guilds) == 0 {
guild, err = gs.Create(name)
if err != nil {
return guild, fmt.Errorf("failed creating guild: %v", err)
}
}
if len(guilds) == 1 {
guild = guilds[0]
}
return guild, nil
}