fbe 0.26.8 → 0.26.9

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: 36ae40a1692925d678dccf3d5b8bea68d3e0f76a2cad24881f90b1f218e38953
4
- data.tar.gz: bd6cc01636b0d3c38dd58ce01c4d4374d8c5cd063c7baf922191b7adf5122e47
3
+ metadata.gz: 8b08046f15653d392c8a4441ea55cffb0d36838b192bf0a8147bf4237e157e15
4
+ data.tar.gz: d70f364d33b36740908a990a9339e366720d688ab86c637f6559af3ee5589454
5
5
  SHA512:
6
- metadata.gz: dc5ef70d2a65352f333719e3fd1f7264b954113dfd76dec1b45dd3040a83245256e199a23afb10fed14b04df5cd79cf06f76a1de7ee5252d2bc104ddcdb14a0d
7
- data.tar.gz: 9c27036695bb70afd47fb5b8910e8660fcd2c03dad7e8ecd029178c5c5f8632b347d4cdbfd083f35466d2f9b5c0a5aea7c9887be98f3020bf55e941956c9ab54
6
+ metadata.gz: 41ecad63a09077b376321f026f46b84e963baf211b7b0fc896f64e635c23f15a0fc939e63621f1654fb89ec37c58df203b45fa8030a4148b6e8a59af8d8958f4
7
+ data.tar.gz: 2212f426f77a2ddcd52a35f17dcc01bd38cba9fb78b73e7cafd0e20ffc69d53da282e67d1c5223d0797d21d31319373249377d1761a4b9c98c9604606ce15f63
@@ -16,6 +16,6 @@ jobs:
16
16
  runs-on: ubuntu-24.04
17
17
  steps:
18
18
  - uses: actions/checkout@v4
19
- - uses: crate-ci/typos@v1.35.2
19
+ - uses: crate-ci/typos@v1.35.3
20
20
  with:
21
21
  config: .github/.typos.toml
data/lib/fbe/delete.rb CHANGED
@@ -16,7 +16,7 @@ require_relative 'fb'
16
16
  # @param [Array<String>] props List of property names to delete
17
17
  # @param [Factbase] fb The factbase to use (defaults to Fbe.fb)
18
18
  # @param [String] id The property name used as unique identifier (defaults to '_id')
19
- # @return [Factbase::Fact] New fact without the deleted properties
19
+ # @return [nil] Nothing
20
20
  # @raise [RuntimeError] If fact is nil, has no ID, or ID property doesn't exist
21
21
  # @example Delete multiple properties from a fact
22
22
  # fact = fb.query('(eq type "user")').first
@@ -36,12 +36,11 @@ def Fbe.delete(fact, *props, fb: Fbe.fb, id: '_id')
36
36
  end
37
37
  before.delete(id)
38
38
  fb.query("(eq #{id} #{i})").delete!
39
- c = nil
40
39
  fb.txn do |fbt|
41
40
  c = fbt.insert
42
41
  before.each do |k, v|
43
42
  c.send(:"#{k}=", v) if c[k].nil?
44
43
  end
45
44
  end
46
- c
45
+ nil
47
46
  end
data/lib/fbe/overwrite.rb CHANGED
@@ -19,7 +19,7 @@ require_relative 'fb'
19
19
  # @param [String] property The name of the property to set
20
20
  # @param [Any] value The value to set (can be any type)
21
21
  # @param [Factbase] fb The factbase to use (defaults to Fbe.fb)
22
- # @return [Factbase::Fact] Returns new fact if recreated, or original if unchanged
22
+ # @return [nil] Nothing
23
23
  # @raise [RuntimeError] If fact is nil, has no _id, or property is not a String
24
24
  # @note This operation preserves all other properties during recreation
25
25
  # @note If property already has the same single value, no changes are made
@@ -39,13 +39,15 @@ def Fbe.overwrite(fact, property, value, fb: Fbe.fb)
39
39
  id = fact['_id']&.first
40
40
  raise 'There is no _id in the fact, cannot use Fbe.overwrite' if id.nil?
41
41
  raise "No facts by _id = #{id}" if fb.query("(eq _id #{id})").delete!.zero?
42
- n = fb.insert
43
- before[property.to_s] = [value]
44
- before.each do |k, vv|
45
- next unless n[k].nil?
46
- vv.each do |v|
47
- n.send(:"#{k}=", v)
42
+ fb.txn do |fbt|
43
+ n = fbt.insert
44
+ before[property.to_s] = [value]
45
+ before.each do |k, vv|
46
+ next unless n[k].nil?
47
+ vv.each do |v|
48
+ n.send(:"#{k}=", v)
49
+ end
48
50
  end
49
51
  end
50
- n
52
+ nil
51
53
  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.26.8' unless const_defined?(:VERSION)
13
+ VERSION = '0.26.9' unless const_defined?(:VERSION)
14
14
  end
@@ -4,6 +4,8 @@
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  require 'factbase'
7
+ require 'judges/options'
8
+ require 'loog'
7
9
  require_relative '../../lib/fbe/overwrite'
8
10
  require_relative '../test__helper'
9
11
 
@@ -39,15 +41,6 @@ class TestOverwrite < Fbe::Test
39
41
  assert_equal(['bye'], f2['foo'])
40
42
  end
41
43
 
42
- def test_overwrite_twice
43
- fb = Factbase.new
44
- f = fb.insert
45
- f._id = 1
46
- f2 = Fbe.overwrite(f, 'foo', 42, fb:)
47
- Fbe.overwrite(f2, 'bar', 7, fb:)
48
- assert_equal(42, fb.query('(exists foo)').each.to_a.first.foo)
49
- end
50
-
51
44
  def test_no_need_to_overwrite
52
45
  fb = Factbase.new
53
46
  f = fb.insert
@@ -86,4 +79,25 @@ class TestOverwrite < Fbe::Test
86
79
  Fbe.overwrite(f3, 'foo', 42, fb:)
87
80
  assert_equal(3, fb.size)
88
81
  end
82
+
83
+ def test_overwrites_in_transaction
84
+ $fb = Factbase.new
85
+ $global = {}
86
+ $options = Judges::Options.new(job_id: 42)
87
+ $loog = Loog::Buffer.new
88
+ Fbe.fb.txn do |fbt|
89
+ fbt.insert.then do |f|
90
+ f.issue = 444
91
+ f.where = 'github'
92
+ f.repository = 555
93
+ f.who = 887
94
+ f.when = Time.now
95
+ f.foo = 1
96
+ end
97
+ end
98
+ f1 = Fbe.fb.query('(always)').each.to_a.first
99
+ Fbe.overwrite(f1, 'foo', 'bar')
100
+ f2 = Fbe.fb.query('(always)').each.to_a.first
101
+ assert_equal('bar', f2.foo)
102
+ end
89
103
  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.26.8
4
+ version: 0.26.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko