package konfa

import (
	"context"

	"github.com/royalcat/konfa-server/pkg/uuid"
	"github.com/royalcat/konfa-server/src/store"
)

func (c *Service) CreateChannel(ctx context.Context, serverID uuid.UUID, name string) (uuid.UUID, error) {
	channel := store.TextChannel{
		ID:       uuid.New(),
		ServerID: serverID,
		Name:     name,
	}

	var idrow store.IDRow
	_, err := c.db.NewInsert().Model(&channel).Returning("id").Exec(ctx, &idrow)
	if err != nil {
		return idrow.ID, err
	}

	return idrow.ID, nil
}

func (c *Service) GetChannel(ctx context.Context, serverID uuid.UUID, channelID uuid.UUID) (store.TextChannel, error) {
	var channel store.TextChannel
	err := c.db.NewSelect().
		Model(&channel).
		// Where("server_id = ?", serverID).
		Where("id = ?", channelID).
		Scan(ctx)

	return channel, err
}

func (c *Service) ListChannelsOnServer(ctx context.Context, serverID uuid.UUID) ([]store.TextChannel, error) {
	var channels []store.TextChannel
	err := c.db.NewSelect().
		Model(&channels).
		Where("server_id = ?", serverID).
		Scan(ctx)
	return channels, err
}