Sha256: e1bb112db2de664bf42b654a01b9911852173188f6ba71f942abaa799792acde

Contents?: true

Size: 1.23 KB

Versions: 9

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module Mihari
  module Endpoints
    class Tags < Grape::API
      namespace :tags do
        desc "Get tags", {
          is_array: true,
          success: Entities::Tags,
          summary: "Get tags"
        }
        get "/" do
          tags = Mihari::Tag.distinct.pluck(:name)
          present({ tags: tags }, with: Entities::Tags)
        end

        desc "Delete a tag", {
          success: Entities::Message,
          failure: [{ code: 404, message: "Not found", model: Entities::Message }],
          summary: "Delete a tag"
        }
        params do
          requires :name, type: String
        end
        delete "/:name" do
          extend Dry::Monads[:result, :try]

          name = params[:name].to_s

          result = Try do
            Mihari::Tag.where(name: name).destroy_all
          end.to_result

          if result.success?
            status 204
            return present({ message: "" }, with: Entities::Message)
          end

          failure = result.failure
          case failure
          when ActiveRecord::RecordNotFound
            error!({ message: "Name:#{name} is not found" }, 404)
          else
            raise failure
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
mihari-5.6.1 lib/mihari/web/endpoints/tags.rb
mihari-5.6.0 lib/mihari/web/endpoints/tags.rb
mihari-5.5.0 lib/mihari/web/endpoints/tags.rb
mihari-5.4.9 lib/mihari/web/endpoints/tags.rb
mihari-5.4.8 lib/mihari/web/endpoints/tags.rb
mihari-5.4.7 lib/mihari/web/endpoints/tags.rb
mihari-5.4.6 lib/mihari/web/endpoints/tags.rb
mihari-5.4.5 lib/mihari/web/endpoints/tags.rb
mihari-5.4.4 lib/mihari/web/endpoints/tags.rb