Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
syphax-bouazzouni committed Jan 18, 2022
2 parents f167f9a + 5060c41 commit b953728
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 48 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ logs/**
.tags*
cache/**
vendor/bundle/*
ontologies_api.iml

# YARD artifacts
.yardoc
Expand Down
51 changes: 31 additions & 20 deletions controllers/instances_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,21 @@ class InstancesController < ApplicationController
check_last_modified_segment(LinkedData::Models::Instance, [ont.acronym])
cls = get_class(sub)
error 404 if cls.nil?
page, size = page_params

unmapped = (includes_param && includes_param.include?(:all))
page_data = LinkedData::Models::Instance.where(cls.id.nil? ? nil :{types: RDF::URI.new(cls.id.to_s)}).in(sub)
.include(LinkedData::Models::Instance.attributes).page(page,size).all
attributes, page, size, filter_by_label, order_by, bring_unmapped_needed = settings_params



page_data = LinkedData::Models::Instance.where(filter_classes_by(cls.id))
.in(sub)
.include(attributes)

page_data.filter(filter_by_label) unless filter_by_label.nil?
page_data.order_by(order_by) unless order_by.nil?
page_data = page_data.page(page,size).all

bring_unmapped_to page_data , sub if bring_unmapped_needed

if unmapped && page_data.length > 0
LinkedData::Models::Instance.in(sub).models(page_data).include(:unmapped).all
end
reply page_data
end

Expand All @@ -24,33 +30,38 @@ class InstancesController < ApplicationController
get do
ont, sub = get_ontology_and_submission
check_last_modified_segment(LinkedData::Models::Instance, [ont.acronym])
page, size = page_params

unmapped = (includes_param && includes_param.include?(:all))
page_data = LinkedData::Models::Instance.in(sub)
.include(LinkedData::Models::Instance.attributes)
.page(page,size).all
attributes, page, size, filter_by_label, order_by, bring_unmapped_needed = settings_params


page_data = LinkedData::Models::Instance.where
.in(sub)
.include(attributes)

page_data.filter(filter_by_label) unless filter_by_label.nil?
page_data.order_by(order_by) unless order_by.nil?
page_data = page_data.page(page,size).all

bring_unmapped_to page_data , sub if bring_unmapped_needed

if unmapped && page_data.length > 0
LinkedData::Models::Instance.in(sub).models(page_data).include(:unmapped).all
end
reply page_data
end

get '/:inst' do
ont, sub = get_ontology_and_submission
check_last_modified_segment(LinkedData::Models::Instance, [ont.acronym])

unmapped = (includes_param && includes_param.include?(:all))
attributes, page, size, filter_by_label, order_by, bring_unmapped_needed = settings_params

page_data = LinkedData::Models::Instance.find(@params["inst"]).include(LinkedData::Models::Instance.attributes).in(sub).first
page_data = LinkedData::Models::Instance.find(@params["inst"]).include(attributes).in(sub).first

bring_unmapped_to [page_data] , sub if bring_unmapped_needed

if unmapped
LinkedData::Models::Instance.in(sub).models([page_data]).include(:unmapped).all
end
reply page_data
end
end


end


52 changes: 52 additions & 0 deletions helpers/instances_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
require 'sinatra/base'

module Sinatra
module Helpers
module InstancesHelper

# TODO: generalize this to all routes (maybe in application_helper)
def settings_params
page, size = page_params
attributes = get_attributes_to_include(includes_param)
order_by = get_order_by_from(@params)
bring_unmapped = bring_unmapped?(includes_param)
filter_by_label = label_regex_filter

[attributes, page, size, filter_by_label, order_by, bring_unmapped]
end

def is_set?(param)
!param.nil? && param != ""
end

def label_regex_filter
(Goo::Filter.new(:label).regex(@params["search"])) if is_set?(@params["search"])
end

def filter_classes_by(class_uri)
class_uri.nil? ? nil :{types: RDF::URI.new(class_uri.to_s)}
end

def get_order_by_from(params , default_sort = :label , default_order = :asc)
{(params["sortby"] || default_sort).to_sym => params["order"] || default_order} if is_set?(@params["sortby"])
end

def get_attributes_to_include(includes_param)
ld = LinkedData::Models::Instance.goo_attrs_to_load(includes_param)
ld.delete(:properties)
ld
end

def bring_unmapped?(includes_param)
(includes_param && includes_param.include?(:all))
end

def bring_unmapped_to(page_data, sub)
LinkedData::Models::Instance.in(sub).models(page_data).include(:unmapped).all
end

end
end
end

helpers Sinatra::Helpers::InstancesHelper
28 changes: 0 additions & 28 deletions ontologies_api.iml

This file was deleted.

0 comments on commit b953728

Please sign in to comment.