isomorfeus-data 2.0.22 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a61109439fc578e2cb037c578c437f63f65ff991e63207ea954913a77c0a2df8
4
- data.tar.gz: efbc79050eb128af7c698081626ef078491dd7ea54d7d0e9827b042699ab1a25
3
+ metadata.gz: 336c73e455b2044f1b96dc1a1e2e7a7b9ca0ef962f9121dcd9df9d0e1bea02bb
4
+ data.tar.gz: 36cd08025344752f7bcac649aabc6e26ecfa85dd00da2135ab4e43f10b3b47e0
5
5
  SHA512:
6
- metadata.gz: 2f06ed4873695a6bf2fa26ff86eed91f475326a36fb5a363e5347482496a97a681464f852d63acfda528f441eca5b8fa2017522bf563971a38402043197ec9cc
7
- data.tar.gz: 62897ec244e3fa1b8b480393b1dcf3bfdd06ed01ddbee8713c141164a6ce5c383590fb9c79342ac2760d28a1169abda0631566849f74f07fb13eedb04b37c221
6
+ metadata.gz: e97477903e581484d03c93712871671ed56d864f1c7db9379e758c3229913db7c8b08ed8ac33a127ecaf500590f31fbcffcab7cbce7ed97f37c8eb64bab2879b
7
+ data.tar.gz: 05c46807e85b6403e47b34359fb90cb71f0c8b0b14ddb03973891e985cc83f310544a58f78f85204e462ff41c4a1f8114e2b36e0de0631b024e0b6dcab167f79
@@ -56,7 +56,7 @@ module Isomorfeus
56
56
  valid_file_classes[raw_class_name(klass)] = true
57
57
  end
58
58
 
59
- attr_accessor :data_path
59
+ attr_accessor :storage_path
60
60
  attr_accessor :files_path
61
61
 
62
62
  attr_accessor :ferret_path
@@ -64,23 +64,23 @@ module Isomorfeus
64
64
 
65
65
  attr_accessor :hamster_path
66
66
  attr_accessor :hamster_mapsize
67
- attr_accessor :data_object_env_path
68
- attr_accessor :data_object_idx_path
67
+ attr_accessor :data_object_envs_path
68
+ attr_accessor :data_object_idxs_path
69
69
  end
70
70
  end
71
71
 
72
72
  if RUBY_ENGINE != 'opal'
73
- self.data_path = File.expand_path(File.join(Isomorfeus.root, 'data', Isomorfeus.env))
74
- self.files_path = File.expand_path(File.join(self.data_path, 'files'))
73
+ self.storage_path = File.expand_path(File.join(Isomorfeus.root, 'storage', Isomorfeus.env))
74
+ self.files_path = File.expand_path(File.join(self.storage_path, 'files'))
75
75
 
76
76
  # documents and indices
77
- self.ferret_path = File.expand_path(File.join(self.data_path, 'ferret'))
77
+ self.ferret_path = File.expand_path(File.join(self.storage_path, 'ferret'))
78
78
  self.data_documents_path = File.expand_path(File.join(self.ferret_path, 'documents'))
79
79
 
80
80
  # objects, nodes and edges
81
- self.hamster_path = File.expand_path(File.join(self.data_path, 'hamster'))
81
+ self.hamster_path = File.expand_path(File.join(self.storage_path, 'hamster'))
82
82
  self.hamster_mapsize = 4294967296
83
- self.data_object_env_path = File.expand_path(File.join(self.hamster_path, 'object_env'))
84
- self.data_object_idx_path = File.expand_path(File.join(self.hamster_path, 'object_idx'))
83
+ self.data_object_envs_path = File.expand_path(File.join(self.hamster_path, 'object_envs'))
84
+ self.data_object_idxs_path = File.expand_path(File.join(self.hamster_path, 'object_idxs'))
85
85
  end
86
86
  end
@@ -5,17 +5,17 @@ module Isomorfeus
5
5
  proc { fer_acc.close_index }
6
6
  end
7
7
 
8
- attr_reader :doc_class, :doc_class_name, :doc_class_name_u
8
+ attr_reader :doc_class, :doc_class_name
9
9
  attr_accessor :index
10
10
 
11
11
  def initialize(doc_class, &block)
12
12
  @doc_class = doc_class
13
13
  @doc_class_name = doc_class.name
14
- @doc_class_name_u = @doc_class_name.underscore
15
14
  if block_given?
