card-mod-virtual 0.13.1 → 0.14.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: db231fd316475b2c5e51952b5e6f037244bc79a8f528c6f9b02b8f4e21ade29b
4
- data.tar.gz: 5c5c3ddc8773e7e14989dd4d5fee1aef0b13e924ae0b5fb06df4764fd1de165f
3
+ metadata.gz: 9a59c7e89230f55bb5907d1e4ca56d9afa02e8dec1f9136596dcab631d059a41
4
+ data.tar.gz: 9e3d08065b6045ca63f67cbe4de5707f49c9a969222c623f6c71d281caff8f4e
5
5
  SHA512:
6
- metadata.gz: 279f8313e1b25f402806c7aaf19d33655668a013f4d3fc3eea9cee9548992c8deda62d1d38713c5087fd620d2397090d07dc43c890c94a4ada2ca56b758a494d
7
- data.tar.gz: 30be35cca7c0a483b39ea174bd3dc53f5cc5af16c1ec1195bc2fa04b8eb6556f326a93c7b2045bb20322ce97c61b2e2f5cb5c8e8e4cdf24c44869c25e8af33d7
6
+ metadata.gz: a0bb370753984df37ceda8e765be6f469b0883cce42518394462118ff418ea59a1635ee47a624e8ecac79623b4db672c951bb80cd830f0c2dc554819d074a458
7
+ data.tar.gz: 4c8dbe734f3cfeb86f7fd9d668d5594fbf3fc434c4fb6d7597e8137b463013d128e56cd76cdd80b5b7982698aa712ceeb6d13810f02f406291dc7a91dd576c9a
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.1
4
+ version: 0.14.0
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-08-06 00:00:00.000000000 Z
13
+ date: 2021-12-22 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.1
21
+ version: 1.104.0
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.1
28
+ version: 1.104.0
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