diff --git a/core/controller/channel.go b/core/controller/channel.go index bcb06b0d..72d4e032 100644 --- a/core/controller/channel.go +++ b/core/controller/channel.go @@ -6,7 +6,6 @@ import ( "net/http" "slices" "strconv" - "strings" "time" "github.com/bytedance/sonic" @@ -166,13 +165,13 @@ func AddChannels(c *gin.Context) { _channels := make([]*model.Channel, 0, len(channels)) for _, channel := range channels { - channels, err := channel.ToChannels() + channel, err := channel.ToChannel() if err != nil { middleware.ErrorResponse(c, http.StatusBadRequest, err.Error()) return } - _channels = append(_channels, channels...) + _channels = append(_channels, channel) } err = model.BatchInsertChannels(_channels) @@ -332,36 +331,6 @@ func (r *AddChannelRequest) ToChannel() (*model.Channel, error) { }, nil } -func (r *AddChannelRequest) ToChannels() ([]*model.Channel, error) { - keys := strings.Split(r.Key, "\n") - - channels := make([]*model.Channel, 0, len(keys)) - for _, key := range keys { - if key == "" { - continue - } - - c, err := r.ToChannel() - if err != nil { - return nil, err - } - - c.Key = key - channels = append(channels, c) - } - - if len(channels) == 0 { - ch, err := r.ToChannel() - if err != nil { - return nil, err - } - - return []*model.Channel{ch}, nil - } - - return channels, nil -} - // AddChannel godoc // // @Summary Add a single channel @@ -382,13 +351,13 @@ func AddChannel(c *gin.Context) { return } - channels, err := channel.ToChannels() + ch, err := channel.ToChannel() if err != nil { middleware.ErrorResponse(c, http.StatusBadRequest, err.Error()) return } - err = model.BatchInsertChannels(channels) + err = model.BatchInsertChannels([]*model.Channel{ch}) if err != nil { middleware.ErrorResponse(c, http.StatusInternalServerError, err.Error()) return diff --git a/core/controller/channel_test.go b/core/controller/channel_test.go index 7e5cff75..40adc284 100644 --- a/core/controller/channel_test.go +++ b/core/controller/channel_test.go @@ -12,6 +12,19 @@ import ( "github.com/stretchr/testify/require" ) +func TestAddChannelRequestToChannelPreservesNewlinesInKey(t *testing.T) { + const key = "first-key\nsecond-key" + + channel, err := (&AddChannelRequest{ + Type: model.ChannelTypeOpenAI, + Name: "channel", + Key: key, + }).ToChannel() + + require.NoError(t, err) + require.Equal(t, key, channel.Key) +} + func TestRunAutoTestBannedModelsHonorsConcurrencyLimit(t *testing.T) { const ( concurrency = 7 diff --git a/core/controller/import.go b/core/controller/import.go index 71b52ce8..e63a96e0 100644 --- a/core/controller/import.go +++ b/core/controller/import.go @@ -154,12 +154,12 @@ func AddOneAPIChannel(ch OneAPIChannel) error { add.BaseURL += "/v1" } - chs, err := add.ToChannels() + channel, err := add.ToChannel() if err != nil { return err } - return model.BatchInsertChannels(chs) + return model.BatchInsertChannels([]*model.Channel{channel}) } // ImportChannelFromOneAPI godoc