16
15
  res = block.call(self)
17
16
  @index = res unless @index
18
17
  else
18
+ @index_path = File.expand_path(File.join(Isomorfeus.data_documents_path, @doc_class_name.underscore))
19
19
  open_index
20
20
  end
21
21
  ObjectSpace.define_finalizer(self, self.class.finalize(self))
@@ -23,7 +23,7 @@ module Isomorfeus
23
23
 
24
24
  def destroy_index
25
25
  close_index
26
- FileUtils.rm_rf(index_path(doc_class_name))
26
+ FileUtils.rm_rf(@index_path)
27
27
  end
28
28
 
29
29
  def close_index
@@ -66,14 +66,10 @@ module Isomorfeus
66
66
  id = top_docs.hits[0].doc if top_docs.total_hits == 1
67
67
  end
68
68
 
69
- def index_path
70
- File.expand_path(File.join(Isomorfeus.data_documents_path, @doc_class_name_u))
71
- end
72
-
73
69
  def open_index
74
70
  FileUtils.mkdir_p(Isomorfeus.data_documents_path) unless Dir.exist?(Isomorfeus.data_documents_path)
75
71
  field_infos = Isomorfeus::Ferret::Index::FieldInfos.new(store: :yes, index: :yes, term_vector: :with_positions_offsets)
76
- @index = Isomorfeus::Ferret::Index::Index.new(path: index_path, key: :key, auto_flush: true, lock_retry_time: 5, field_infos: field_infos)
72
+ @index = Isomorfeus::Ferret::Index::Index.new(path: @index_path, key: :key, auto_flush: true, lock_retry_time: 5, field_infos: field_infos)
77
73
  @index.field_infos.add_field(:key, store: :yes, index: :yes, term_vector: :no) unless @index.field_infos[:key]
78
74
  @doc_class.field_options.each do |field, options|
79
75
  @index.field_infos.add_field(field, options) unless @index.field_infos[field]
@@ -19,7 +19,7 @@ module Isomorfeus
19
19
  response_agent.request[type_class_name].each_key do |action|
20
20
  case action
21
21
  when 'load' then process_load(response_agent, type_class, type_class_name)
22
- when 'query' then process_query(response_agent, type_class, type_class_name)
22
+ when 'execute' then process_execute(response_agent, type_class, type_class_name)
23
23
  when 'create' then process_create(response_agent, type_class, type_class_name)
24
24
  when 'save' then process_save(response_agent, type_class, type_class_name)
25
25
  when 'destroy' then process_destroy(response_agent, type_class, type_class_name)
@@ -40,7 +40,7 @@ module Isomorfeus
40
40
  data = response_agent.request[type_class_name]['create']
41
41
  instance_data = data['instance']
42
42
  included_items_data = data.key?('included_items') ? data['included_items'] : nil
43
- if Isomorfeus.current_user.authorized?(type_class, :create, data)
43
+ if Isomorfeus.current_user.authorized?(type_class, :create, type_class.props_from_data(instance_data))
44
44
  instance = type_class.instance_from_transport(instance_data, included_items_data)
45
45
  created_type = instance.create
46
46
  if created_type
@@ -56,6 +56,25 @@ module Isomorfeus
56
56
  end
57
57
  end
58
58
 
59
+ def process_execute(response_agent, type_class, type_class_name)
60
+ # 'Isomorfeus::Data::Handler::Generic', self.name, :execute, props_json
61
+ props = response_agent.request[type_class_name]['execute']
62
+ props.transform_keys!(&:to_sym)
63
+ if Isomorfeus.current_user.authorized?(type_class, :execute, props)
64
+ queried_type = type_class.execute(**props)
65
+ if queried_type
66
+ response_agent.outer_result = {} unless response_agent.outer_result
67
+ response_agent.outer_result.deep_merge!(data: queried_type.to_transport)
68
+ if queried_type.respond_to?(:included_items_to_transport)
69
+ response_agent.outer_result.deep_merge!(data: queried_type.included_items_to_transport)
70
+ end
71
+ response_agent.agent_result = { success: 'ok' }
72
+ else response_agent.error = { error: { type_class_name => 'Query returned nothing!' }}
73
+ end
74
+ else response_agent.error = { error: 'Access denied!' }
75
+ end
76
+ end
77
+
59
78
  def process_load(response_agent, type_class, type_class_name)
60
79
  # 'Isomorfeus::Data::Handler::Generic', self.name, :load, key: key
61
80
  props = response_agent.request[type_class_name]['load']
@@ -75,31 +94,12 @@ module Isomorfeus
75
94
  end
76
95
  end
77
96
 
78
- def process_query(response_agent, type_class, type_class_name)
79
- # 'Isomorfeus::Data::Handler::Generic', self.name, :query, props_json
80
- props = response_agent.request[type_class_name]['query']
81
- props.transform_keys!(&:to_sym)
82
- if Isomorfeus.current_user.authorized?(type_class, :query, props)
83
- queried_type = type_class.execute(**props)
84
- if queried_type
85
- response_agent.outer_result = {} unless response_agent.outer_result
86
- response_agent.outer_result.deep_merge!(data: queried_type.to_transport)
87
- if queried_type.respond_to?(:included_items_to_transport)
88
- response_agent.outer_result.deep_merge!(data: queried_type.included_items_to_transport)
89
- end
90
- response_agent.agent_result = { success: 'ok' }
91
- else response_agent.error = { error: { type_class_name => 'Query returned nothing!' }}
92
- end
93
- else response_agent.error = { error: 'Access denied!' }
94
- end
95
- end
96
-
97
97
  def process_save(response_agent, type_class, type_class_name)
98
98
  # 'Isomorfeus::Data::Handler::Generic', self.name, :save, data_hash
99
99
  data = response_agent.request[type_class_name]['save']
100
100
  instance_data = data['instance']
101
101
  included_items_data = data.key?('included_items') ? data['included_items'] : nil
102
- if Isomorfeus.current_user.authorized?(type_class, :save, data)
102
+ if Isomorfeus.current_user.authorized?(type_class, :save, type_class.props_from_data(instance_data))
103
103
  instance = type_class.instance_from_transport(instance_data, included_items_data)
104
104
  saved_type = instance.save
105
105
  if saved_type
@@ -7,11 +7,12 @@ module Isomorfeus
7
7
 
8
8
  attr_accessor :index
9
9
 
10
- def initialize(&block)
10
+ def initialize(object_class_name, &block)
11
11
  if block_given?
12
12
  res = block.call(self)
13
13
  @index = res unless @index
14
14
  else
15
+ @index_path = File.expand_path(File.join(Isomorfeus.data_object_idxs_path, object_class_name.underscore))
15
16
  open_index
16
17
  end
17
18
  ObjectSpace.define_finalizer(self, self.class.finalize(self))
@@ -19,7 +20,7 @@ module Isomorfeus
19
20
 
20
21
  def destroy_index
21
22
  close_index
22
- FileUtils.rm_rf(Isomorfeus.data_object_idx_path)
23
+ FileUtils.rm_rf(@index_path)
23
24
  end
24
25
 
25
26
  def close_index
@@ -63,12 +64,12 @@ module Isomorfeus
63
64
  end
64
65
 
65
66
  def open_index
66
- FileUtils.mkdir_p(Isomorfeus.data_object_idx_path) unless Dir.exist?(Isomorfeus.data_object_idx_path)
67
- @index = Isomorfeus::Ferret::Index::Index.new(path: Isomorfeus.data_object_idx_path, key: :sid_s_attr, auto_flush: true, lock_retry_time: 5)
68
- @index.field_infos.add_field(:attribute, store: :no, term_vector: :no) unless index.field_infos[:attribute]
69
- @index.field_infos.add_field(:class_name, store: :no, term_vector: :no) unless index.field_infos[:class_name]
70
- @index.field_infos.add_field(:value, store: :no) unless index.field_infos[:value]
71
- @index.field_infos.add_field(:sid_s_attr, store: :yes, term_vector: :no) unless index.field_infos[:sid_s_attr]
67
+ FileUtils.mkdir_p(@index_path) unless Dir.exist?(@index_path)
68
+ @index = Isomorfeus::Ferret::Index::Index.new(path: @index_path, key: :sid_s_attr, auto_flush: true, lock_retry_time: 5)
69
+ @index.field_infos.add_field(:attribute, store: :no, term_vector: :no) unless @index.field_infos[:attribute]
70
+ @index.field_infos.add_field(:class_name, store: :no, term_vector: :no) unless @index.field_infos[:class_name]
71
+ @index.field_infos.add_field(:value, store: :no) unless @index.field_infos[:value]
72
+ @index.field_infos.add_field(:sid_s_attr, store: :yes, term_vector: :no) unless @index.field_infos[:sid_s_attr]
72
73
  end
