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 +4 -4
- data/lib/fbe/kill_if.rb +23 -0
- data/lib/fbe.rb +1 -1
- data/test/fbe/test_kill_if.rb +39 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f217bdf737550a6a1dc1ffe033e3b4a731149b48f357ed5c2ad33b9fa81b2354
|
4
|
+
data.tar.gz: 220d01ad45a7c3f553cc29e2870faa9021b7a42a550e39883632aa8beddff4cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 943429b3e27f1c5a4c37ca67b6cf8731fe87b66665d094f5237821f780db7269487ac080bf8756561fa67954ae531276dcf0bed8f3a6b6cc0e4286d58ef699a3
|
7
|
+
data.tar.gz: a5e77f3f279f55aa784e25edf1f4f4aa8701852ee15ae30fdc4cab1f02d268c6d7b3343e32c76e352e1abf77687acbaae74033d75a92b0b9b3b0feee133c96d9
|
data/lib/fbe/kill_if.rb
ADDED
@@ -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
@@ -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.
|
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
|