implement channel API (no use yet)

This commit is contained in:
2025-05-26 14:09:01 -04:00
parent 5782177c35
commit 9426ab2bae
4 changed files with 348 additions and 0 deletions

View File

@@ -239,3 +239,102 @@ func dbDeleteMessage(id string) error {
slog.Debug("db: message deleted", "messageid", id)
return nil
}
func dbAddChannel(channel *Channel) error {
query := `INSERT INTO channels (id, name, type, created) VALUES (?, ?, ?, ?)`
err := db.Session.Query(query,
channel.ID,
channel.Name,
channel.Type,
channel.Created).Exec()
if err != nil {
slog.Error("db: failed to add channel", "error", err, "channelid", channel.ID)
return fmt.Errorf("failed to add channel")
}
slog.Debug("db: channel added", "channelid", channel.ID)
return nil
}
func dbGetChannel(id string) (*Channel, error) {
query := `SELECT id, name, type, created FROM channels WHERE id = ?`
var channel Channel
err := db.Session.Query(query, id).Scan(
&channel.ID,
&channel.Name,
&channel.Type,
&channel.Created)
if err == gocql.ErrNotFound {
slog.Debug("db: channel not found", "channelid", id)
return nil, errors.New("Channel not found")
} else if err != nil {
slog.Error("db: failed to query channel", "error", err)
return nil, fmt.Errorf("failed to query channel")
}
slog.Debug("db: channel found", "channelid", channel.ID)
return &channel, nil
}
func dbGetAllChannels() ([]*Channel, error) {
query := `SELECT id, name, type, created FROM channels`
iter := db.Session.Query(query).Iter()
defer iter.Close()
var channels []*Channel
for {
channel := &Channel{}
if !iter.Scan(
&channel.ID,
&channel.Name,
&channel.Type,
&channel.Created) {
break
}
channels = append(channels, channel)
}
if err := iter.Close(); err != nil {
slog.Error("db: failed to iterate channels", "error", err)
return nil, fmt.Errorf("failed to iterate channels")
}
if len(channels) == 0 {
slog.Debug("db: no channels found")
return nil, errors.New("no channels found")
}
slog.Debug("db: channel list returned")
return channels, nil
}
func dbUpdateChannel(updatedChannel *Channel) error {
query := `UPDATE channels SET name = ?, type = ?, created = ? WHERE id = ?`
err := db.Session.Query(query,
updatedChannel.Name,
updatedChannel.Type,
updatedChannel.Created,
updatedChannel.ID).Exec()
if err != nil {
slog.Error("db: failed to update channel", "error", err, "channelid", updatedChannel.ID)
return fmt.Errorf("failed to update channel")
}
slog.Debug("db: channel updated", "channelid", updatedChannel.ID)
return nil
}
func dbDeleteChannel(id string) error {
query := `DELETE FROM channels WHERE id = ?`
err := db.Session.Query(query, id).Exec()
if err != nil {
slog.Error("db: failed to delete channel", "error", err)
return fmt.Errorf("failed to delete channel")
}
slog.Debug("db: channel deleted")
return nil
}