73
74
  end
74
75
  end
@@ -2,51 +2,25 @@ module Isomorfeus
2
2
  module Data
3
3
  class ObjectExpander
4
4
  class << self
5
- def environment
6
- @environment
7
- end
8
-
9
- def environment=(env)
10
- @environment = env
11
- end
12
-
13
- def ref
14
- @ref ||= 0
15
- end
16
-
17
- def ref=(val)
18
- @ref = val
19
- end
20
-
21
- def refa
22
- self.ref += 1
23
- end
24
-
25
- def refs
26
- self.ref -= 1 if self.ref > 0
27
- end
28
-
29
- def finalize(cls)
30
- proc do
31
- cls.refs
32
- if cls.ref == 0
33
- cls.environment.close rescue nil
34
- end
35
- end
5
+ def finalize(ins)
6
+ proc { ins.environment.close rescue nil }
36
7
  end
37
8
  end
38
9
 
39
- def initialize(&block)
10
+ attr_accessor :environment
11
+
12
+ def initialize(object_class_name, &block)
40
13
  if block_given?
41
14
  res = block.call(self)
42
- self.class.environment = res unless self.class.environment
15
+ self.environment = res unless self.environment
43
16
  else
17
+ @env_path = File.expand_path(File.join(Isomorfeus.data_object_envs_path, object_class_name.underscore))
44
18
  open_environment
45
19
  end
46
- @db = self.class.environment.database('objects', create: true)
47
- @index_db = self.class.environment.database('index', create: true, dupsort: true)
20
+ @db = self.environment.database('objects', create: true)
21
+ @index_db = self.environment.database('index', create: true, dupsort: true)
48
22
  @use_class_cache = !Isomorfeus.development?
49
- ObjectSpace.define_finalizer(self, self.class.finalize(self.class))
23
+ ObjectSpace.define_finalizer(self, self.class.finalize(self))
50
24
  end
51
25
 
52
26
  def create_object(sid_s, obj)
@@ -91,10 +65,8 @@ module Isomorfeus
91
65
  private
92
66
 
93
67
  def open_environment
94
- return self.class.refa if self.class.environment
95
- FileUtils.mkdir_p(Isomorfeus.data_object_env_path) unless Dir.exist?(Isomorfeus.data_object_env_path)
96
- self.class.environment = Isomorfeus::Hamster.new(Isomorfeus.data_object_env_path, mapsize: Isomorfeus.hamster_mapsize)
97
- self.class.refa
68
+ FileUtils.mkdir_p(@env_path) unless Dir.exist?(@env_path)
69
+ self.environment = Isomorfeus::Hamster.new(@env_path, mapsize: Isomorfeus.hamster_mapsize)
98
70
  end
99
71
  end
100
72
  end
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Data
3
- VERSION = '2.0.22'
3
+ VERSION = '2.1.0'
4
4
  end
5
5
  end
@@ -2,7 +2,9 @@ require 'base64'
2
2
  require 'stringio'
3
3
  require 'data_uri'
4
4
  require 'securerandom'
5
+ require 'isomorfeus-policy'
5
6
  require 'isomorfeus-transport'
7
+ require 'isomorfeus-i18n'
6
8
  require 'isomorfeus/data/config'
7
9
  require 'isomorfeus/data/attribute_support'
8
10
  require 'isomorfeus/data/field_support'
@@ -4,6 +4,7 @@ module LucidDocument
4
4
  base.include(Isomorfeus::Data::FieldSupport)
5
5
  base.extend(Isomorfeus::Data::GenericClassApi)
6
6
  base.include(Isomorfeus::Data::GenericInstanceApi)
7
+ base.include(LucidI18n::Mixin)
7
8
 
8
9
  base.instance_exec do
9
10
  def escape_string(s)
@@ -85,6 +86,13 @@ module LucidDocument
85
86
  new(key: key, revision: revision, fields: fields)
86
87
  end
87
88
 
89
+ def props_from_data(instance_data)
90
+ key = instance_data[self.name].keys.first
91
+ revision = instance_data[self.name][key].key?('revision') ? instance_data[self.name][key]['revision'] : nil
92
+ fields = instance_data[self.name][key].key?('fields') ? instance_data[self.name][key]['fields'].transform_keys!(&:to_sym) : nil
93
+ LucidProps.new({ key: key, revision: revision }.merge!(fields))
94
+ end
95
+
88
96
  def setup_index(&block)
