onlyoffice_mysql_helper 0.1.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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a4dc9f484d18654ce5d10d7302fac2d193c650069b84fb7bc28f57d41fa5cf64
|
4
|
+
data.tar.gz: f3ca7face439c1bd4a5c47b6487c4dccf3be0a8ca584a3a1dde1273628d6556e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 368edb533b097c7febd99784aa209ad13e3550dcf28834888ace3815677fe301a76b479452d5fbfd6f9c098921253b82c74525425dad4b2b51e2b9e7820d6dc1
|
7
|
+
data.tar.gz: 384af581103aa4b1d149c421acbabb0d1a4cea0892166fdc9f02c2c3ab9d4adc2e69eb63dbab7374c7729d19d0f99372fba429ae60d3f213c6a9351dcfc40630
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'mysql2'
|
4
|
+
module OnlyofficeMysqlHelper
|
5
|
+
# Class for using mysql
|
6
|
+
class MySQLHelper
|
7
|
+
attr_accessor :mysql
|
8
|
+
attr_accessor :database
|
9
|
+
SQL_SERVER_ADDRESS_LOCAL = '127.0.0.1'
|
10
|
+
SQL_SERVER_USER_LOCAL = 'root'
|
11
|
+
SQL_SERVER_PASSWORD_LOCAL = ''
|
12
|
+
|
13
|
+
def initialize(address: SQL_SERVER_ADDRESS_LOCAL,
|
14
|
+
database: 'performance_test',
|
15
|
+
user: SQL_SERVER_USER_LOCAL,
|
16
|
+
password: SQL_SERVER_PASSWORD_LOCAL)
|
17
|
+
@connection = Mysql2::Client.new(host: address,
|
18
|
+
username: user,
|
19
|
+
password: password, database: database)
|
20
|
+
@database = database
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_record(table_name, hash)
|
24
|
+
send_query do
|
25
|
+
"INSERT INTO `#{table_name}` (`id`, #{from_query_keys(hash)}) "\
|
26
|
+
"VALUES (NULL,#{from_query_values(hash)});"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def create_table(name, columns = 'id INT PRIMARY KEY AUTO_INCREMENT')
|
31
|
+
send_query { "CREATE TABLE IF NOT EXISTS `#{name}`(#{columns});" }
|
32
|
+
end
|
33
|
+
|
34
|
+
def select_records(table_name, condition = '')
|
35
|
+
send_query do
|
36
|
+
query = "SELECT * FROM `#{table_name}`"
|
37
|
+
query += " #{condition}" unless condition == ''
|
38
|
+
query + ';'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def tables
|
43
|
+
send_query { 'SHOW TABLES;' }
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete_record(table_name, condition)
|
47
|
+
send_query { "DELETE FROM `#{table_name}` WHERE #{condition};" }
|
48
|
+
end
|
49
|
+
|
50
|
+
def drop_table(table_name)
|
51
|
+
send_query { "DROP TABLE `#{table_name}`;" }
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def send_query
|
57
|
+
yield
|
58
|
+
OnlyofficeLoggerHelper.log("Query: #{yield}")
|
59
|
+
@connection.query(yield)
|
60
|
+
end
|
61
|
+
|
62
|
+
def from_query_keys(hash)
|
63
|
+
query_keys = ''
|
64
|
+
hash.each_key do |key_value|
|
65
|
+
query_keys += "`#{key_value}`,"
|
66
|
+
end
|
67
|
+
query_keys.chop!
|
68
|
+
end
|
69
|
+
|
70
|
+
def from_query_values(hash)
|
71
|
+
query_values = ''
|
72
|
+
hash.each_value do |value|
|
73
|
+
query_values += "'#{value.to_s.delete("'")}',"
|
74
|
+
end
|
75
|
+
query_values.chop!
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OnlyofficeMysqlHelper
|
4
|
+
# Log action in mysql
|
5
|
+
class MySQLLogger
|
6
|
+
attr_accessor :mysql
|
7
|
+
attr_accessor :table
|
8
|
+
attr_accessor :hash
|
9
|
+
|
10
|
+
def initialize(mysql = MySQLHelper.new, table = nil, hash = {})
|
11
|
+
@mysql = mysql
|
12
|
+
@table = table
|
13
|
+
@hash = hash
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create table for logging purposes
|
17
|
+
# @param table_name [String] name of table to create
|
18
|
+
# @return [Void]
|
19
|
+
def create_log_table(table_name, column)
|
20
|
+
table_command = 'id INT PRIMARY KEY AUTO_INCREMENT, '\
|
21
|
+
"#{column} VARCHAR(25) NOT NULL, "\
|
22
|
+
'time VARCHAR(255) NOT NULL, '\
|
23
|
+
'operation VARCHAR(255) NOT NULL'
|
24
|
+
@mysql.create_table(table_name, table_command)
|
25
|
+
end
|
26
|
+
|
27
|
+
def log_actions(action, hash)
|
28
|
+
mysql_hash = hash.merge(@hash)
|
29
|
+
mysql_hash[:time] = Time.now
|
30
|
+
mysql_hash[:operation] = "Start: #{action}"
|
31
|
+
@mysql.add_record(@table, mysql_hash)
|
32
|
+
|
33
|
+
yield
|
34
|
+
|
35
|
+
mysql_hash[:time] = Time.now
|
36
|
+
mysql_hash[:operation] = "Finished: #{action}"
|
37
|
+
@mysql.add_record(@table, mysql_hash)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: onlyoffice_mysql_helper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ONLYOFFICE
|
8
|
+
- Pavel Lobashov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2020-04-14 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: mysql2
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: onlyoffice_logger_helper
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '13.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '13.0'
|
56
|
+
description: Simple MySQL wrapper. Used in QA of ONLYOFFICE
|
57
|
+
email:
|
58
|
+
- shockwavenn@gmail.com
|
59
|
+
executables: []
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- lib/onlyoffice_mysql_helper.rb
|
64
|
+
- lib/onlyoffice_mysql_helper/mysql_helper.rb
|
65
|
+
- lib/onlyoffice_mysql_helper/mysql_logger.rb
|
66
|
+
- lib/onlyoffice_mysql_helper/name.rb
|
67
|
+
- lib/onlyoffice_mysql_helper/version.rb
|
68
|
+
homepage: https://github.com/onlyoffice-testing-robot/onlyoffice_mysql_helper
|
69
|
+
licenses:
|
70
|
+
- AGPL-3.0
|
71
|
+
metadata:
|
72
|
+
bug_tracker_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_mysql_helper/issues
|
73
|
+
changelog_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_mysql_helper/blob/master/CHANGELOG.md
|
74
|
+
documentation_uri: https://www.rubydoc.info/gems/onlyoffice_mysql_helper
|
75
|
+
homepage_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_mysql_helper
|
76
|
+
source_code_uri: https://github.com/onlyoffice-testing-robot/onlyoffice_mysql_helper
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2.3'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubygems_version: 3.1.2
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: Simple MySQL wrapper
|
96
|
+
test_files: []
|