fbe 0.28.2 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61a57de71b1c292ec12e6f990c09be1b71b271ca5b91df227042f853b96772f8
4
- data.tar.gz: 55f9f3384299ef325505c2ac1721fdaa166fd346ad0d9b2759d88df1dfeeedba
3
+ metadata.gz: f217bdf737550a6a1dc1ffe033e3b4a731149b48f357ed5c2ad33b9fa81b2354
4
+ data.tar.gz: 220d01ad45a7c3f553cc29e2870faa9021b7a42a550e39883632aa8beddff4cb
5
5
  SHA512:
6
- metadata.gz: bc243fbc22b222834b791ffa62ba115fac2c938fad223d8c3ae4a06a42a1233d02d1953a8537451fa0c6e1dd9b2f33bfae49d37baf36c469718c9734a94510ff
7
- data.tar.gz: 981cfa09101bb45b7951bd11b8c95757fde0b95361995cace2c60a59e48bd69adc2b3aa2d679df25c78dd54cb16c0ae4d11fc89aae5a44399ea3b06a9db5d9d1
6
+ metadata.gz: 943429b3e27f1c5a4c37ca67b6cf8731fe87b66665d094f5237821f780db7269487ac080bf8756561fa67954ae531276dcf0bed8f3a6b6cc0e4286d58ef699a3
7
+ data.tar.gz: a5e77f3f279f55aa784e25edf1f4f4aa8701852ee15ae30fdc4cab1f02d268c6d7b3343e32c76e352e1abf77687acbaae74033d75a92b0b9b3b0feee133c96d9
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
+ # SPDX-License-Identifier: MIT
5
+
6
+ require_relative '../fbe'
7
+ require_relative 'fb'
8
+
9
+ # Delete a few facts, knowing their IDs.
10
+ #
11
+ # @param [Array] facts List of facts to kill
12
+ # @param [Factbase] fb The factbase to use (defaults to Fbe.fb)
13
+ def Fbe.kill_if(facts, fb: Fbe.fb, fid: '_id')
14
+ ids = []
15
+ facts.each do |f|
16
+ if block_given?
17
+ t = yield f
18
+ next unless t
19
+ end
20
+ ids << f[fid].first
21
+ end
22
+ fb.query("(or #{ids.map { |id| "(eq #{fid} #{id})" }.join})").delete!
23
+ end
data/lib/fbe.rb CHANGED
@@ -10,5 +10,5 @@
10
10
  # License:: MIT
11
11
  module Fbe
12
12
  # Current version of the gem (changed by +.rultor.yml+ on every release)
13
- VERSION = '0.28.2' unless const_defined?(:VERSION)
13
+ VERSION = '0.29.0' unless const_defined?(:VERSION)
14
14
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2025 Zerocracy
4
+ # SPDX-License-Identifier: MIT
5
+
6
+ require 'factbase'
7
+ require_relative '../../lib/fbe/fb'
8
+ require_relative '../../lib/fbe/kill_if'
9
+ require_relative '../test__helper'
10
+
11
+ # Test.
12
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
13
+ # Copyright:: Copyright (c) 2024-2025 Zerocracy
14
+ # License:: MIT
15
+ class TestKillIf < Fbe::Test
16
+ def test_deletes_a_few
17
+ fb = Factbase.new
18
+ f = fb.insert
19
+ f.foo = 42
20
+ f.hey = 4
21
+ f.id = 555
22
+ Fbe.kill_if([f], fb:, fid: 'id')
23
+ assert_equal(0, fb.size)
24
+ end
25
+
26
+ def test_deletes_with_a_block
27
+ fb = Factbase.new
28
+ fb.insert.then do |f|
29
+ f.foo = 0
30
+ f._id = 777
31
+ end
32
+ fb.insert.then do |f|
33
+ f.foo = 1
34
+ f._id = 778
35
+ end
36
+ assert_equal(1, Fbe.kill_if(fb.query('(always)').each.to_a, fb:) { |f| f.foo.zero? })
37
+ assert_equal(1, fb.size)
38
+ end
39
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.2
4
+ version: 0.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -376,6 +376,7 @@ files:
376
376
  - lib/fbe/issue.rb
377
377
  - lib/fbe/iterate.rb
378
378
  - lib/fbe/just_one.rb
379
+ - lib/fbe/kill_if.rb
379
380
  - lib/fbe/middleware.rb
380
381
  - lib/fbe/middleware/formatter.rb
381
382
  - lib/fbe/middleware/rate_limit.rb
@@ -409,6 +410,7 @@ files:
409
410
  - test/fbe/test_issue.rb
410
411
  - test/fbe/test_iterate.rb
411
412
  - test/fbe/test_just_one.rb
413
+ - test/fbe/test_kill_if.rb
412
414
  - test/fbe/test_octo.rb
413
415
  - test/fbe/test_overwrite.rb
414
416
  - test/fbe/test_pmp.rb