89
97
  @_setup_index_block = block
90
98
  end
@@ -3,6 +3,7 @@ module LucidFile
3
3
  def self.included(base)
4
4
  base.extend(Isomorfeus::Data::GenericClassApi)
5
5
  base.include(Isomorfeus::Data::GenericInstanceApi)
6
+ base.include(LucidI18n::Mixin)
6
7
 
7
8
  def changed!
8
9
  @_changed = true
@@ -140,6 +141,13 @@ module LucidFile
140
141
  new(key: key, revision: revision, data_uri: data_uri)
141
142
  end
142
143
 
144
+ def props_from_data(instance_data)
145
+ key = instance_data[self.name].keys.first
146
+ revision = instance_data[self.name][key].key?('revision') ? instance_data[self.name][key]['revision'] : nil
147
+ data_uri = instance_data[self.name][key].key?('data_uri') ? instance_data[self.name][key]['data_uri'] : nil
148
+ LucidProps.new({ key: key, revision: revision, data_uri: data_uri })
149
+ end
150
+
143
151
  def files_path
144
152
  @files_path ||= Isomorfeus.files_path
145
153
  end
@@ -4,6 +4,7 @@ module LucidObject
4
4
  base.include(Isomorfeus::Data::AttributeSupport)
5
5
  base.extend(Isomorfeus::Data::GenericClassApi)
6
6
  base.include(Isomorfeus::Data::GenericInstanceApi)
7
+ base.include(LucidI18n::Mixin)
7
8
 
8
9
  def [](name)
9
10
  send(name)
@@ -79,6 +80,13 @@ module LucidObject
79
80
  new(key: key, revision: revision, attributes: attributes)
80
81
  end
81
82
 
83
+ def props_from_data(instance_data)
84
+ key = instance_data[self.name].keys.first
85
+ revision = instance_data[self.name][key].key?('revision') ? instance_data[self.name][key]['revision'] : nil
86
+ attributes = instance_data[self.name][key].key?('attributes') ? instance_data[self.name][key]['attributes'].transform_keys!(&:to_sym) : nil
87
+ LucidProps.new({ key: key, revision: revision }.merge!(attributes))
88
+ end
89
+
82
90
  def setup_environment(&block)
83
91
  @_setup_environment_block = block
84
92
  end
@@ -87,21 +95,21 @@ module LucidObject
87
95
  @_setup_index_block = block
88
96
  end
89
97
 
90
- def hamster_storage_expander
91
- return @hamster_storage_expander if @hamster_storage_expander
92
- @hamster_storage_expander = if @_setup_environment_block
93
- Isomorfeus::Data::ObjectExpander.new(&@_setup_index_block)
98
+ def object_expander
99
+ return @object_expander if @object_expander
100
+ @object_expander = if @_setup_environment_block
101
+ Isomorfeus::Data::ObjectExpander.new(self.to_s, &@_setup_index_block)
94
102
  else
95
- Isomorfeus::Data::ObjectExpander.new
103
+ Isomorfeus::Data::ObjectExpander.new(self.to_s)
96
104
  end
97
105
  end
98
106
 
99
- def hamster_accelerator
100
- return @hamster_accelerator if @hamster_accelerator
101
- @hamster_accelerator = if @_setup_index_block
102
- Isomorfeus::Data::ObjectAccelerator.new(&@_setup_index_block)
107
+ def object_accelerator
108
+ return @object_accelerator if @object_accelerator
109
+ @object_accelerator = if @_setup_index_block
110
+ Isomorfeus::Data::ObjectAccelerator.new(self.to_s, &@_setup_index_block)
103
111
  else
104
- Isomorfeus::Data::ObjectAccelerator.new
112
+ Isomorfeus::Data::ObjectAccelerator.new(self.to_s)
105
113
  end
106
114
  end
107
115
 
@@ -112,8 +120,8 @@ module LucidObject
112
120
  if idx_type == :text
113
121
  query = "+value:#{val} +class_name:#{self.name}"
114
122
  query << " +attribute:#{attr}" if attr != '*'
