card-mod-virtual 0.13.3 → 0.14.2

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: 20b4981f1220d1c66018f15039b80cba4a7ded9450d0abd51449ae34d1cd281e
4
- data.tar.gz: 56561c3257377fd9c5742c43d692cf54233f48ab5f820f5bcf84b09f43acb42b
3
+ metadata.gz: 0f51deecf4c604d9f01f6005177e6e8e40e03e4e06fb65ffea94c7b7ed330fc8
4
+ data.tar.gz: 7ffa17c1ca88784ec32cdeedb2d76422152c89f12c440b69637297a0606792c5
5
5
  SHA512:
6
- metadata.gz: 523dc884654d0b66764ce33a932854b9eb8d3a9a7184a542621096b7cd55103ccec0177f20e0d4e8cf6992604409791927919e5e7397066dd5f6888261e08ace
7
- data.tar.gz: 884081f26d98e9d0cb66935dd88628714e007c00f519ee279af20b68ec2e0960ffde8d7c538b756484a24e1f48ddddd79121aa9343b698d7feb13838a4e13af8
6
+ metadata.gz: 81a38c4264f6b5bc9466f37fa59738f5bf063759ae51af9102662a445d229dab457b45ea505f7abda8911e0edba86d72f2b97ad75e4ea4ea3a05484a2f55239e
7
+ data.tar.gz: d6f70615d3288ca37d7137fe0563a0c05d2057e127d28aff528c0732e8f7af1993949999977c4c28f7b9d547fb4e9b64f92efea07bcb35113435c4da555fa195
data/lib/card/virtual.rb CHANGED
@@ -6,53 +6,44 @@ class Card
6
6
  # the card_virtuals table.
7
7
  class Virtual < Cardio::Record
8
8
  def update new_content
9
- update! content: new_content
9
+ content == new_content ? touch : update!(content: new_content)
10
10
  new_content
11
11
  end
12
12
 
13
13
  class << self
14
- def create card, virtual_content=nil
15
- validate_card card
16
- virtual_content ||= block_given? ? yield : card.generate_virtual_content
17
- create! left_id: left_id(card),
18
- right_id: right_id(card),
19
- left_key: card.name.left_key,
20
- content: virtual_content
21
- end
22
-
23
- def create_or_update card, virtual_content
24
- if (virtual_card = find_by_card(card))
25
- virtual_card.update virtual_content
26
- else
27
- create card, virtual_content
14
+ def fetch card
15
+ cache.fetch card.key do
16
+ find_by_card(card) || create(card)
28
17
  end
29
18
  end
30
19
 
31
- def fetch_content card, &block
32
- find_content_by_card(card) || create(card, &block).content
20
+ def save card
21
+ virt = find_by_card card
22
+ virt ? virt.update(card.virtual_content) : create(card)
33
23
  end
34
24
 
35
- def fetch card, &block
36
- find_by_card(card) || create(card, &block)
25
+ def delete card
26
+ find_by_card(card)&.delete
37
27
  end
38
28
 
39
- def refresh card
40
- virtual = find_by_card(card)
41
- return create(card) unless virtual
29
+ private
42
30
 
43
- virtual.update card.generate_virtual_content
31
+ def cache
32
+ Card::Cache[Virtual]
44
33
  end
45
34
 
46
- def find_content_by_card card
47
- where_card(card)&.pluck(:content)&.first
35
+ def create card
36
+ validate_card card
37
+ create! left_id: left_id(card),
38
+ right_id: right_id(card),
39
+ left_key: card.name.left_key,
40
+ content: card.virtual_content
48
41
  end
49
42
 
50
43
  def find_by_card card
51
44
  where_card(card).take
52
45
  end
53
46
 
54
- private
55
-
56
47
  def where_card card
57
48
  query = { right_id: right_id(card) }
58
49
  if (lid = left_id(card))
@@ -4,32 +4,40 @@ def virtual?
4
4
  new?
5
5
  end
6
6
 
7
- def history?
8
- false
9
- end
10
-
11
- def followable?
12
- false
7
+ # the content to be cached
8
+ # (can be overridden)
9
+ def virtual_content
10
+ attributes["db_content"]
13
11
  end
14
12
 
15
13
  def db_content
16
- Card::Virtual.fetch_content(self)
14
+ Virtual.fetch(self)&.content
17
15
  end
18
16
 
19
- # called to refresh the virtual content
20
- # the default way is to use the card's template content
21
- def generate_virtual_content
22
- template&.db_content
17
+ def updated_at
18
+ Virtual.fetch(self)&.updated_at
23
19
  end
24
20
 
25
- event :save_virtual_content, :prepare_to_store, on: :save, changed: :content do
26
- Card::Virtual.create_or_update(self, attributes["db_content"])
21
+ event :save_virtual_content, :prepare_to_store, on: :save do
22
+ Virtual.save self
27
23
  abort :success
28
24
  end
29
25
 
30
26
  event :delete_virtual_content, :prepare_to_store, on: :delete do
31
- Card::Virtual.find_by_card(self)&.delete
32
- abort :success
27
+ Virtual.delete self
28
+ abort :success unless real?
29
+ end
30
+
31
+ # TODO: confirm that the following are needed (and if so, explain why)
32
+ # in theory, if we always abort, we'll never trigger history/follow events,
33
+ # and we'll never have a card to delete, no?
34
+
35
+ def history?
36
+ false
37
+ end
38
+
39
+ def followable?
40
+ false
33
41
  end
34
42
 
35
43
  def delete
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-virtual
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.3
4
+ version: 0.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-09-24 00:00:00.000000000 Z
13
+ date: 2022-01-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.103.3
21
+ version: 1.104.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.103.3
28
+ version: 1.104.2
29
29
  description: ''
30
30
  email:
31
31
  - info@decko.org
@@ -60,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  requirements: []
63
- rubygems_version: 3.1.6
63
+ rubygems_version: 3.2.15
64
64
  signing_key:
65
65
  specification_version: 4
66
66
  summary: virtual