mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-06-30 19:42:17 +00:00
60 lines
1.3 KiB
Ruby
60 lines
1.3 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module DiscourseAi
|
||
|
module Admin
|
||
|
class AiLlmQuotasController < ::Admin::AdminController
|
||
|
requires_plugin ::DiscourseAi::PLUGIN_NAME
|
||
|
|
||
|
def index
|
||
|
quotas = LlmQuota.includes(:group)
|
||
|
|
||
|
render json: {
|
||
|
quotas:
|
||
|
ActiveModel::ArraySerializer.new(quotas, each_serializer: LlmQuotaSerializer),
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def create
|
||
|
quota = LlmQuota.new(quota_params)
|
||
|
|
||
|
if quota.save
|
||
|
render json: LlmQuotaSerializer.new(quota), status: :created
|
||
|
else
|
||
|
render_json_error quota
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
quota = LlmQuota.find(params[:id])
|
||
|
|
||
|
if quota.update(quota_params)
|
||
|
render json: LlmQuotaSerializer.new(quota)
|
||
|
else
|
||
|
render_json_error quota
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def destroy
|
||
|
quota = LlmQuota.find(params[:id])
|
||
|
quota.destroy!
|
||
|
|
||
|
head :no_content
|
||
|
rescue ActiveRecord::RecordNotFound
|
||
|
render json: { error: I18n.t("not_found") }, status: 404
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def quota_params
|
||
|
params.require(:quota).permit(
|
||
|
:group_id,
|
||
|
:llm_model_id,
|
||
|
:max_tokens,
|
||
|
:max_usages,
|
||
|
:duration_seconds,
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|