stack-service-base 0.0.17 → 0.0.19
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/stack-service-base/database.rb +63 -0
- data/lib/stack-service-base/fiber_pool.rb +10 -7
- data/lib/stack-service-base/rack_helpers.rb +2 -0
- data/lib/stack-service-base.rb +2 -0
- data/lib/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dae1479ab73fda6e9e34193fd90cffa89aebaa126633a786e7bd24b335c15cd
|
4
|
+
data.tar.gz: 815f0c8d16d52c00e434897dbf8155aa7dfc7f7fae47fedaf9dcb53c073acb3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30b56b345fc51bcac0f26071e7b71dd1b6567f71440a5a5f7b42283dea2c57662a4b691402ea9608b8abd899fdb675a9c118dcda955fa1803caa89b9ddcc94be
|
7
|
+
data.tar.gz: d602c98f64e443df371bd75a42b460736284ac00b4af0051738f7d0a8df819aed398989590ed2a623420e400a4c0ee112f2d1f644dd6b14208c7d9ddd053a834
|
@@ -0,0 +1,63 @@
|
|
1
|
+
class Time
|
2
|
+
def to_json(*_args)
|
3
|
+
strftime('%d.%m.%Y %H:%M').to_json
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
# DB.extension :pg_enum
|
8
|
+
# module Sequel::Postgres::EnumDatabaseMethods
|
9
|
+
# def create_enum?(enum, values)
|
10
|
+
# create_enum(enum, values) unless from(:pg_type).where(typname: enum.to_s).count > 0
|
11
|
+
# end
|
12
|
+
# end
|
13
|
+
|
14
|
+
module IdempotentMigration
|
15
|
+
def table_add_column table, name, *opts
|
16
|
+
return if self[table].columns.include? name
|
17
|
+
alter_table table do
|
18
|
+
add_column name, *opts
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def table_drop_column table, name, *opts
|
23
|
+
return unless self[table].columns.include? name
|
24
|
+
alter_table table do
|
25
|
+
drop_column name, *opts
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def table_rename_column table, name, *opts
|
30
|
+
return unless self[table].columns.include? name
|
31
|
+
alter_table table do
|
32
|
+
rename_column name, *opts
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def table_add_index(table, *opts)
|
37
|
+
this = self
|
38
|
+
alter_table table do
|
39
|
+
this.indexes(table).each do |_name, index|
|
40
|
+
if index[:columns].join === opts.join
|
41
|
+
return
|
42
|
+
end
|
43
|
+
end
|
44
|
+
add_index *opts
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def table_add_unique_constraint table, *opts
|
49
|
+
this = self
|
50
|
+
alter_table table do
|
51
|
+
this.indexes(table).each do |name, index|
|
52
|
+
if index[:columns].join === opts.join
|
53
|
+
return
|
54
|
+
# drop_constraint name, type: :unique
|
55
|
+
end
|
56
|
+
end
|
57
|
+
add_unique_constraint *opts
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
Sequel::Database.prepend IdempotentMigration
|
63
|
+
|
@@ -8,8 +8,9 @@ class FiberConnectionPool < Sequel::ConnectionPool
|
|
8
8
|
|
9
9
|
def log(msg)
|
10
10
|
otl_current_span{ |span|
|
11
|
-
span.add_event("
|
12
|
-
|
11
|
+
span.add_event("FiberPool", attributes: {
|
12
|
+
F: Fiber.current.__id__, T: Thread.current.__id__, A: self.__id__,
|
13
|
+
message: msg
|
13
14
|
}.transform_keys(&:to_s) )
|
14
15
|
}
|
15
16
|
|
@@ -37,7 +38,7 @@ class FiberConnectionPool < Sequel::ConnectionPool
|
|
37
38
|
log_connection_execute(conn, sql)
|
38
39
|
true
|
39
40
|
rescue =>e_
|
40
|
-
conn.close rescue
|
41
|
+
conn.close rescue nil
|
41
42
|
false
|
42
43
|
end
|
43
44
|
|
@@ -79,10 +80,10 @@ class FiberConnectionPool < Sequel::ConnectionPool
|
|
79
80
|
def max_size = @sp.limit
|
80
81
|
# def preconnect(_concurrent = false) = :unimplemented
|
81
82
|
def disconnect(symbol)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
until @stock.empty?
|
84
|
+
log 'disconnect connection (fiber pool)'
|
85
|
+
@stock.shift.close
|
86
|
+
end
|
86
87
|
end
|
87
88
|
# def servers = []
|
88
89
|
def pool_type = :fiber # :threaded
|
@@ -99,8 +100,10 @@ require 'sequel/adapters/postgres'
|
|
99
100
|
class Sequel::Postgres::Adapter
|
100
101
|
def execute_query(sql, args)
|
101
102
|
$stdout.puts "F:#{Fiber.current.__id__} : T:#{Thread.current.__id__} : A:#{self.__id__} : #{sql[0..60]}" unless defined? PERFORMANCE
|
103
|
+
log "query: #{sql.slice(0, 60)}"
|
102
104
|
@db.log_connection_yield(sql, self, args){args ? async_exec_params(sql, args) : async_exec(sql)}
|
103
105
|
rescue => e
|
106
|
+
log "Error: #{e.message}"
|
104
107
|
$stdout.puts e.message
|
105
108
|
raise
|
106
109
|
end
|
data/lib/stack-service-base.rb
CHANGED
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack-service-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-06-
|
11
|
+
date: 2025-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: async
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,6 +185,7 @@ extensions: []
|
|
171
185
|
extra_rdoc_files: []
|
172
186
|
files:
|
173
187
|
- lib/stack-service-base.rb
|
188
|
+
- lib/stack-service-base/database.rb
|
174
189
|
- lib/stack-service-base/fiber_pool.rb
|
175
190
|
- lib/stack-service-base/logging.rb
|
176
191
|
- lib/stack-service-base/open_telemetry.rb
|