implement channel API (no use yet)
This commit is contained in:
99
api/db.go
99
api/db.go
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user