diff --git a/app/builders/institution_builder.rb b/app/builders/institution_builder.rb new file mode 100644 index 0000000000000000000000000000000000000000..294c4ffd40a86fda0803ae2b48e45f0e7e856c0c --- /dev/null +++ b/app/builders/institution_builder.rb @@ -0,0 +1,48 @@ +class InstitutionBuilder + extend RepositoriesProxy + + ## + # receive a list of ids and return a list of institutions + # + def self.build(institutions = []) + array = [] + institutions = [institutions] if institutions.class == String + institutions.each do |institution| + unless institution['@rid'].blank? + o = Rails.cache.fetch(cache_key(institution['@rid'], institution['last_modified'])) unless institution['last_modified'].blank? + + o = institution_repository.find institution['@rid'] if o.nil? + + array << o + end + end + array + end + + def self.build_from_orientdb(args = {}) + institution = nil + + unless args.nil? + # cache object when build + institution = Rails.cache.fetch(cache_key(args['@rid'], args['last_modified']), expires_in: 12.hours) do + Institution.new( + id: args['@rid'], + name: args['name'], + created_at: args['created_at'], + last_modified: args['last_modified'], + country: args['country'] || '', + city: args['city'] || '', + description: args['description'] || '', + thumbnail: args['thumbnail'] || '', + address: args['address'] || '' + ) + end + end + + institution + end + + def self.cache_key(rid, last_modified) + rid + '/' + last_modified + end +end