positioning 0.2.0 → 0.2.1
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/CHANGELOG.md +5 -0
- data/lib/positioning/advisory_lock.rb +4 -4
- data/lib/positioning/mechanisms.rb +8 -4
- data/lib/positioning/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9a6be17ba30233c2d789bbc32055280262feee10c5cef80badc42f18b829f13
|
4
|
+
data.tar.gz: 68e477089f16ad23111bc8e5e39f43f8c2bcac389b04ee5855d0729d1a50771f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cce0ad940005e740b64c858250e425307578aa37697f35258f886acdb9de31954db04bc73589dd0931cc6665b1f5e5ddf0439f195ea0caa6010a66eed1f882d
|
7
|
+
data.tar.gz: 9f9a8587420495b693b340bd8108328116fb2414b7879ab90be3e8e2b2740346730fff4e5434c3bb951aead42d739c23fcb409d62843eea6bf73318b96e4724e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.2.1] - 2024-04-08
|
4
|
+
|
5
|
+
- Fetch the adapter_name from #connection_db_config (@tijn)
|
6
|
+
- Use `quote_table_name_for_assignment` in `update_all` calls to guard against reserved word column names.
|
7
|
+
|
3
8
|
## [0.2.0] - 2024-03-12
|
4
9
|
|
5
10
|
- Add an Advisory Lock to ensure isolation for the entirety of the create, update, and destroy cycles.
|
@@ -12,17 +12,17 @@ module Positioning
|
|
12
12
|
@column = column.to_s
|
13
13
|
|
14
14
|
@adapters = {
|
15
|
-
"
|
15
|
+
"mysql2" => Adapter.new(
|
16
16
|
initialise: -> {},
|
17
17
|
aquire: -> { connection.execute "SELECT GET_LOCK(#{connection.quote(lock_name)}, -1)" },
|
18
18
|
release: -> { connection.execute "SELECT RELEASE_LOCK(#{connection.quote(lock_name)})" }
|
19
19
|
),
|
20
|
-
"
|
20
|
+
"postgresql" => Adapter.new(
|
21
21
|
initialise: -> {},
|
22
22
|
aquire: -> { connection.execute "SELECT pg_advisory_lock(#{lock_name.hex & 0x7FFFFFFFFFFFFFFF})" },
|
23
23
|
release: -> { connection.execute "SELECT pg_advisory_unlock(#{lock_name.hex & 0x7FFFFFFFFFFFFFFF})" }
|
24
24
|
),
|
25
|
-
"
|
25
|
+
"sqlite3" => Adapter.new(
|
26
26
|
initialise: -> {
|
27
27
|
FileUtils.mkdir_p "#{Dir.pwd}/tmp"
|
28
28
|
filename = "#{Dir.pwd}/tmp/#{lock_name}.lock"
|
@@ -63,7 +63,7 @@ module Positioning
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def adapter_name
|
66
|
-
|
66
|
+
base_class.connection_db_config.adapter
|
67
67
|
end
|
68
68
|
|
69
69
|
def adapter
|
@@ -56,6 +56,10 @@ module Positioning
|
|
56
56
|
@positioned.send primary_key_column
|
57
57
|
end
|
58
58
|
|
59
|
+
def quoted_column
|
60
|
+
base_class.connection.quote_table_name_for_assignment base_class.table_name, @column
|
61
|
+
end
|
62
|
+
|
59
63
|
def record_scope
|
60
64
|
base_class.where("#{primary_key_column}": primary_key)
|
61
65
|
end
|
@@ -86,13 +90,13 @@ module Positioning
|
|
86
90
|
end
|
87
91
|
|
88
92
|
def expand(scope, range)
|
89
|
-
scope.where("#{@column}": range).update_all "#{
|
90
|
-
scope.where("#{@column}": ..-1).update_all "#{
|
93
|
+
scope.where("#{@column}": range).update_all "#{quoted_column} = #{quoted_column} * -1"
|
94
|
+
scope.where("#{@column}": ..-1).update_all "#{quoted_column} = #{quoted_column} * -1 + 1"
|
91
95
|
end
|
92
96
|
|
93
97
|
def contract(scope, range)
|
94
|
-
scope.where("#{@column}": range).update_all "#{
|
95
|
-
scope.where("#{@column}": ..-1).update_all "#{
|
98
|
+
scope.where("#{@column}": range).update_all "#{quoted_column} = #{quoted_column} * -1"
|
99
|
+
scope.where("#{@column}": ..-1).update_all "#{quoted_column} = #{quoted_column} * -1 - 1"
|
96
100
|
end
|
97
101
|
|
98
102
|
def solidify_position
|
data/lib/positioning/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: positioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brendon Muir
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|