115
- self.hamster_accelerator.search_each(query, options) do |id|
116
- doc = self.hamster_accelerator.index.doc(id)&.load
123
+ self.object_accelerator.search_each(query, options) do |id|
124
+ doc = self.object_accelerator.index.doc(id)&.load
117
125
  if doc
118
126
  sid_s = doc[:sid_s_attr].split(':|:')[0]
119
127
  obj = self.load(key: sid_s)
@@ -122,13 +130,13 @@ module LucidObject
122
130
  end
123
131
  else
124
132
  if val == '*'
125
- self.hamster_storage_expander.each do |obj|
133
+ self.object_expander.each do |obj|
126
134
  objs << obj if obj.class == self
127
135
  end
128
136
  else
129
137
  attr_s = ":[#{attr}]"
130
138
  accept_all_attr = attr_s == ":[*]" ? true : false
131
- self.hamster_storage_expander.search(":[#{self.name}]:|:[:#{val}:]:") do |sid_s_attr|
139
+ self.object_expander.search(":[#{self.name}]:|:[:#{val}:]:") do |sid_s_attr|
132
140
  if accept_all_attr || sid_s_attr.end_with?(attr_s)
133
141
  sid_s = sid_s_attr.split(':|:[')[0]
134
142
  obj = self.load(key: sid_s)
@@ -142,7 +150,7 @@ module LucidObject
142
150
 
143
151
  execute_create do
144
152
  self.key = SecureRandom.uuid unless self.key
145
- self.class.hamster_storage_expander.create_object(self.sid_s, self)
153
+ self.class.object_expander.create_object(self.sid_s, self)
146
154
  self.class.indexed_attributes.each do |attr, idx_type|
147
155
  if idx_type == :text
148
156
  self._create_text_indexed_attribute(attr)
@@ -156,14 +164,14 @@ module LucidObject
156
164
  execute_destroy do |key:|
157
165
  key = key.to_s
158
166
  sid_s = key.start_with?('[') ? key : gen_sid_s(key)
159
- self.hamster_storage_expander.destroy_object(sid_s)
167
+ self.object_expander.destroy_object(sid_s)
160
168
  self.indexed_attributes.each do |attr, idx_type|
161
169
  if idx_type == :text
162
- self.hamster_accelerator.destroy_doc("#{sid_s}:|:[#{attr}]")
170
+ self.object_accelerator.destroy_doc("#{sid_s}:|:[#{attr}]")
163
171
  else
164
- old_val = self.hamster_storage_expander.index_get("#{sid_s}:|:[#{attr}]")
165
- self.hamster_storage_expander.index_delete("#{sid_s}:|:[#{attr}]", old_val)
166
- self.hamster_storage_expander.index_delete(":[#{self.name}]:|:[:#{old_val}:]:", "#{sid_s}:|:[#{attr}]")
172
+ old_val = self.object_expander.index_get("#{sid_s}:|:[#{attr}]")
173
+ self.object_expander.index_delete("#{sid_s}:|:[#{attr}]", old_val)
174
+ self.object_expander.index_delete(":[#{self.name}]:|:[:#{old_val}:]:", "#{sid_s}:|:[#{attr}]")
167
175
  end
168
176
  end
169
177
  true
@@ -172,12 +180,12 @@ module LucidObject
172
180
  execute_load do |key:|
173
181
  key = key.to_s
174
182
  sid_s = key.start_with?('[') ? key : gen_sid_s(key)
175
- self.hamster_storage_expander.load_object(sid_s)
183
+ self.object_expander.load_object(sid_s)
176
184
  end
177
185
 
178
186
  execute_save do
179
187
  self.key = SecureRandom.uuid unless self.key
180
- self.class.hamster_storage_expander.save_object(self.sid_s, self)
188
+ self.class.object_expander.save_object(self.sid_s, self)
181
189
  self.class.indexed_attributes.each do |attr, val|
182
190
  if val == :text
183
191
  self._store_text_indexed_attribute(attr)
@@ -202,21 +210,21 @@ module LucidObject
202
210
 
203
211
  def _create_text_indexed_attribute(attr)
204
212
  doc = { sid_s_attr: "#{self.sid_s}:|:[#{attr}]", value: self.send(attr).to_s, attribute: attr.to_s, class_name: @class_name }
205
- self.class.hamster_accelerator.create_doc(doc)
213
+ self.class.object_accelerator.create_doc(doc)
206
214
  end
207
215
 
208
216
  def _store_text_indexed_attribute(attr)
209
217
  doc = { sid_s_attr: "#{self.sid_s}:|:[#{attr}]", value: self.send(attr).to_s, attribute: attr.to_s, class_name: @class_name }
210
- self.class.hamster_accelerator.save_doc("#{self.sid_s}:|:[#{attr}]", doc)
218
+ self.class.object_accelerator.save_doc("#{self.sid_s}:|:[#{attr}]", doc)
211
219
  end
212
220
 
213
221
  def _store_value_indexed_attribute(attr)
214
- old_val = self.class.hamster_storage_expander.index_get("#{self.sid_s}:|:[#{attr}]")
215
- self.class.hamster_storage_expander.index_delete("#{self.sid_s}:|:[#{attr}]", old_val)
216
- self.class.hamster_storage_expander.index_delete(":[#{self.class.name}]:|:[:#{old_val}:]:", "#{self.sid_s}:|:[#{attr}]")
222
+ old_val = self.class.object_expander.index_get("#{self.sid_s}:|:[#{attr}]")
223
+ self.class.object_expander.index_delete("#{self.sid_s}:|:[#{attr}]", old_val)
224
+ self.class.object_expander.index_delete(":[#{self.class.name}]:|:[:#{old_val}:]:", "#{self.sid_s}:|:[#{attr}]")
217
225
  val = "#{self.send(attr)}"[0..300]
218
- self.class.hamster_storage_expander.index_put("#{self.sid_s}:|:[#{attr}]", val)
219
- self.class.hamster_storage_expander.index_put(":[#{self.class.name}]:|:[:#{val}:]:", "#{self.sid_s}:|:[#{attr}]")
226
+ self.class.object_expander.index_put("#{self.sid_s}:|:[#{attr}]", val)
227
+ self.class.object_expander.index_put(":[#{self.class.name}]:|:[:#{val}:]:", "#{self.sid_s}:|:[#{attr}]")
220
228
  end
221
229
 
222
230
  def _unchange!
@@ -2,6 +2,7 @@ module LucidQuery
2
2
  module Mixin
3
3
  def self.included(base)
4
4
  base.extend(LucidPropDeclaration::Mixin)
5
+ base.include(LucidI18n::Mixin)
5
6
 
6
7
  if RUBY_ENGINE == 'opal'
7
8
  base.instance_exec do
@@ -22,7 +23,7 @@ module LucidQuery
22
23
  end
23
24
  props = validated_props(props)
24
25
  props[:key] = query_result_instance.key
25
- Isomorfeus::Transport.promise_send_path( 'Isomorfeus::Data::Handler::Generic', self.name, :query, props).then do |agent|
26
+ Isomorfeus::Transport.promise_send_path( 'Isomorfeus::Data::Handler::Generic', self.name, :execute, props).then do |agent|
26
27
  agent.process do
27
28
  query_result_instance._load_from_store!
28
29
  Isomorfeus.store.dispatch(type: 'DATA_LOAD', data: agent.full_response[:data])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-data
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.22
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-12 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.14.9
75
+ version: 0.14.10
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.14.9
82
+ version: 0.14.10
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: isomorfeus-ferret
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +108,48 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.6.4
111
+ - !ruby/object:Gem::Dependency
112
+ name: isomorfeus-i18n
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 2.1.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.1.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: isomorfeus-policy
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 2.1.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 2.1.0
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: isomorfeus-preact
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
143
  - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: 10.6.31
145
+ version: 10.6.34
118
146
  type: :runtime
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: 10.6.31
152
+ version: 10.6.34
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: isomorfeus-redux
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -142,28 +170,28 @@ dependencies:
142
170
  requirements:
143
171
  - - '='
144
172
  - !ruby/object:Gem::Version
145
- version: 2.0.22
173
+ version: 2.1.0
146
174
  type: :runtime
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
178
  - - '='
151
179
  - !ruby/object:Gem::Version
152
- version: 2.0.22
180
+ version: 2.1.0
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: isomorfeus
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
185
  - - '='
158
186
  - !ruby/object:Gem::Version
159
- version: 2.0.22
187
+ version: 2.1.0
160
188
  type: :development
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
192
  - - '='
165
193
  - !ruby/object:Gem::Version
166
- version: 2.0.22
194
+ version: 2.1.0
167
195
  - !ruby/object:Gem::Dependency
168
196
  name: rake
169
197
  requirement: !ruby/object:Gem::Requirement