From 04d8a8853fa2fcf513ec69693e7a8b7ad5848dc0 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L. de Mello" Date: Mon, 12 Aug 2024 11:08:55 -0300 Subject: [PATCH] refactor(guilddb,sqlite): simplify the errors --- internals/guilddb/sqlite.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/internals/guilddb/sqlite.go b/internals/guilddb/sqlite.go index aa45767..c1eda92 100644 --- a/internals/guilddb/sqlite.go +++ b/internals/guilddb/sqlite.go @@ -88,6 +88,13 @@ func (db *SQLiteDB) MessageWithOriginByLang(originChannelID, originID string, la } func (db *SQLiteDB) MessageInsert(m Message) error { + _, err := db.Channel(m.ChannelID) + if errors.Is(err, ErrNotFound) { + return errors.Join(ErrPreconditionFailed, fmt.Errorf("Channel %s doesn't exists in the database", m.ChannelID)) + } else if err != nil { + return errors.Join(ErrInternal, errors.New("Failed to check if Channel exists in the database"), err) + } + r, err := db.sql.Exec(` INSERT INTO guild-v1.messages (ID, ChannelID, Language, OriginID, OriginChannelID) VALUES ($1, $2, $3, $4, $5) @@ -153,7 +160,7 @@ func (db *SQLiteDB) selectMessage(query string, args ...any) (Message, error) { Scan(&m.ID, &m.ChannelID, &m.Language, &m.OriginID, &m.OriginChannelID) if errors.Is(err, sql.ErrNoRows) { - return m, errors.Join(ErrNoMessages, err) + return m, errors.Join(ErrNotFound, err) } else if err != nil { return m, errors.Join(ErrInternal, err) } @@ -186,7 +193,7 @@ func (db *SQLiteDB) selectMessages(query string, args ...any) ([]Message, error) if len(ms) == 0 { return ms, errors.Join( - ErrNoMessages, + ErrNotFound, fmt.Errorf("Query: %s\nArguments: %v", query, args), ) } @@ -255,7 +262,7 @@ func (db *SQLiteDB) ChannelGroup(channelID string) (ChannelGroup, error) { `, channelID).Scan(&g) if errors.Is(err, sql.ErrNoRows) { - return ChannelGroup{}, errors.Join(ErrNoChannelGroup, err) + return ChannelGroup{}, errors.Join(ErrNotFound, err) } else if err != nil { return ChannelGroup{}, errors.Join(ErrInternal, err) } @@ -273,7 +280,7 @@ func (db *SQLiteDB) ChannelGroup(channelID string) (ChannelGroup, error) { WHERE %s `, strings.Join(ids, " OR "))) - if errors.Is(err, ErrNoChannels) || len(cs) != len(ids) { + if errors.Is(err, ErrNotFound) || len(cs) != len(ids) { return ChannelGroup{}, errors.Join(ErrMissingChannels, err) } else if err != nil { return ChannelGroup{}, errors.Join(ErrInternal, err) @@ -360,7 +367,7 @@ func (db *SQLiteDB) selectChannel(query string, args ...any) (Channel, error) { Scan(&c.ID, &c.Language) if errors.Is(err, sql.ErrNoRows) { - return c, errors.Join(ErrNoMessages, err) + return c, errors.Join(ErrNotFound, err) } else if err != nil { return c, errors.Join(ErrInternal, err) } @@ -393,7 +400,7 @@ func (db *SQLiteDB) selectChannels(query string, args ...any) ([]Channel, error) if len(cs) == 0 { return cs, errors.Join( - ErrNoChannels, + ErrNotFound, fmt.Errorf("Query: %s\nArguments: %v", query, args), ) }